Merge branch 'fixes/fix-facturation-group-details' into staging

This commit is contained in:
Tiavina 2025-03-04 11:39:28 +03:00
commit 6c3d73edd3
3 changed files with 50 additions and 18 deletions

View File

@ -2566,6 +2566,7 @@ class Bdd {
produit.prix_unitaire as produit_price, produit.prix_unitaire as produit_price,
produit.reference as produit_reference, produit.reference as produit_reference,
produit.description as produit_description, produit.description as produit_description,
produit.fk_product_type_id as fk_product_type_id,
produit.vat as produit_vat, produit.vat as produit_vat,
devis.id_client as devis_client_id devis.id_client as devis_client_id
FROM ".$this->tableprefix ."produit_devis as produit_devis FROM ".$this->tableprefix ."produit_devis as produit_devis
@ -2855,6 +2856,17 @@ class Bdd {
} }
} }
$products = $this->getDevisProduits($devis["devis_id"]); $products = $this->getDevisProduits($devis["devis_id"]);
if(count($products) > 1){
usort($products, function ($a, $b) {
if ($a["fk_product_type_id"] === null && $b["fk_product_type_id"] !== null) {
return -1;
}
if ($a["fk_product_type_id"] !== null && $b["fk_product_type_id"] === null) {
return 1;
}
return 0;
});
}
foreach($products as $product){ foreach($products as $product){
$valueHt = $product['produit_price'] * $product['quantite']; $valueHt = $product['produit_price'] * $product['quantite'];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);

View File

@ -59,7 +59,7 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler {
$this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($subcontractorCaseNumberText),0,'0',); $this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($subcontractorCaseNumberText),0,'0',);
$yValue += 6; $yValue += 6;
foreach($products as $product){ foreach($products as $product){
$valueHt = $product['produit_price']; $valueHt = $product['produit_price'] * $product["quantite"];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);
$totalHt+=$valueHt; $totalHt+=$valueHt;
$totalTtc+=$valueTtc; $totalTtc+=$valueTtc;
@ -69,15 +69,26 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler {
$dateValue = $devisDate; $dateValue = $devisDate;
$productDescription .= " de " . $currentDevis["defunt_nom"] ?? ""; $productDescription .= " de " . $currentDevis["defunt_nom"] ?? "";
} }
$productDescriptionWidth = $this->GetStringWidth($productDescription);
$productDescriptionIsMultiline = $productDescriptionWidth > $maxDescriptionWidth;
$tvaAmount = $valueTtc - $valueHt; $tvaAmount = $valueTtc - $valueHt;
$this->SetXY( 8,$yValue ); $this->SetXY( 8,$yValue );
$this->Cell(20, 6, $dateValue, 0,0); $this->Cell(20, 6, $dateValue, 0,0);
$this->SetXY( 35,$yValue ); $this->SetXY( 35,$yValue );
$this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($productDescription),0,'0',); $productDescription = FileExportHelpers::FormatTextForExport($productDescription);
$productDescriptionWidth = $this->GetStringWidth($productDescription);
$productDescriptionWidthIsGreaterThanMaxWidth = $productDescriptionWidth > $maxDescriptionWidth;
$productDescriptionIsMultiline = false;
if ($productDescriptionWidthIsGreaterThanMaxWidth) {
$yBefore = $this->GetY();
$this->MultiCell($maxDescriptionWidth, 6, $productDescription,0,'L');
$yAfter = $this->GetY();
$productDescriptionIsMultiline = ($yAfter - $yBefore) > 6;
if($productDescriptionIsMultiline){
$this->SetXY($this->GetX(),$yBefore);
}
} else {
$this->Cell($maxDescriptionWidth, 6, $productDescription);
}
$this->SetXY( 138,$yValue ); $this->SetXY( 138,$yValue );
$this->Cell(20, 6, number_format($valueHt,2,'.','').chr(128), 0, 0, 'C'); $this->Cell(20, 6, number_format($valueHt,2,'.','').chr(128), 0, 0, 'C');

View File

