diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 5b3742b5e92..f6b29b52b0a 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2008 Raphael Bertrand * Copyright (C) 2010-2011 Juanjo Menent @@ -23,7 +23,6 @@ * \file htdocs/core/modules/commande/doc/pdf_einstein.modules.php * \ingroup commande * \brief Fichier de la classe permettant de generer les commandes au modele Einstein - * \author Laurent Destailleur */ require_once DOL_DOCUMENT_ROOT .'/core/modules/commande/modules_commande.php'; @@ -117,7 +116,7 @@ class pdf_einstein extends ModelePDFCommandes } /** - * Build document onto disk + * Function to build pdf onto disk * * @param int $object Id of object to generate * @param object $outputlangs Lang output object @@ -228,8 +227,8 @@ class pdf_einstein extends ModelePDFCommandes $tab_top = 90; - $tab_top_newpage = 50; - $tab_height = 110; + $tab_top_newpage = 10; + $tab_height = 130; $tab_height_newpage = 150; // Affiche notes @@ -237,7 +236,7 @@ class pdf_einstein extends ModelePDFCommandes { $tab_top = 88; - $pdf->SetFont('','', $default_font_size - 1); // Into loop to manage multipages + $pdf->SetFont('','', $default_font_size - 1); $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; @@ -263,21 +262,25 @@ class pdf_einstein extends ModelePDFCommandes { $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage - $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); // Description of product line + $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage $curX = $this->posxdesc-1; pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,3,$curX,$curY,$hideref,$hidedesc,0,$hookmanager); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -295,14 +298,14 @@ class pdf_einstein extends ModelePDFCommandes // Quantity $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails, $hookmanager); $pdf->SetXY($this->posxqty, $curY); - $pdf->MultiCell($this->posxdiscount-$this->posxqty-1, 3, $qty, 0, 'R'); + $pdf->MultiCell($this->posxdiscount-$this->posxqty-1, 3, $qty, 0, 'R'); // Enough for 6 chars // Discount on line - $pdf->SetXY($this->posxdiscount, $curY); if ($object->lines[$i]->remise_percent) { + $pdf->SetXY($this->posxdiscount-2, $curY); $remise_percent = pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails, $hookmanager); - $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 3, $remise_percent, 0, 'R'); + $pdf->MultiCell($this->postotalht-$this->posxdiscount+2, 3, $remise_percent, 0, 'R'); } // Total HT line @@ -325,6 +328,9 @@ class pdf_einstein extends ModelePDFCommandes $localtax2rate=(string) $object->lines[$i]->localtax2_tx; if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*'; + if (! isset($this->tva[$vatrate])) $this->tva[$vatrate]=''; + if (! isset($this->localtax1[$localtax1rate])) $this->localtax1[$localtax1rate]=''; + if (! isset($this->localtax2[$localtax2rate])) $this->localtax2[$localtax2rate]=''; $this->tva[$vatrate] += $tvaligne; $this->localtax1[$localtax1rate]+=$localtax1ligne; $this->localtax2[$localtax2rate]+=$localtax2ligne; @@ -334,6 +340,7 @@ class pdf_einstein extends ModelePDFCommandes // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); @@ -429,7 +436,7 @@ class pdf_einstein extends ModelePDFCommandes } /** - * Affiche tableau des versement + * Show payments table * * @param PDF &$pdf Object PDF * @param Object $object Object order @@ -532,25 +539,25 @@ class pdf_einstein extends ModelePDFCommandes $account->fetch($conf->global->FACTURE_CHQ_NUMBER); $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); $posy=$pdf->GetY()+2; } if ($conf->global->FACTURE_CHQ_NUMBER == -1) { $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); $posy=$pdf->GetY()+2; } } @@ -567,7 +574,7 @@ class pdf_einstein extends ModelePDFCommandes $curx=$this->marge_gauche; $cury=$posy; - $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account); + $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); $posy+=2; } @@ -589,7 +596,8 @@ class pdf_einstein extends ModelePDFCommandes */ function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs) { - global $conf,$mysoc; + global $conf,$mysoc; + $default_font_size = pdf_getPDFFontSize($outputlangs); $tab2_top = $posy; @@ -677,9 +685,9 @@ class pdf_einstein extends ModelePDFCommandes } else { - //Local tax 1 if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') { + //Local tax 1 foreach($this->localtax1 as $tvakey => $tvaval) { if ($tvakey>0) // On affiche pas taux 0 @@ -705,9 +713,9 @@ class pdf_einstein extends ModelePDFCommandes } } - //Local tax 2 if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') { + //Local tax 2 foreach($this->localtax2 as $tvakey => $tvaval) { if ($tvakey>0) // On affiche pas taux 0 @@ -746,9 +754,10 @@ class pdf_einstein extends ModelePDFCommandes } } - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetTextColor(0,0,0); + $resteapayer = price2num($object->total_ttc - $deja_regle); + if ($deja_regle > 0) { // Already paid + Deposits @@ -759,8 +768,6 @@ class pdf_einstein extends ModelePDFCommandes $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0); - $resteapayer = $object->total_ttc - $deja_regle; - $index++; $pdf->SetTextColor(0,0,60); $pdf->SetFillColor(224,224,224); @@ -784,7 +791,7 @@ class pdf_einstein extends ModelePDFCommandes * @param PDF &$pdf Object PDF * @param string $tab_top Top position of table * @param string $tab_height Height of table (rectangle) - * @param int $nexY Y + * @param int $nexY Y (not used) * @param Translate $outputlangs Langs object * @param int $hidetop Hide top bar of array * @param int $hidebottom Hide bottom bar of array @@ -815,7 +822,7 @@ class pdf_einstein extends ModelePDFCommandes if (empty($hidetop)) { - $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); // line prend une position y en 2eme param et 4eme param $pdf->SetXY($this->posxdesc-1, $tab_top+1); $pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L'); @@ -888,18 +895,17 @@ class pdf_einstein extends ModelePDFCommandes pdf_pagehead($pdf,$outputlangs,$this->page_hauteur); - //Affiche le filigrane brouillon - Print Draft Watermark + // Show Draft Watermark if($object->statut==0 && (! empty($conf->global->COMMANDE_DRAFT_WATERMARK)) ) { pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->COMMANDE_DRAFT_WATERMARK); } - //Print content $pdf->SetTextColor(0,0,60); $pdf->SetFont('','B', $default_font_size + 3); - $posx=$this->page_largeur-$this->marge_droite-100; $posy=$this->marge_haute; + $posx=$this->page_largeur-$this->marge_droite-100; $pdf->SetXY($this->marge_gauche,$posy); @@ -930,22 +936,22 @@ class pdf_einstein extends ModelePDFCommandes $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); $title=$outputlangs->transnoentities("Order"); - $pdf->MultiCell(100, 4, $title, '', 'R'); + $pdf->MultiCell(100, 3, $title, '', 'R'); - $pdf->SetFont('','B', $default_font_size + 2); + $pdf->SetFont('','B',$default_font_size); - $posy+=6; + $posy+=5; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : " . $outputlangs->convToOutputCharset($object->ref), '', 'R'); - $posy+=2; + $posy+=1; $pdf->SetFont('','', $default_font_size - 1); $posy+=5; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("OrderDate")." : " . dol_print_date($object->date,"%d %b %Y",false,$outputlangs,true), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderDate")." : " . dol_print_date($object->date,"%d %b %Y",false,$outputlangs,true), '', 'R'); $posy+=2; @@ -967,7 +973,7 @@ class pdf_einstein extends ModelePDFCommandes $pdf->SetTextColor(0,0,0); $pdf->SetFont('','', $default_font_size - 2); $pdf->SetXY($posx,$posy-5); - $pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":"); + $pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":", 0, 'L'); $pdf->SetXY($posx,$posy); $pdf->SetFillColor(230,230,230); $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); diff --git a/htdocs/core/modules/expedition/doc/pdf_expedition_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_expedition_rouget.modules.php index fed09e1dd9c..aaaf575dda0 100644 --- a/htdocs/core/modules/expedition/doc/pdf_expedition_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_expedition_rouget.modules.php @@ -235,12 +235,17 @@ class pdf_expedition_rouget extends ModelePdfExpedition // Description de la ligne produit pdf_writelinedesc($pdf,$object,$i,$outputlangs,150,3,$this->posxdesc,$curY,0,1); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + // We suppose that a too long description is moved completely on next page + if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); $pdf->SetXY($this->posxqtyordered+5, $curY); $pdf->MultiCell(30, 3, $object->lines[$i]->qty_asked,'','C'); @@ -253,6 +258,7 @@ class pdf_expedition_rouget extends ModelePdfExpedition // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index f454221fb8e..2804e78fb6a 100755 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -272,13 +272,17 @@ class pdf_crabe extends ModelePDFFactures $curX = $this->posxdesc-1; pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,3,$curX,$curY,$hideref,$hidedesc,0,$hookmanager); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); - $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -298,7 +302,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($this->posxqty, $curY); $pdf->MultiCell($this->posxdiscount-$this->posxqty-1, 3, $qty, 0, 'R'); // Enough for 6 chars - // Discount + // Discount on line if ($object->lines[$i]->remise_percent) { $pdf->SetXY($this->posxdiscount-2, $curY); @@ -337,6 +341,7 @@ class pdf_crabe extends ModelePDFFactures // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); @@ -735,7 +740,7 @@ class pdf_crabe extends ModelePDFFactures if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { - $tvaisnull=((! empty($this->tva) && count($this->tva) == 1 && is_float($this->tva['0.000'])) ? true : false); + $tvaisnull=((! empty($this->tva) && count($this->tva) == 1 && isset($this->tva['0.000']) && is_float($this->tva['0.000'])) ? true : false); if (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_ISNULL) && $tvaisnull) { // Nothing to do @@ -777,7 +782,7 @@ class pdf_crabe extends ModelePDFFactures { $index++; $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT1".$mysoc->pays_code), $useborder, 'L', 1); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT1".$mysoc->country_code), $useborder, 'L', 1); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($sign * $object->total_localtax1), $useborder, 'R', 1); } @@ -787,7 +792,7 @@ class pdf_crabe extends ModelePDFFactures { $index++; $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT2".$mysoc->pays_code), $useborder, 'L', 1); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT2".$mysoc->country_code), $useborder, 'L', 1); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($sign * $object->total_localtax2), $useborder, 'R', 1); } @@ -812,7 +817,7 @@ class pdf_crabe extends ModelePDFFactures $tvakey=str_replace('*','',$tvakey); $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; } - $totalvat =$outputlangs->transnoentities("TotalLT1".$mysoc->pays_code).' '; + $totalvat =$outputlangs->transnoentities("TotalLT1".$mysoc->country_code).' '; $totalvat.=vatrate($tvakey,1).$tvacompl; $pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); @@ -1032,7 +1037,8 @@ class pdf_crabe extends ModelePDFFactures pdf_pagehead($pdf,$outputlangs,$this->page_hauteur); - if($object->statut==0 && (! empty($conf->global->FACTURE_DRAFT_WATERMARK)) ) + // Show Draft Watermark + if($object->statut==0 && (! empty($conf->global->FACTURE_DRAFT_WATERMARK)) ) { pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->FACTURE_DRAFT_WATERMARK); } diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index c1f13598ee7..e71db402c7a 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -243,6 +243,9 @@ class pdf_soleil extends ModelePDFFicheinter { $curY = $nexY; + $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. + $pageposbefore=$pdf->getPage(); + $pdf->SetFont('','B', $default_font_size - 1); $pdf->SetXY($this->marge_gauche, $curY); $txt=dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true)." - ".$outputlangs->transnoentities("Duration")." : ".convertSecondToTime($objectligne->duration),1,$outputlangs->charset_output); @@ -270,10 +273,21 @@ class pdf_soleil extends ModelePDFFicheinter $nexY+=2; // Passe espace entre les lignes + $pageposafter=$pdf->getPage(); + $pdf->setPage($pageposbefore); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + + // We suppose that a too long description is moved completely on next page + if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut + // Detect if some page were added automatically and output _tableau for past pages - // FIXME $pageposafter not defined while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); diff --git a/htdocs/core/modules/livraison/pdf/pdf_sirocco.modules.php b/htdocs/core/modules/livraison/pdf/pdf_sirocco.modules.php index 3b1405118b3..78a16adf15f 100644 --- a/htdocs/core/modules/livraison/pdf/pdf_sirocco.modules.php +++ b/htdocs/core/modules/livraison/pdf/pdf_sirocco.modules.php @@ -184,20 +184,25 @@ class pdf_sirocco extends ModelePDFDeliveryOrder { $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page - $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); - - // Description de la ligne produit + + // Description of product line + $pdf->SetFont('','', $default_font_size - 1); + //$curX = $this->posxdesc-1; pdf_writelinedesc($pdf,$object,$i,$outputlangs,100,3,30,$curY,1); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page - $nexY = $pdf->GetY(); $pdf->SetXY(10, $curY); @@ -227,6 +232,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); diff --git a/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php b/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php index a4eccaea3f6..7f5a25550a4 100644 --- a/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php @@ -241,19 +241,26 @@ class pdf_typhon extends ModelePDFDeliveryOrder { $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page - $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot-50); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); - // Description de la ligne produit - pdf_writelinedesc($pdf,$object,$i,$outputlangs,108,3,$this->posxdesc-1,$curY); + // Description of product line + $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page + $curX = $this->posxdesc-1; + pdf_writelinedesc($pdf,$object,$i,$outputlangs,108,3,$curX,$curY); - $pageposafter=$pdf->getPage(); + $nexY = $pdf->GetY(); + $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + // We suppose that a too long description is moved completely on next page + if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut + $nexY = $pdf->GetY()+4; /* @@ -292,6 +299,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); diff --git a/htdocs/core/modules/project/pdf/pdf_baleine.modules.php b/htdocs/core/modules/project/pdf/pdf_baleine.modules.php index 21bc5b99a9a..72d5c19b697 100644 --- a/htdocs/core/modules/project/pdf/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/pdf/pdf_baleine.modules.php @@ -230,6 +230,7 @@ class pdf_baleine extends ModelePDFProjects // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 33511e12071..436d0b2c72a 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -36,6 +36,22 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; */ class pdf_azur extends ModelePDFPropales { + var $db; + var $name; + var $description; + var $type; + + var $phpmin = array(4,3,0); // Minimum version of PHP required by module + var $version = 'dolibarr'; + + var $page_largeur; + var $page_hauteur; + var $format; + var $marge_gauche; + var $marge_droite; + var $marge_haute; + var $marge_basse; + var $emetteur; // Objet societe qui emet @@ -206,7 +222,7 @@ class pdf_azur extends ModelePDFPropales $pagenb++; $this->_pagehead($pdf, $object, 1, $outputlangs, $hookmanager); $pdf->SetFont('','', $default_font_size - 1); - $pdf->MultiCell(0, 4, ''); // Set interline to 4 + $pdf->MultiCell(0, 3, ''); // Set interline to 3 $pdf->SetTextColor(0,0,0); $tab_top = 90; @@ -221,8 +237,8 @@ class pdf_azur extends ModelePDFPropales { $tab_top = 88; - $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page - $pdf->writeHTMLCell(190, 4, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->SetFont('','', $default_font_size - 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; @@ -255,14 +271,19 @@ class pdf_azur extends ModelePDFPropales $curX = $this->posxdesc-1; pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,4,$curX,$curY,$hideref,$hidedesc,0,$hookmanager); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); - // TVA + // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails, $hookmanager); @@ -270,7 +291,7 @@ class pdf_azur extends ModelePDFPropales $pdf->MultiCell($this->posxup-$this->posxtva-1, 4, $vat_rate, 0, 'R'); } - // Prix unitaire HT avant remise + // Unit price before discount $up_excl_tax = pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails, $hookmanager); $pdf->SetXY($this->posxup, $curY); $pdf->MultiCell($this->posxqty-$this->posxup-1, 4, $up_excl_tax, 0, 'R', 0); @@ -280,7 +301,7 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($this->posxqty, $curY); $pdf->MultiCell($this->posxdiscount-$this->posxqty-1, 4, $qty, 0, 'R'); - // Remise sur ligne + // Discount on line $pdf->SetXY($this->posxdiscount, $curY); if ($object->lines[$i]->remise_percent) { @@ -288,7 +309,7 @@ class pdf_azur extends ModelePDFPropales $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 4, $remise_percent, 0, 'R'); } - // Total HT ligne + // Total HT line $total_excl_tax = pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails, $hookmanager); $pdf->SetXY($this->postotalht, $curY); $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalht, 4, $total_excl_tax, 0, 'R', 0); @@ -319,6 +340,7 @@ class pdf_azur extends ModelePDFPropales // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); @@ -382,7 +404,7 @@ class pdf_azur extends ModelePDFPropales $pdf->Output($file,'F'); - // Actions on extra fields (by external module or standard code) + //Add pdfgeneration hook if (! is_object($hookmanager)) { include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; @@ -549,25 +571,25 @@ class pdf_azur extends ModelePDFPropales $account->fetch($conf->global->FACTURE_CHQ_NUMBER); $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); $posy=$pdf->GetY()+2; } if ($conf->global->FACTURE_CHQ_NUMBER == -1) { $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); $posy=$pdf->GetY()+2; } } @@ -584,7 +606,7 @@ class pdf_azur extends ModelePDFPropales $curx=$this->marge_gauche; $cury=$posy; - $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account); + $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); $posy+=2; } @@ -617,6 +639,8 @@ class pdf_azur extends ModelePDFPropales // Tableau total $col1x = 120; $col2x = 170; $largcol2 = ($this->page_largeur - $this->marge_droite - $col2x); + $index = 0; + // Total HT $pdf->SetFillColor(255,255,255); $pdf->SetXY($col1x, $tab2_top + 0); @@ -625,8 +649,6 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht + $object->remise), 0, 'R', 1); - $index = 0; - // Show VAT by rates and total $pdf->SetFillColor(248,248,248); @@ -664,7 +686,7 @@ class pdf_azur extends ModelePDFPropales } } - if (! $this->atleastoneratenotnull) // If not vat at all + if (! $this->atleastoneratenotnull) // If no vat at all { $index++; $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); @@ -695,9 +717,9 @@ class pdf_azur extends ModelePDFPropales } else { - //Local tax 1 if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') { + //Local tax 1 foreach($this->localtax1 as $tvakey => $tvaval) { if ($tvakey>0) // On affiche pas taux 0 @@ -723,9 +745,9 @@ class pdf_azur extends ModelePDFPropales } } - //Local tax 2 if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') { + //Local tax 2 foreach($this->localtax2 as $tvakey => $tvaval) { if ($tvakey>0) // On affiche pas taux 0 @@ -741,7 +763,7 @@ class pdf_azur extends ModelePDFPropales $tvakey=str_replace('*','',$tvakey); $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; } - $totalvat = $outputlangs->transnoentities("TotalLT2".$mysoc->pays_code).' '; + $totalvat =$outputlangs->transnoentities("TotalLT2".$mysoc->pays_code).' '; $totalvat.=vatrate($tvakey,1).$tvacompl; $pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); @@ -764,10 +786,14 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc), $useborder, 'R', 1); - $pdf->SetTextColor(0,0,0); } } + $pdf->SetTextColor(0,0,0); + + $resteapayer = $object->total_ttc - $deja_regle; + if ($object->paye) $resteapayer=0; + if ($deja_regle > 0) { $index++; @@ -778,9 +804,6 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0); - $resteapayer = $object->total_ttc - $deja_regle; - if ($object->paye) $resteapayer=0; - if ($object->close_code == 'discount_vat') { $index++; @@ -830,7 +853,7 @@ class pdf_azur extends ModelePDFPropales global $conf; $default_font_size = pdf_getPDFFontSize($outputlangs); - // Montants exprimes en (en tab_top - 1) + // Amount in (at tab_top - 1) $pdf->SetTextColor(0,0,0); $pdf->SetFont('','',$default_font_size - 2); @@ -849,7 +872,7 @@ class pdf_azur extends ModelePDFPropales if (empty($hidetop)) { - $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); // line prend une position y en 2eme param et 4eme param $pdf->SetXY($this->posxdesc-1, $tab_top+1); $pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L'); @@ -922,13 +945,12 @@ class pdf_azur extends ModelePDFPropales pdf_pagehead($pdf,$outputlangs,$this->page_hauteur); - //Affiche le filigrane brouillon - Print Draft Watermark + // Show Draft Watermark if($object->statut==0 && (! empty($conf->global->PROPALE_DRAFT_WATERMARK)) ) { pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->PROPALE_DRAFT_WATERMARK); } - //Prepare la suite $pdf->SetTextColor(0,0,60); $pdf->SetFont('','B', $default_font_size + 3); @@ -1035,16 +1057,16 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($posx,$posy); $pdf->SetFillColor(230,230,230); $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); - + $pdf->SetTextColor(0,0,60); + // Show sender name $pdf->SetXY($posx+2,$posy+3); - $pdf->SetTextColor(0,0,60); - $pdf->SetFont('','B',$default_font_size); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); + $pdf->SetFont('','B', $default_font_size); + $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); // Show sender information - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($posx+2,$posy+8); + $pdf->SetFont('','', $default_font_size - 1); $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); @@ -1080,8 +1102,8 @@ class pdf_azur extends ModelePDFPropales // Show recipient frame $pdf->SetTextColor(0,0,0); $pdf->SetFont('','', $default_font_size - 2); - $pdf->SetXY($posx,$posy-5); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("BillTo").":", 0, 'L'); + $pdf->SetXY($posx+2,$posy-5); + $pdf->MultiCell(80,5, $outputlangs->transnoentities("BillTo").":", 0, 'L'); $pdf->Rect($posx, $posy, 100, $hautcadre); // Show recipient name diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 2d62bf720cd..756d94726e5 100755 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -113,13 +113,18 @@ class pdf_canelle extends ModelePDFSuppliersInvoices /** - * Build document onto disk + * Function to build pdf onto disk * - * @param Object $object Object invoice to build (or id if old method) - * @param Translate $outputlangs Lang object for output language - * @return int 1=OK, 0=KO + * @param int $object Id of object to generate + * @param object $outputlangs Lang output object + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @param object $hookmanager Hookmanager object + * @return int 1=OK, 0=KO */ - function write_file($object,$outputlangs='') + function write_file($object,$outputlangs='',$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0,$hookmanager=false) { global $user,$langs,$conf,$mysoc; @@ -255,21 +260,25 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage - $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); // Description of product line - $curX = $this->posxdesc-1; - pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,3,$curX,$curY,0,0,1,$hookmanager); + $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage + $curX = $this->posxdesc-1; + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,3,$curX,$curY,$hideref,$hidedesc,1,$hookmanager); - $pageposafter=$pdf->getPage(); + $nexY = $pdf->GetY(); + $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -321,6 +330,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); @@ -383,7 +393,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->Output($file,'F'); - // Actions on extra fields (by external module or standard code) + // Add pdfgeneration hook if (!is_object($hookmanager)) { include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; @@ -427,6 +437,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs) { global $conf,$mysoc; + $default_font_size = pdf_getPDFFontSize($outputlangs); $tab2_top = $posy; @@ -443,6 +454,8 @@ class pdf_canelle extends ModelePDFSuppliersInvoices // Tableau total $col1x = 120; $col2x = 170; $largcol2 = ($this->page_largeur - $this->marge_droite - $col2x); + $index=0; + // Total HT $pdf->SetFillColor(255,255,255); $pdf->SetXY($col1x, $tab2_top + 0); @@ -450,10 +463,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht + $object->remise), 0, 'R', 1); - // Affichage des totaux de TVA par taux (conformement a reglementation) + // Show VAT by rates and total $pdf->SetFillColor(248,248,248); - $index=0; foreach( $this->tva as $tvakey => $tvaval ) { if ($tvakey > 0) // On affiche pas taux 0 @@ -479,7 +491,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval), 0, 'R', 1); } } - if (! $this->atleastoneratenotnull) // If not vat at all + if (! $this->atleastoneratenotnull) // If no vat at all { $index++; $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); @@ -509,9 +521,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices } else { - //Local tax 1 if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') { + //Local tax 1 foreach( $this->localtax1 as $tvakey => $tvaval ) { if ($tvakey>0) // On affiche pas taux 0 @@ -537,9 +549,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices } } - //Local tax 2 if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') { + //Local tax 2 foreach( $this->localtax2 as $tvakey => $tvaval ) { if ($tvakey>0) // On affiche pas taux 0 @@ -576,8 +588,6 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc), $useborder, 'R', 1); - $pdf->SetFont('','', $default_font_size - 1); - $pdf->SetTextColor(0,0,0); if ($deja_regle > 0) { @@ -591,7 +601,6 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $index++; $pdf->SetTextColor(0,0,60); - //$pdf->SetFont('','B', $default_font_size - 1); $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("RemainderToPay"), $useborder, 'L', 1); @@ -611,7 +620,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices * @param PDF &$pdf Object PDF * @param string $tab_top Top position of table * @param string $tab_height Height of table (rectangle) - * @param int $nexY Y + * @param int $nexY Y (not used) * @param Translate $outputlangs Langs object * @param int $hidetop Hide top bar of array * @param int $hidebottom Hide bottom bar of array @@ -642,9 +651,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices if (empty($hidetop)) { - $pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6); + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); // line prend une position y en 2eme param et 4eme param - $pdf->SetXY($this->posxdesc-1, $tab_top+2); + $pdf->SetXY($this->posxdesc-1, $tab_top+1); $pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L'); } @@ -653,7 +662,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); if (empty($hidetop)) { - $pdf->SetXY($this->posxtva-3, $tab_top+2); + $pdf->SetXY($this->posxtva-3, $tab_top+1); $pdf->MultiCell($this->posxup-$this->posxtva+3,2, $outputlangs->transnoentities("VAT"),'','C'); } } @@ -661,14 +670,14 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); if (empty($hidetop)) { - $pdf->SetXY($this->posxup-1, $tab_top+2); + $pdf->SetXY($this->posxup-1, $tab_top+1); $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PriceUHT"),'','C'); } $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); if (empty($hidetop)) { - $pdf->SetXY($this->posxqty-1, $tab_top+2); + $pdf->SetXY($this->posxqty-1, $tab_top+1); $pdf->MultiCell($this->posxdiscount-$this->posxqty-1,2, $outputlangs->transnoentities("Qty"),'','C'); } @@ -677,7 +686,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { if ($this->atleastonediscount) { - $pdf->SetXY($this->posxdiscount-1, $tab_top+2); + $pdf->SetXY($this->posxdiscount-1, $tab_top+1); $pdf->MultiCell($this->postotalht-$this->posxdiscount+1,2, $outputlangs->transnoentities("ReductionShort"),'','C'); } } @@ -688,7 +697,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices } if (empty($hidetop)) { - $pdf->SetXY($this->postotalht-1, $tab_top+2); + $pdf->SetXY($this->postotalht-1, $tab_top+1); $pdf->MultiCell(30,2, $outputlangs->transnoentities("TotalHTShort"),'','C'); } @@ -790,7 +799,6 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $outputlangs->load("bills"); $outputlangs->load("orders"); $outputlangs->load("companies"); - $default_font_size = pdf_getPDFFontSize($outputlangs); // Do not add the BACKGROUND as this is for suppliers @@ -799,8 +807,8 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetTextColor(0,0,60); $pdf->SetFont('','B', $default_font_size + 3); - $posx=$this->page_largeur-$this->marge_droite-100; $posy=$this->marge_haute; + $posx=$this->page_largeur-$this->marge_droite-100; $pdf->SetXY($this->marge_gauche,$posy); @@ -831,17 +839,22 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetFont('','B', $default_font_size + 3); $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("SupplierInvoice")." ".$outputlangs->convToOutputCharset($object->ref), '', 'R'); - $pdf->SetFont('','', $default_font_size + 2); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("SupplierInvoice")." ".$outputlangs->convToOutputCharset($object->ref), '', 'R'); + + $pdf->SetFont('','B', $default_font_size); if ($object->ref_supplier) { $posy+=5; $pdf->SetXY($posx,$posy); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSupplier")." : " . $object->ref_supplier, '', 'R'); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSupplier")." : " . $object->ref_supplier, '', 'R'); } - $posy+=6; + $posy+=1; + $pdf->SetFont('','', $default_font_size - 1); + + $posy+=5; $pdf->SetXY($posx,$posy); if ($object->date) { @@ -941,7 +954,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output - * @return void + * @return int Return height of bottom margin including footer text */ function _pagefoot(&$pdf, $object, $outputlangs) { diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index 89cc3e2c408..9e8e5bdd064 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -122,7 +122,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders /** - * Build document onto disk + * Function to build pdf onto disk * * @param int $object Id of object to generate * @param object $outputlangs Lang output object @@ -272,21 +272,25 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage - $pdf->setPageOrientation('', 1, $this->marge_basse+$heightforfooter+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); // Description of product line - $curX = $this->posxdesc-1; + $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage + $curX = $this->posxdesc-1; pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,3,$curX,$curY,0,0,1,$hookmanager); - $pageposafter=$pdf->getPage(); + $nexY = $pdf->GetY(); + $pageposafter=$pdf->getPage(); $pdf->setPage($pageposbefore); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. +// We suppose that a too long description is moved completely on next page +if ($pageposafter > $pageposbefore) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; +} + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut - $nexY = $pdf->GetY(); // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -340,6 +344,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); @@ -437,7 +442,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders /** - * Affiche tableau des versement + * Show payments table * * @param PDF &$pdf Object PDF * @param Object $object Object order @@ -543,24 +548,24 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $account->fetch($conf->global->FACTURE_CHQ_NUMBER); $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio).':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($account->adresse_proprio), 0, 'L', 0); $posy=$pdf->GetY()+2; } if ($conf->global->FACTURE_CHQ_NUMBER == -1) { $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->MultiCell(90, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); + $pdf->SetFont('','B', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedToShort').' '.$outputlangs->convToOutputCharset($this->emetteur->name).' '.$outputlangs->transnoentities('SendTo').':',0,'L',0); $posy=$pdf->GetY()+1; $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetFont('','', $default_font_size - 2); - $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); $posy=$pdf->GetY()+2; } } @@ -577,7 +582,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $curx=$this->marge_gauche; $cury=$posy; - $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account); + $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); $posy+=2; } @@ -768,8 +773,6 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0); - $resteapayer = $object->total_ttc - $deja_regle; - $index++; $pdf->SetTextColor(0,0,60); $pdf->SetFillColor(224,224,224); @@ -793,7 +796,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * @param PDF &$pdf Object PDF * @param string $tab_top Top position of table * @param string $tab_height Height of table (rectangle) - * @param int $nexY Y + * @param int $nexY Y (not used) * @param Translate $outputlangs Langs object * @param int $hidetop Hide top bar of array * @param int $hidebottom Hide bottom bar of array @@ -824,7 +827,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if (empty($hidetop)) { - $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); // line prend une position y en 2eme param et 4eme param $pdf->SetXY($this->posxdesc-1, $tab_top+1); $pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L'); @@ -942,7 +945,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $title=$outputlangs->transnoentities("SupplierOrder"); $pdf->MultiCell(100, 3, $title, '', 'R'); - $pdf->SetFont('', 'B', $default_font_size + 2); + $pdf->SetFont('','B',$default_font_size); $posy+=6; $pdf->SetXY($posx,$posy); @@ -957,12 +960,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($object->date_commande) { $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("OrderDate")." : " . dol_print_date($object->date_commande,"day",false,$outputlangs,true), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderDate")." : " . dol_print_date($object->date_commande,"day",false,$outputlangs,true), '', 'R'); } else { $pdf->SetTextColor(255,0,0); - $pdf->MultiCell(100, 4, strtolower($outputlangs->transnoentities("OrderToProcess")), '', 'R'); + $pdf->MultiCell(100, 3, strtolower($outputlangs->transnoentities("OrderToProcess")), '', 'R'); } $posy+=2; @@ -1022,7 +1025,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $carac_client_name=$outputlangs->convToOutputCharset($object->client->name); } - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target'); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target'); // Show recipient $posy=42; @@ -1054,7 +1057,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * @param PDF &$pdf PDF * @param Object $object Object to show * @param Translate $outputlangs Object lang for output - * @return void + * @return int Return height of bottom margin including footer text */ function _pagefoot(&$pdf, $object, $outputlangs) {