diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 25d642d..cc4f8b3 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -2566,6 +2566,7 @@ class Bdd { produit.prix_unitaire as produit_price, produit.reference as produit_reference, produit.description as produit_description, + produit.fk_product_type_id as fk_product_type_id, produit.vat as produit_vat, devis.id_client as devis_client_id FROM ".$this->tableprefix ."produit_devis as produit_devis @@ -2855,6 +2856,17 @@ class Bdd { } } $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){ $valueHt = $product['produit_price'] * $product['quantite']; $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); diff --git a/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceFunecapPdfHandler.php b/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceFunecapPdfHandler.php index 37237a6..38a8417 100644 --- a/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceFunecapPdfHandler.php +++ b/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceFunecapPdfHandler.php @@ -59,7 +59,7 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler { $this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($subcontractorCaseNumberText),0,'0',); $yValue += 6; foreach($products as $product){ - $valueHt = $product['produit_price']; + $valueHt = $product['produit_price'] * $product["quantite"]; $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); $totalHt+=$valueHt; $totalTtc+=$valueTtc; @@ -69,15 +69,26 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler { $dateValue = $devisDate; $productDescription .= " de " . $currentDevis["defunt_nom"] ?? ""; } - $productDescriptionWidth = $this->GetStringWidth($productDescription); - $productDescriptionIsMultiline = $productDescriptionWidth > $maxDescriptionWidth; $tvaAmount = $valueTtc - $valueHt; - $this->SetXY( 8,$yValue ); $this->Cell(20, 6, $dateValue, 0,0); - + $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->Cell(20, 6, number_format($valueHt,2,'.','').chr(128), 0, 0, 'C'); diff --git a/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceGroupPdfHandler.php b/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceGroupPdfHandler.php index f4c395f..b9745a3 100644 --- a/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceGroupPdfHandler.php +++ b/gestion/lib/Service/InvoiceGroupPdfHandler/InvoiceGroupPdfHandler.php @@ -219,7 +219,7 @@ class InvoiceGroupPdfHandler extends FPDF { $totalTtc = 0; $totalTva = 0; $yValue = $this->startingYOfArticlesTable + 11; - $maxDescriptionWidth = 104; + $maxDescriptionWidth = 98; $currentIndexPosition = $this->currentIndexPosition; for($currentIndexPosition;$currentIndexPosition<($this->initialIndexPosition + $this->devisCountToGet);$currentIndexPosition++){ $currentDevis = $devisData[$currentIndexPosition]; @@ -227,29 +227,37 @@ class InvoiceGroupPdfHandler extends FPDF { $devisDate = DateTime::createFromFormat('Y-m-d',$devisDate); $devisDate = $devisDate->format('d-m-Y'); $products = $currentDevis["products"]; + $productIncrement = 0; foreach($products as $product){ - $valueHt = $product['produit_price']; + $valueHt = $product['produit_price'] * $product["quantite"]; $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue); $totalHt+=$valueHt; $totalTtc+=$valueTtc; $productDescription = $product["produit_description"] ?? ""; $dateValue = ""; - if($product === end($products)){ + if($productIncrement == 0){ $dateValue = $devisDate; $productDescription .= " de " . $currentDevis["defunt_nom"] ?? ""; } - $productDescriptionWidth = $this->GetStringWidth($productDescription); - $productDescriptionIsMultiline = $productDescriptionWidth > $maxDescriptionWidth; $tvaAmount = $valueTtc - $valueHt; $this->SetXY( 8,$yValue ); $this->Cell(20, 6, $dateValue, 0,0); - + $this->SetXY( 35,$yValue ); - if($productDescriptionIsMultiline){ - $this->MultiAlignCell(100, 6, FileExportHelpers::FormatTextForExport($productDescription),0,'0',); - } - else{ - $this->Cell(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 ); @@ -262,9 +270,10 @@ class InvoiceGroupPdfHandler extends FPDF { $this->Cell(25, 6, number_format($valueTtc,2,'.','').chr(128), 0, 1, 'C'); $yValue += 6; $totalTva += $tvaAmount; - if($productDescriptionIsMultiline){ + if($productDescriptionWidthIsGreaterThanMaxWidth){ $yValue += 6; } + $productIncrement++; } } $this->currentIndexPosition = $currentIndexPosition;