diff --git a/include/class_print_ledger.php b/include/class_print_ledger.php new file mode 100644 index 000000000..6ebe5fc71 --- /dev/null +++ b/include/class_print_ledger.php @@ -0,0 +1,129 @@ + accounting + * 1-> one row per operation 2-> detail of item) + * @param type $cn + * @param type $p_type_export + * @param type $p_format_output CSV or PDF + * @param Acc_Ledger $ledger + */ + static function factory(Database $cn, $p_type_export, $p_format_output, Acc_Ledger $p_ledger) { + /** + * For PDF output + */ + if ($p_format_output == 'PDF') { + switch ($p_type_export) { + case 0: + //--------------------------------------------- + // Detailled Printing (accounting ) + //--------------------------------------------- + return new Print_Ledger_Detail($cn, $p_ledger); + break; + + case 1: + //---------------------------------------------------------------------- + // Simple Printing Purchase Ledger + //--------------------------------------------------------------------- + $own = new Own($cn); + $jrn_type = $p_ledger->get_type(); + + + if ($jrn_type == 'ACH' || $jrn_type == 'VEN') { + if ( + ($jrn_type == 'ACH' && $cn->get_value('select count(qp_id) from quant_purchase') == 0) || + ($jrn_type == 'VEN' && $cn->get_value('select count(qs_id) from quant_sold') == 0) + ) { + $pdf = new Print_Ledger_Simple_without_vat($cn, $p_ledger); + $pdf->set_error('Ce journal ne peut être imprimé en mode simple'); + return $pdf; + } + if ($own->MY_TVA_USE == 'Y') { + $pdf = new Print_Ledger_Simple($cn, $p_ledger); + return $pdf; + } + if ($own->MY_TVA_USE == 'N') { + $pdf = new Print_Ledger_Simple_without_vat($cn, $p_ledger); + return $pdf; + } + } + + if ($jrn_type == 'FIN') { + $pdf = new Print_Ledger_Financial($cn, $p_ledger); + return $pdf; + } + if ($jrn_type == 'ODS' || $p_ledger->id == 0) { + $pdf = new Print_Ledger_Misc($cn, $p_ledger); + return $pdf; + } + break; + case 2: + /* * ******************************************************** + * Print Detail Operation + Item + * ********************************************************* */ + $own = new Own($cn); + $jrn_type = $p_ledger->get_type(); + if ($jrn_type == 'FIN') { + $pdf = new Print_Ledger_Financial($cn, $p_ledger); + return $pdf; + ; + } + if ($jrn_type == 'ODS' || $p_ledger->id == 0) { + $pdf = new Print_Ledger_Misc($cn, $p_ledger); + return $pdf; + } + if ( + ($jrn_type == 'ACH' && $cn->get_value('select count(qp_id) from quant_purchase') == 0) || + ($jrn_type == 'VEN' && $cn->get_value('select count(qs_id) from quant_sold') == 0) + ) { + $pdf = new Print_Ledger_Simple_without_vat($cn, $p_ledger); + $pdf->set_error('Ce journal ne peut être imprimé en mode simple'); + return $pdf; + } + $pdf = new Print_Ledger_Detail_Item($cn,$p_ledger); + return $pdf; + + } // end switch + } // end $p_format == PDF + } + +// end function +} + +?> diff --git a/include/class_print_ledger_detail.php b/include/class_print_ledger_detail.php index d2a569eac..798a97598 100644 --- a/include/class_print_ledger_detail.php +++ b/include/class_print_ledger_detail.php @@ -28,12 +28,13 @@ require_once('class_pdf.php'); class Print_Ledger_Detail extends PDF { - public function __construct ($p_cn = null, $orientation = 'P', $unit = 'mm', $format = 'A4') + public function __construct ($p_cn = null, Acc_Ledger $ledger) { if($p_cn == null) die("No database connection. Abort."); - + parent::__construct($p_cn,'L', 'mm', 'A4'); + $this->ledger=$ledger; date_default_timezone_set ('Europe/Paris'); } @@ -70,13 +71,14 @@ class Print_Ledger_Detail extends PDF return parent::Cell($w, $h, $txt, $border, $ln, $align, $fill, $link); } - function export($Jrn) + function export() { + // detailled printing $rap_deb=0; $rap_cred=0; // take all operations from jrn - $array=$Jrn->get_operation($_GET['from_periode'],$_GET['to_periode']); + $array=$this->ledger->get_operation($_GET['from_periode'],$_GET['to_periode']); $this->SetFont('DejaVu','BI',7); $this->Cell(215,7,'report Débit',0,0,'R'); diff --git a/include/class_print_ledger_detail_item.php b/include/class_print_ledger_detail_item.php new file mode 100644 index 000000000..b49a25703 --- /dev/null +++ b/include/class_print_ledger_detail_item.php @@ -0,0 +1,105 @@ +ledger=$p_jrn; + + } + + function setDossierInfo($dossier = "n/a") + { + $this->dossier = dossier::name()." ".$dossier; + } + /** + *@brief write the header of each page + */ + function Header() + { + //Arial bold 12 + $this->SetFont('DejaVu', 'B', 12); + //Title + $this->Cell(0,10,$this->dossier, 'B', 0, 'C'); + //Line break + $this->Ln(20); + + } + /** + *@brief write the Footer + */ + function Footer() + { + //Position at 3 cm from bottom + $this->SetY(-20); + /* write reporting */ + $this->Cell(143,6,'Total page ','T',0,'R'); /* HTVA */ + $this->Cell(15,6,nbm($this->tp_htva),'T',0,'R'); /* HTVA */ + if ( $this->jrn_type !='VEN') + { + $this->Cell(15,6,nbm($this->tp_priv),'T',0,'R'); /* prive */ + $this->Cell(15,6,nbm($this->tp_nd),'T',0,'R'); /* Tva ND */ + } + foreach($this->a_Tva as $line_tva) + { + $l=$line_tva['tva_id']; + $this->Cell(15,6,nbm($this->tp_tva[$l]),'T',0,'R'); + } + $this->Cell(15,6,nbm($this->tp_tvac),'T',0,'R'); /* Tvac */ + $this->Ln(2); + + $this->Cell(143,6,'report',0,0,'R'); /* HTVA */ + $this->Cell(15,6,nbm($this->rap_htva),0,0,'R'); /* HTVA */ + if ( $this->jrn_type !='VEN') + { + $this->Cell(15,6,nbm($this->rap_priv),0,0,'R'); /* prive */ + $this->Cell(15,6,nbm($this->rap_nd),0,0,'R'); /* Tva ND */ + } + foreach($this->a_Tva as $line_tva) + { + $l=$line_tva['tva_id']; + $this->Cell(15,6,nbm($this->rap_tva[$l]),0,0,'R'); + } + $this->Cell(15,6,nbm($this->rap_tvac),0,0,'R'); /* Tvac */ + $this->Ln(2); + + //Arial italic 8 + $this->SetFont('Arial', 'I', 8); + //Page number + $this->Cell(0,8,'Date '.$this->date." - Page ".$this->PageNo().'/{nb}',0,0,'L'); + // Created by PhpCompta + $this->Cell(0,8,'Created by Phpcompta, online on http://www.aevalys.eu',0,0,'R',false,'http://www.aevalys.eu'); + } + + function Cell ($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='') + { + $txt = str_replace("\\", "", $txt); + return parent::Cell($w, $h, $txt, $border, $ln, $align, $fill, $link); + } + /** + *@brief export the ledger in PDF + */ + function export() + { + bcscale(2); + $a_jrn=$this->ledger->get_operation($_GET['from_periode'], + $_GET['to_periode']); + + if ( $a_jrn == null ) return; + for ( $i=0;$i diff --git a/include/export_ledger_pdf.php b/include/export_ledger_pdf.php index c065d2b8b..56c63deee 100644 --- a/include/export_ledger_pdf.php +++ b/include/export_ledger_pdf.php @@ -21,13 +21,14 @@ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr // $Revision$ -/*! \file +/* ! \file * \brief Send a ledger in a pdf format * */ -if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis'); +if (!defined('ALLOWED')) + die('Appel direct ne sont pas permis'); require_once('class_dossier.php'); -$gDossier=dossier::id(); +$gDossier = dossier::id(); require_once('class_pdf.php'); include_once('class_user.php'); include_once("ac_common.php"); @@ -36,146 +37,44 @@ include_once("class_impress.php"); include_once("class_acc_ledger.php"); require_once('class_own.php'); require_once('class_periode.php'); -require_once('class_print_ledger_detail.php'); -require_once('class_print_ledger_simple.php'); -require_once('class_print_ledger_simple_without_vat.php'); -require_once('class_print_ledger_fin.php'); -require_once('class_print_ledger_misc.php'); +require_once 'class_print_ledger.php'; -$cn=new Database($gDossier); -$periode=new Periode($cn); + $cn = new Database($gDossier); +$periode = new Periode($cn); -$l_type="JRN"; -$own=new Own($cn); +$l_type = "JRN"; +$own = new Own($cn); -$Jrn=new Acc_Ledger($cn,$_GET['jrn_id']); +$Jrn = new Acc_Ledger($cn, $_GET['jrn_id']); $Jrn->get_name(); $g_user->Check(); $g_user->check_dossier($gDossier); // Security -if ( $_GET['jrn_id']!=0 && $g_user->check_jrn($_GET['jrn_id']) == 'X' ) -{ +if ($_GET['jrn_id'] != 0 && $g_user->check_jrn($_GET['jrn_id']) == 'X') { /* Cannot Access */ NoAccess(); } -$ret=""; +$ret = ""; -// filter : 0 for Grand Livre otherwise 1 -$filter=( $Jrn->id == 0)?0:1; -$jrn_type=$Jrn->get_type(); +$jrn_type = $Jrn->get_type(); -//---------------------------------------------------------------------- -// Detailled Printing -//--------------------------------------------------------------------- -if ( $_REQUEST['p_simple']== 0 ) -{ - $pdf=new Print_Ledger_Detail($cn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal",true); +$pdf = Print_Ledger::factory($cn, $_REQUEST['p_simple'], "PDF", $Jrn); - $pdf->export($Jrn); +$pdf->setDossierInfo($Jrn->name); +$pdf->AliasNbPages(); +$pdf->AddPage(); +$pdf->SetAuthor('Phpcompta'); +$pdf->setTitle("Journal", true); - $fDate=date('dmy-Hi'); - $pdf->Output('journal-'.$fDate.'.pdf','D'); - exit(0); +$pdf->export(); -} // impression detaillé -//---------------------------------------------------------------------- -// Simple Printing Purchase Ledger -//--------------------------------------------------------------------- -if ( $_REQUEST['p_simple']== 1 ) -{ - if ( $jrn_type=='ACH' || $jrn_type=='VEN') - { - if ( $jrn_type=='ACH' && $cn->get_value('select count(qp_id) from quant_purchase') == 0 ) - { - $pdf= new Print_Ledger_Simple_without_vat($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal",true); +$fDate = date('dmy-Hi'); +$pdf->Output('journal-' . $fDate . '.pdf', 'D'); +exit(0); - $pdf->Cell(0,6,'Ce journal ne peut être imprimé en mode simple'); - $pdf->output('erreur.pdf','D'); - exit(); - } - if ( $jrn_type=='VEN' && $cn->get_value('select count(qs_id) from quant_sold') == 0 ) - { - $pdf= new Print_Ledger_Simple_without_vat($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->Cell(0,6,'Ce journal ne peut être imprimé en mode simple'); - $pdf->output('erreur.pdf','D'); - exit(); - } - if ( $own->MY_TVA_USE=='Y') - { - $pdf= new Print_Ledger_Simple($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal",true); - - $pdf->export(); - $fDate=date('dmy-Hi'); - $pdf->Output('journal-'.$fDate.'.pdf','D'); - exit(0); - } - if ( $own->MY_TVA_USE=='N') - { - $pdf= new Print_Ledger_Simple_without_vat($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal", true); - - $pdf->export($Jrn); - $fDate=date('dmy-Hi'); - $pdf->Output('journal-'.$fDate.'.pdf','D'); - exit(0); - } - - } - - if ($jrn_type=='FIN') - { - $pdf= new Print_Ledger_Financial($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->AddPage(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal",true); - - $pdf->export(); - $fDate=date('dmy-Hi'); - $pdf->Output('journal-'.$fDate.'.pdf','D'); - exit(0); - } - if ( $jrn_type=='ODS' || $Jrn->id==0) - { - $pdf= new Print_Ledger_Misc($cn,$Jrn); - $pdf->setDossierInfo($Jrn->name); - $pdf->AliasNbPages(); - $pdf->SetAuthor('Phpcompta'); - $pdf->setTitle("Journal",true); - - $pdf->AddPage(); - $pdf->export(); - $fDate=date('dmy-Hi'); - $pdf->Output('journal-'.$fDate.'.pdf','D'); - exit(0); - } -} ?>