send_header(); /* * Variable from $_GET */ try { $get_jrn=$http->get('jrn_id', "number"); $get_option=$http->get('p_simple', "string"); $get_from_periode=$http->get('from_periode', 'number'); $get_to_periode=$http->get('to_periode', 'number'); } catch (Exception $exc) { echo $exc->getMessage(); error_log($exc->getTraceAsString()); throw $exc; } require_once NOALYSS_INCLUDE.'/class/user.class.php'; $g_user->Check(); $g_user->check_dossier($gDossier); //---------------------------------------------------------------------------- // $get_jrn == 0 when request for all ledger, in that case, we must filter // the legder with the security in Acc_Ledger::get_row //---------------------------------------------------------------------------- if ($get_jrn!=0&&$g_user->check_jrn($get_jrn)=='X') { NoAccess(); exit(); } global $g_user; /** * for all ledgers */ if ($get_jrn==0) { // find out all the available ledgers for the current user $a_jrn=Print_Ledger::available_ledger($get_from_periode); } else { $a_jrn=$get_jrn; } $Jrn=new Acc_Ledger($cn, $get_jrn); $Jrn->get_name(); $jrn_type=$Jrn->get_type(); // // With Detail per item which is possible only for VEN or ACH // For Detailled VAT for ACH or VEN // ODS or all ledgers becomes A // Extended but no FIN becomes L // if ( $get_option=="E") { if ($jrn_type=='FIN') { $get_option='L'; } elseif ($jrn_type=='ODS'||$Jrn->id==0) { $get_option='A'; } else { switch ($jrn_type) { case 'VEN': $ledger=new Acc_Ledger_Sold($cn, $get_jrn); $ret_detail=$ledger->get_detail_sale($get_from_periode, $get_to_periode); $a_heading=Acc_Ledger_Sold::heading_detail_sale(); break; case 'ACH': $ledger=new Acc_Ledger_Purchase($cn, $get_jrn); $ret_detail=$ledger->get_detail_purchase($get_from_periode, $get_to_periode); $a_heading=Acc_Ledger_Purchase::heading_detail_purchase(); break; default: die(__FILE__.":".__LINE__.'Journal invalide'); break; } if ($ret_detail==null) return; $nb=Database::num_row($ret_detail); $title=array(); foreach ($a_heading as $key=> $value) { $title[]=$value; } for ($i=0; $i<$nb; $i++) { $row=Database::fetch_array($ret_detail, $i); if ($i==0) { $export->write_header($title); } $a_row=array(); $type="text"; for ($j=0; $j18) $type="number"; $export->add($row[$j], $type); } $export->write(); } } } //----------------------------------------------------------------------------- // Detailled printing // For miscellaneous legder or all ledgers //----------------------------------------------------------------------------- if ($get_option=='A') { if ($get_jrn == 0 ) { $acc_ledger_history=new Acc_Ledger_History_Generic($cn, $a_jrn, $get_from_periode, $get_to_periode, 'A'); } else { $acc_ledger_history=new Acc_Ledger_History_Generic($cn, array($a_jrn), $get_from_periode, $get_to_periode, 'A'); } $acc_ledger_history->export_csv(); exit; } //----------------------------------------------------------------------------- // Detail printing for ACH or VEN : 1 row resume the situation with VAT, DNA // for Misc the amount // For Financial only the tiers and the sign of the amount //----------------------------------------------------------------------------- if ($get_option=="L" || $get_option == 'D') { //----------------------------------------------------- if ($jrn_type=='ODS'||$jrn_type=='FIN'||$jrn_type=='GL') { if ( $get_jrn==0) { $Row=$Jrn->get_rowSimple($get_from_periode, $get_to_periode, $a_jrn); }else { $Row=$Jrn->get_rowSimple($get_from_periode, $get_to_periode); } $cn->prepare('reconcile_date_csv', 'select * from jrn where jr_id in (select jra_concerned from jrn_rapt where jr_id = $1 union all select jr_id from jrn_rapt where jra_concerned=$1)'); $title=array(); $title[]=_("operation"); $title[]=_("Date"); $title[]=_("N° Pièce"); $title[]=_("QuickCode"); $title[]=_("Tiers"); $title[]=_("commentaire"); $title[]=_("internal"); $title[]=_("montant"); $export->write_header($title); foreach ($Row as $line) { $tiers_id=$Jrn->get_tiers_id($line['jrn_def_type'], $line['jr_id']); $fiche_tiers=new Fiche($cn, $tiers_id); $tiers=$fiche_tiers->strAttribut(ATTR_DEF_NAME, 0)." ".$fiche_tiers->strAttribut(ATTR_DEF_FIRST_NAME, 0); $export->add($line['num']); $export->add($line['date']); $export->add($line['jr_pj_number']); $export->add($fiche_tiers->get_quick_code()); $export->add($tiers); $export->add($line['comment']); $export->add($line['jr_internal']); // echo "".$line['pj'].";"; // If the ledger is financial : // the credit must be negative and written in red // Get the jrn type if ($line['jrn_def_type']=='FIN') { $positive=$cn->get_value("select qf_amount from quant_fin ". " where jr_id=$1", array($line['jr_id'])); $export->add($positive, "number"); $export->add(""); } else { $export->add($line['montant'], "number"); } //------ Add reconcilied operation --------------- $ret_reconcile=$cn->execute('reconcile_date_csv', array($line['jr_id'])); $max=Database::num_row($ret_reconcile); if ($max>0) { for ($e=0; $e<$max; $e++) { $row=Database::fetch_array($ret_reconcile, $e); $export->add($row['jr_date']); $export->add($row['jr_internal']); $export->add($row['jr_pj_number']); } } $export->write(); } } //------------------------------------------------------------------------------ // One line summary with tiers, amount VAT, DNA, tva code .... // //------------------------------------------------------------------------------ if ($jrn_type=="ACH") { $acc_ledger_history=new Acc_Ledger_History_Purchase($cn, [$Jrn->id], $get_from_periode, $get_to_periode, 'D'); $acc_ledger_history->export_csv(); } if ($jrn_type=="VEN") { $acc_ledger_history=new Acc_Ledger_History_Sale($cn, [$Jrn->id], $get_from_periode, $get_to_periode, 'D'); $acc_ledger_history->export_csv(); } } ?>