Merge pull request #6403 from laudeco/feature/expense_report_wrong_placement
[FIX] - Expense report on multiple page
This commit is contained in:
commit
5d94c8ddac
@ -284,7 +284,7 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
}
|
}
|
||||||
|
|
||||||
$iniY = $tab_top + 7;
|
$iniY = $tab_top + 7;
|
||||||
$curY = $tab_top + 7;
|
$initialY = $tab_top + 7;
|
||||||
$nexY = $tab_top + 7;
|
$nexY = $tab_top + 7;
|
||||||
|
|
||||||
// Loop on each lines
|
// Loop on each lines
|
||||||
@ -292,43 +292,41 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
{
|
{
|
||||||
$piece_comptable = $i +1;
|
$piece_comptable = $i +1;
|
||||||
|
|
||||||
$curY = $nexY;
|
|
||||||
$pdf->SetFont('','', $default_font_size - 2); // Into loop to work with multipage
|
$pdf->SetFont('','', $default_font_size - 2); // Into loop to work with multipage
|
||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
$pdf->setTopMargin($tab_top_newpage);
|
$pdf->setTopMargin($tab_top_newpage);
|
||||||
$pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it.
|
$pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it.
|
||||||
$pageposbefore=$pdf->getPage();
|
$pageposbefore=$pdf->getPage();
|
||||||
|
$curY = $nexY;
|
||||||
// Description of product line
|
|
||||||
$curX = $this->posxcomment-1;
|
|
||||||
|
|
||||||
$showpricebeforepagebreak=1;
|
|
||||||
|
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
|
|
||||||
// Accountancy piece
|
// Accountancy piece
|
||||||
$pdf->SetXY($this->posxpiece, $curY);
|
$pdf->SetXY($this->posxpiece, $curY);
|
||||||
$pdf->writeHTMLCell($this->posxcomment-$this->posxpiece-0.8, 4, $this->posxpiece-1, $curY, $piece_comptable, 0, 1);
|
$pdf->writeHTMLCell($this->posxcomment-$this->posxpiece-0.8, 4, $this->posxpiece-1, $curY, $piece_comptable, 0, 1);
|
||||||
|
$curY = ($pdf->PageNo() > $pageposbefore) ? $pdf->GetY()-4 : $curY;
|
||||||
|
|
||||||
// Comments
|
// Comments
|
||||||
$pdf->SetXY($this->posxcomment, $curY);
|
$pdf->SetXY($this->posxcomment, $curY );
|
||||||
$pdf->writeHTMLCell($this->posxdate-$this->posxcomment-0.8, 4, $this->posxcomment-1, $curY, $object->lines[$i]->comments, 0, 1);
|
$pdf->writeHTMLCell($this->posxdate-$this->posxcomment-0.8, 4, $this->posxcomment-1, $curY, $object->lines[$i]->comments, 0, 1);
|
||||||
|
$curY = ($pdf->PageNo() > $pageposbefore) ? $pdf->GetY()-4 : $curY;
|
||||||
|
|
||||||
//nexY
|
// Date
|
||||||
$nexY = $pdf->GetY();
|
|
||||||
$pageposafter=$pdf->getPage();
|
|
||||||
$pdf->setPage($pageposbefore);
|
|
||||||
$pdf->setTopMargin($this->marge_haute);
|
|
||||||
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
|
||||||
|
|
||||||
// Date
|
|
||||||
$pdf->SetXY($this->posxdate -1, $curY);
|
$pdf->SetXY($this->posxdate -1, $curY);
|
||||||
$pdf->MultiCell($this->posxtype-$this->posxdate-0.8, 4, dol_print_date($object->lines[$i]->date,"day",false,$outputlangs), 0, 'C');
|
$pdf->MultiCell($this->posxtype-$this->posxdate-0.8, 4, dol_print_date($object->lines[$i]->date,"day",false,$outputlangs), 0, 'C');
|
||||||
|
|
||||||
// Type
|
// Type
|
||||||
$pdf->SetXY($this->posxtype -1, $curY);
|
$pdf->SetXY($this->posxtype -1, $curY);
|
||||||
$pdf->MultiCell($this->posxprojet-$this->posxtype-0.8, 4, dol_trunc($outputlangs->transnoentities($object->lines[$i]->type_fees_code), 12), 0, 'C');
|
$nextColumnPosX = $this->posxup;
|
||||||
|
if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) {
|
||||||
|
$nextColumnPosX = $this->posxtva;
|
||||||
|
}
|
||||||
|
if (!empty($conf->projet->enabled)) {
|
||||||
|
$nextColumnPosX = $this->posxprojet;
|
||||||
|
}
|
||||||
|
|
||||||
|
$pdf->MultiCell($nextColumnPosX-$this->posxtype-0.8, 4, dol_trunc($outputlangs->transnoentities($object->lines[$i]->type_fees_code), 12), 0, 'C');
|
||||||
|
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
@ -344,34 +342,43 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
$vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails);
|
$vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails);
|
||||||
$pdf->SetXY($this->posxtva, $curY);
|
$pdf->SetXY($this->posxtva, $curY);
|
||||||
$pdf->MultiCell($this->posxup-$this->posxtva-0.8, 4,$vat_rate, 0, 'C');
|
$pdf->MultiCell($this->posxup-$this->posxtva-0.8, 4,$vat_rate, 0, 'C');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unit price
|
// Unit price
|
||||||
$pdf->SetXY($this->posxup, $curY);
|
$pdf->SetXY($this->posxup, $curY);
|
||||||
$pdf->MultiCell($this->posxqty-$this->posxup-0.8, 4,price($object->lines[$i]->value_unit), 0, 'R');
|
$pdf->MultiCell($this->posxqty-$this->posxup-0.8, 4,price($object->lines[$i]->value_unit), 0, 'R');
|
||||||
|
|
||||||
// Quantity
|
// Quantity
|
||||||
$pdf->SetXY($this->posxqty, $curY);
|
$pdf->SetXY($this->posxqty, $curY);
|
||||||
$pdf->MultiCell($this->postotalttc-$this->posxqty-0.8, 4,$object->lines[$i]->qty, 0, 'R');
|
$pdf->MultiCell($this->postotalttc-$this->posxqty-0.8, 4,$object->lines[$i]->qty, 0, 'R');
|
||||||
|
|
||||||
// Total with all taxes
|
// Total with all taxes
|
||||||
$pdf->SetXY($this->postotalttc-1, $curY);
|
$pdf->SetXY($this->postotalttc-1, $curY);
|
||||||
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 4, price($object->lines[$i]->total_ttc), 0, 'R');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 4, price($object->lines[$i]->total_ttc), 0, 'R');
|
||||||
|
|
||||||
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
//nexY
|
||||||
|
$nexY = $pdf->GetY();
|
||||||
|
$pageposafter=$pdf->getPage();
|
||||||
|
$pdf->setPage($pageposbefore);
|
||||||
|
$pdf->setTopMargin($this->marge_haute);
|
||||||
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
|
||||||
|
$nblineFollowComment = 1;
|
||||||
|
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
||||||
if ($i < ($nblignes - 1)) // If it's not last line
|
if ($i < ($nblignes - 1)) // If it's not last line
|
||||||
{
|
{
|
||||||
//on recupere la description du produit suivant
|
//Fetch current description to know on which line the next one should be placed
|
||||||
$follow_comment = $object->lines[$i+1]->comments;
|
$follow_comment = $object->lines[$i]->comments;
|
||||||
|
$follow_type = $object->lines[$i]->type_fees_code;
|
||||||
|
|
||||||
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
||||||
$nblineFollowComment = dol_nboflines_bis($follow_comment,52,$outputlangs->charset_output)*4;
|
$nbLineCommentNeed = dol_nboflines_bis($follow_comment,52,$outputlangs->charset_output);
|
||||||
}
|
$nbLineTypeNeed = dol_nboflines_bis($follow_type,4,$outputlangs->charset_output);
|
||||||
else // If it's last line
|
|
||||||
{
|
$nblineFollowComment = max($nbLineCommentNeed, $nbLineTypeNeed);
|
||||||
$nblineFollowComment = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$nexY+=4; // Passe espace entre les lignes
|
$nexY+=$nblineFollowComment*($pdf->getFontSize()*1.3); // Passe espace entre les lignes
|
||||||
|
|
||||||
// Detect if some page were added automatically and output _tableau for past pages
|
// Detect if some page were added automatically and output _tableau for past pages
|
||||||
while ($pagenb < $pageposafter)
|
while ($pagenb < $pageposafter)
|
||||||
@ -426,7 +433,7 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
$pdf->SetFont('','', 10);
|
$pdf->SetFont('','', 10);
|
||||||
|
|
||||||
// Show total area box
|
// Show total area box
|
||||||
$posy=$bottomlasttab+5;//$nexY+95;
|
$posy=$bottomlasttab+5;
|
||||||
$pdf->SetXY(100, $posy);
|
$pdf->SetXY(100, $posy);
|
||||||
$pdf->MultiCell(60, 5, $outputlangs->transnoentities("TotalHT"), 1, 'L');
|
$pdf->MultiCell(60, 5, $outputlangs->transnoentities("TotalHT"), 1, 'L');
|
||||||
$pdf->SetXY(160, $posy);
|
$pdf->SetXY(160, $posy);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user