@ -219,7 +219,7 @@ class InvoiceGroupPdfHandler extends FPDF {
$totalTtc = 0; $totalTtc = 0;
$totalTva = 0; $totalTva = 0;
$yValue = $this->startingYOfArticlesTable + 11; $yValue = $this->startingYOfArticlesTable + 11;
$maxDescriptionWidth = 104; $maxDescriptionWidth = 98;
$currentIndexPosition = $this->currentIndexPosition; $currentIndexPosition = $this->currentIndexPosition;
for($currentIndexPosition;$currentIndexPosition<($this->initialIndexPosition + $this->devisCountToGet);$currentIndexPosition++){ for($currentIndexPosition;$currentIndexPosition<($this->initialIndexPosition + $this->devisCountToGet);$currentIndexPosition++){
$currentDevis = $devisData[$currentIndexPosition]; $currentDevis = $devisData[$currentIndexPosition];
@ -227,29 +227,37 @@ class InvoiceGroupPdfHandler extends FPDF {
$devisDate = DateTime::createFromFormat('Y-m-d',$devisDate); $devisDate = DateTime::createFromFormat('Y-m-d',$devisDate);
$devisDate = $devisDate->format('d-m-Y'); $devisDate = $devisDate->format('d-m-Y');
$products = $currentDevis["products"]; $products = $currentDevis["products"];
$productIncrement = 0;
foreach($products as $product){ foreach($products as $product){
$valueHt = $product['produit_price']; $valueHt = $product['produit_price'] * $product["quantite"];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);
$totalHt+=$valueHt; $totalHt+=$valueHt;
$totalTtc+=$valueTtc; $totalTtc+=$valueTtc;
$productDescription = $product["produit_description"] ?? ""; $productDescription = $product["produit_description"] ?? "";
$dateValue = ""; $dateValue = "";
if($product === end($products)){ if($productIncrement == 0){
$dateValue = $devisDate; $dateValue = $devisDate;
$productDescription .= " de " . $currentDevis["defunt_nom"] ?? ""; $productDescription .= " de " . $currentDevis["defunt_nom"] ?? "";
} }
$productDescriptionWidth = $this->GetStringWidth($productDescription);
$productDescriptionIsMultiline = $productDescriptionWidth > $maxDescriptionWidth;
$tvaAmount = $valueTtc - $valueHt; $tvaAmount = $valueTtc - $valueHt;
$this->SetXY( 8,$yValue ); $this->SetXY( 8,$yValue );
$this->Cell(20, 6, $dateValue, 0,0); $this->Cell(20, 6, $dateValue, 0,0);
$this->SetXY( 35,$yValue ); $this->SetXY( 35,$yValue );
$productDescription = FileExportHelpers::FormatTextForExport($productDescription);
$productDescriptionWidth = $this->GetStringWidth($productDescription);
$productDescriptionWidthIsGreaterThanMaxWidth = $productDescriptionWidth > $maxDescriptionWidth;
$productDescriptionIsMultiline = false;
if ($productDescriptionWidthIsGreaterThanMaxWidth) {
$yBefore = $this->GetY();
$this->MultiCell($maxDescriptionWidth, 6, $productDescription,0,'L');
$yAfter = $this->GetY();
$productDescriptionIsMultiline = ($yAfter - $yBefore) > 6;
if($productDescriptionIsMultiline){ if($productDescriptionIsMultiline){
$this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($productDescription),0,'0',); $this->SetXY($this->GetX(),$yBefore);
} }
else{ } else {
$this->Cell(100,6,FileExportHelpers::FormatTextForExport($productDescription),0,0); $this->Cell($maxDescriptionWidth, 6, $productDescription);
} }
$this->SetXY( 138,$yValue ); $this->SetXY( 138,$yValue );
@ -262,9 +270,10 @@ class InvoiceGroupPdfHandler extends FPDF {
$this->Cell(25, 6, number_format($valueTtc,2,'.','').chr(128), 0, 1, 'C'); $this->Cell(25, 6, number_format($valueTtc,2,'.','').chr(128), 0, 1, 'C');
$yValue += 6; $yValue += 6;
$totalTva += $tvaAmount; $totalTva += $tvaAmount;
if($productDescriptionIsMultiline){ if($productDescriptionWidthIsGreaterThanMaxWidth){
$yValue += 6; $yValue += 6;
} }
$productIncrement++;
} }
} }
$this->currentIndexPosition = $currentIndexPosition; $this->currentIndexPosition = $currentIndexPosition;