';
$Ledger=new Acc_Ledger_Sale($cn,$post_jrn);
try {
$internal=$Ledger->insert($_POST);
/* Save the additional information into jrn_info */
$obj=new Acc_Ledger_Info($cn);
$obj->save_extra($Ledger->jr_id,$_POST);
$Ledger->upload_supplemental_document($Ledger->jr_id);
// var $receipt (string) contains the name of the file name of
// the invoice (document created), if empty there
// is no invoice
$receipt='';
//-------------------------------------------------------
// Generate a XLM invoice
// if a document has been created create the XML file
//-------------------------------------------------------
///@var $flag_invoice (int) error for invoice generating.
/// 0 = nothing no invoice created
/// 1 = cannot create e-invoice
/// 2 = create e-invoice requested
$flag_invoice=0;
/* Save the attachment or generate doc */
if (isset($_FILES['pj']) && noalyss_strlentrim($_FILES['pj']['name']) != 0)
{
$acc_document=new Acc_Document($cn,$Ledger->jr_id);
$acc_document->save_receipt();
$receipt= HtmlInput::show_receipt_document($Ledger->jr_id
,h($_FILES['pj']['name']));
}
else
/* Generate an invoice and save it into the database */
if (isset($_POST['gen_invoice']))
{
// generate an invoice
$file = $Ledger->create_document($internal, $_POST);
$receipt= HtmlInput::show_receipt_document($Ledger->jr_id
,h($file));
$acc_document=new Acc_Document($cn,$Ledger->jr_id);
if ($g_parameter->MY_INVOICE_FORMAT != 'BASIC' && ! empty($acc_document->d_filename ))
{
$flag_invoice=2;
$xmldocument= \Noalyss\XMLDocument\XMLInvoice::build_xmlinvoice($cn);
$xmldocument->build_data($Ledger->jr_id);
$code_error = $xmldocument->verify() ;
// check that all the sub arrays are empty
if ( ! empty( array_filter($code_error,function($a){ if (!empty($a)) return true; })))
{
$flag_invoice=1;
}
}
//------------------------------------------------
// flag_invoice == 2 , generate an e-invoice
//------------------------------------------------
if ( $flag_invoice == 2 )
{
$pdf_filename=$acc_document->d_filename;
if ( $acc_document->d_mimetype != 'application/pdf')
{
$pdf_filename=$acc_document->transform2pdf();
// save PDF In db
$acc_document->update($pdf_filename);
}else{
$pdf_filename=$_ENV['TMP']."/".$pdf_filename;
$acc_document->export_file($pdf_filename);
}
// make the PDF
$xmldocument->set_pdf_filename($pdf_filename);
// make the XML + PDF
//@var $xml(XML String)
$xml=$xmldocument->create_invoice($Ledger->jr_id);
if (DEBUGNOALYSS > 1) {
$mt=date ('ymd-Hi').'+'.$Ledger->jr_id;
$uniq= $_ENV['TMP']. DIRECTORY_SEPARATOR."$mt-e-invoice.xml";
file_put_contents($uniq, $xml);
chmod ($uniq,"0774");
echo \Noalyss\Dbg::echo_file("file save $uniq");
}
// FOR BELGIUM : XML and PDF will be stored separately
// save XML string into the DB
$oid=$cn->lo_write($xml);
echo \Noalyss\Dbg::echo_var(1, "oid is $oid");
if ($oid == false) {
throw new Exception ('CV177 : cannot import e-invoice');
}
if ( $g_parameter->MY_INVOICE_FORMAT == 'UBL21BEL')
{
$acc_document->update_document_xml($oid);
$receipt= HtmlInput::show_receipt_document($Ledger->jr_id,$acc_document->d_filename)
. $acc_document->link_download_xml();
}elseif ($g_parameter->MY_INVOICE_FORMAT=='FACTURXFR')
{
$acc_document->replace_receipt($oid);
$receipt= HtmlInput::show_receipt_document($Ledger->jr_id,$acc_document->d_filename);
}
}
}
}
catch (\Exception $e) {
if ( $e->getCode()==EXC_BALANCE)
echo_warning(_("enregistrement annulé: balance , voyer le fichier log"));
else
echo_warning($e->getMessage());
return;
}
/* Save the predefined operation */
if ( isset($_POST['opd_name']) && trim($_POST['opd_name']) != "" )
{
$opd=new Pre_operation($cn);
$opd->get_post();
$opd->save();
}
/* Show button */
echo '
'._("Enregistré").'
';
if ($flag_invoice == 1) {
echo_warning(_("Impossible de générer facture électronique") );
$xmldocument->display_error();
}
echo $Ledger->confirm($_POST,true);
/* Show link for Invoice */
if ($receipt != "")
{
echo '
'._('Document').'
';
echo $receipt;
}
/* save followup */
$Ledger->save_followup($http->request("action_gestion","string",""));
// extourne
if (isset($_POST['reverse_ck']))
{
$p_date=$http->post('reverse_date', "string",'');
$p_msg=$http->post("ext_label");
if (isDate($p_date)==$p_date)
{
// reverse the operation
try
{
$Ledger->reverse($p_date,$p_msg);
echo '
';
echo _('Extourné au ').$p_date;
echo '
';
}
catch (Exception $e)
{
echo '
'._('Opération non extournée').
$e->getMessage().
'';
}
}
else
{
// warning because date is invalid
echo '
'._('Date invalide, opération non extournée').'';
}
}
echo '
';
echo '
';
echo "- ";
echo $Ledger->button_new_operation();
echo "
";
echo "- ";
echo $Ledger->button_copy_operation();
echo "
";
echo "
";
echo '
';
echo '
';
return;
}
}
// ------------------------------
/* Display a blank form or a form with predef operation */
// ------------------------------
$array=(isset($_POST['correct'])||isset ($correct))?$_POST:null;
$Ledger=new Acc_Ledger_Sale($cn,0);
//
// pre defined operation
//
echo '
';
if (!isset($_REQUEST ['p_jrn']))
{
$def_ledger=$Ledger->get_first('ven', 2);
if (empty($def_ledger))
{
exit(_('Pas de journal disponible'));
}
$Ledger->id=$def_ledger['jrn_def_id'];
}
else if ( isset($_REQUEST ['p_jrn']) ) {
$Ledger->id=$http->request('p_jrn','number');
}
else if (isset($_REQUEST['p_jrn_predef']))
{
$Ledger->id=$http->request('p_jrn_predef','number');
}
echo '
';
if ($p_msg!="")
{
echo '
'.$p_msg.'';
}
try
{
$payment=$http->request("e_mp","string", 0);
$date_payment=$http->request("mp_date", "string","");
$comm_payment=$http->request("e_comm_paiement", "string","");
$acompte=$http->request("acompte", "string",0);
echo "
";
/* if we suggest the pj n# the run the script */
if ( $g_parameter->MY_PJ_SUGGEST=='Y')
{
echo '';
}
$e_date=$http->request("e_date","string","");
if ($e_date=="" && $g_parameter->MY_DATE_SUGGEST=='Y')
{
echo create_script(" get_last_date()");
}
echo create_script(" update_name()");
return;
?>