diff --git a/gestion/lib/Service/Devis/DevisDataProcessor.php b/gestion/lib/Service/Devis/DevisDataProcessor.php index 78cb20e..9dd19ab 100644 --- a/gestion/lib/Service/Devis/DevisDataProcessor.php +++ b/gestion/lib/Service/Devis/DevisDataProcessor.php @@ -46,6 +46,8 @@ class DevisDataProcessor 'devis_date' => $devis['devis_date'], 'lieu_nom' => $devis['lieu_nom'], 'lieu_adresse' => $devis['lieu_adresse'], + 'thanato_nom' => $devis['thanato_nom'], + 'thanato_prenom' => $devis['thanato_prenom'], 'defunt_nom' => $devis['defunt_nom'], 'defunt_sexe' => $devis['defunt_sexe'], 'client_nom' => $devis['client_nom'], diff --git a/gestion/lib/Service/Devis/DevisPdfTableRenderer.php b/gestion/lib/Service/Devis/DevisPdfTableRenderer.php index 8d3f5a4..8cdf43a 100644 --- a/gestion/lib/Service/Devis/DevisPdfTableRenderer.php +++ b/gestion/lib/Service/Devis/DevisPdfTableRenderer.php @@ -37,12 +37,11 @@ class DevisPdfTableRenderer $endY = ($numPage == $nbPage && !$sansMontant) ? 225 : 235; if (!$sansMontant) { - // Ajustement final des positions des lignes verticales - // Article et Défunt de même taille, TTC réduit - $verticalLines = [22, 39, 56, 75, 105, 135, 155, 170, 185]; + // Ajout de la colonne Thanatopracteur entre Défunt et H.T. + $verticalLines = [24, 41, 58, 77, 102, 127, 147, 167, 178, 189]; } else { - // Pour sans montant: Article et Défunt de même taille - $verticalLines = [27, 47, 67, 85, 115, 145]; + // Pour sans montant: ajout de Thanatopracteur à la fin + $verticalLines = [27, 47, 67, 85, 110, 135, 160]; } foreach ($verticalLines as $x) { @@ -56,16 +55,17 @@ class DevisPdfTableRenderer if (!$sansMontant) { $headers = [ - [5, 17, "N° Devis"], - [22, 17, "N° Dossier"], - [39, 17, "N° Commande"], - [56, 19, "Date"], - [75, 30, "Article"], // Taille augmentée - [105, 30, "Lieu du soin"], - [135, 20, "Défunt"], // Taille réduite pour équilibrer - [155, 15, "H.T."], - [170, 15, "TVA"], - [185, 15, "T.T.C"] // Taille réduite + [5, 19, "N° Devis"], + [24, 17, "N° Dossier"], + [41, 17, "N° Commande"], + [58, 19, "Date"], + [77, 25, "Article"], + [102, 25, "Lieu du soin"], + [127, 20, "Défunt"], + [147, 20, "Thanato"], + [167, 11, "H.T."], + [178, 11, "TVA"], + [189, 16, "T.T.C"] ]; } else { $headers = [ @@ -73,9 +73,10 @@ class DevisPdfTableRenderer [27, 20, "N° Dossier"], [47, 20, "N° Commande"], [67, 18, "Date"], - [85, 30, "Article"], // Même taille que Défunt - [115, 30, "Lieu du soin"], - [145, 30, "Défunt"] // Même taille que Article + [85, 25, "Article"], + [110, 25, "Lieu du soin"], + [135, 25, "Défunt"], + [160, 45, "Thanato"] ]; } @@ -126,28 +127,33 @@ class DevisPdfTableRenderer } }; - if (!$sansMontant) { - // LARGEURS ÉQUILIBRÉES avec Article et Défunt de même taille - $addSmartCell($pdf, 6, $yDevis, 16, $devis['devis_full_number']); - $addSmartCell($pdf, 23, $yDevis, 16, $devis['case_number'] ?? ''); - $addSmartCell($pdf, 40, $yDevis, 16, $devis['order_number'] ?? ''); + // Préparer le nom complet du thanatopracteur + $thanatoNom = trim(($devis['thanato_prenom'] ?? '') . ' ' . ($devis['thanato_nom'] ?? '')); + $thanatoNom = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($thanatoNom); - $addSmartCell($pdf, 57, $yDevis, 18, mb_convert_encoding($formatterDate->format($dateSoin), 'ISO-8859-1', 'UTF-8')); + if (!$sansMontant) { + $addSmartCell($pdf, 6, $yDevis, 18, $devis['devis_full_number']); + $addSmartCell($pdf, 25, $yDevis, 16, $devis['case_number'] ?? ''); + $addSmartCell($pdf, 42, $yDevis, 16, $devis['order_number'] ?? ''); + + $addSmartCell($pdf, 59, $yDevis, 18, mb_convert_encoding($formatterDate->format($dateSoin), 'ISO-8859-1', 'UTF-8')); $articleText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['article'] ?? 'SOINS'); - $addSmartCell($pdf, 76, $yDevis, 29, $articleText); // Article agrandi + $addSmartCell($pdf, 78, $yDevis, 24, $articleText); $lieuText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['lieu_nom'] ?? ''); - $addSmartCell($pdf, 106, $yDevis, 29, $lieuText); + $addSmartCell($pdf, 103, $yDevis, 24, $lieuText); $defuntText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['defunt_nom'] ?? ''); - $addSmartCell($pdf, 136, $yDevis, 19, $defuntText); // Défunt réduit + $addSmartCell($pdf, 128, $yDevis, 19, $defuntText); - $addSmartCell($pdf, 156, $yDevis, 14, number_format($devis['montant_htc'], 2, '.', '') . chr(128), 'R'); - $addSmartCell($pdf, 171, $yDevis, 14, number_format($devis['montant_tva'], 2, '.', '') . chr(128), 'R'); - $addSmartCell($pdf, 186, $yDevis, 14, number_format($devis['montant_ttc'], 2, '.', '') . chr(128), 'R'); // TTC réduit + // NOUVELLE COLONNE : Thanatopracteur + $addSmartCell($pdf, 148, $yDevis, 19, $thanatoNom); + + $addSmartCell($pdf, 168, $yDevis, 10, number_format($devis['montant_htc'], 2, '.', '') . chr(128), 'R'); + $addSmartCell($pdf, 179, $yDevis, 10, number_format($devis['montant_tva'], 2, '.', '') . chr(128), 'R'); + $addSmartCell($pdf, 190, $yDevis, 15, number_format($devis['montant_ttc'], 2, '.', '') . chr(128), 'R'); } else { - // Pour sans montant: Article et Défunt de même taille $addSmartCell($pdf, 6, $yDevis, 21, $devis['devis_full_number']); $addSmartCell($pdf, 28, $yDevis, 19, $devis['case_number'] ?? ''); $addSmartCell($pdf, 48, $yDevis, 19, $devis['order_number'] ?? ''); @@ -155,13 +161,16 @@ class DevisPdfTableRenderer $addSmartCell($pdf, 68, $yDevis, 17, mb_convert_encoding($formatterDate->format($dateSoin), 'ISO-8859-1', 'UTF-8')); $articleText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['article'] ?? 'SOINS'); - $addSmartCell($pdf, 86, $yDevis, 29, $articleText); // Article agrandi + $addSmartCell($pdf, 86, $yDevis, 24, $articleText); $lieuText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['lieu_nom'] ?? ''); - $addSmartCell($pdf, 116, $yDevis, 29, $lieuText); + $addSmartCell($pdf, 111, $yDevis, 24, $lieuText); $defuntText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['defunt_nom'] ?? ''); - $addSmartCell($pdf, 146, $yDevis, 29, $defuntText); // Défunt réduit + $addSmartCell($pdf, 136, $yDevis, 24, $defuntText); + + // NOUVELLE COLONNE : Thanatopracteur + $addSmartCell($pdf, 161, $yDevis, 44, $thanatoNom); } } @@ -170,33 +179,34 @@ class DevisPdfTableRenderer $pdf->Line(5, 225, 205, 225); $pdf->SetFont('Arial', 'B', 8); - // Alignement des totaux avec les colonnes HT, TVA, TTC + // Alignement des totaux avec les colonnes HT, TVA, TTC avec espaces entre les valeurs $pdf->SetXY(5, 225); - $pdf->Cell(130, 8, 'TOTAL', 0, 0, 'C'); + $pdf->Cell(162, 8, 'TOTAL', 0, 0, 'C'); - // POSITIONS alignées avec les colonnes du tableau - $pdf->SetXY(155, 225); - $pdf->Cell(15, 8, number_format($totals['ht'], 2, '.', '') . chr(128), 0, 0, 'R'); - $pdf->SetXY(170, 225); - $pdf->Cell(15, 8, number_format($totals['tva'], 2, '.', '') . chr(128), 0, 0, 'R'); - $pdf->SetXY(185, 225); - $pdf->Cell(15, 8, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'R'); + // POSITIONS avec espaces entre les valeurs - plus d'espace entre HT et TVA + $pdf->SetXY(167, 225); + $pdf->Cell(9, 8, number_format($totals['ht'], 2, '.', '') . chr(128), 0, 0, 'R'); - // CADRE TOTAL TTC - Texte à l'intérieur du cadre aligné à droite - $pdf->SetXY(155, 240); - $pdf->Cell(30, 8, 'TOTAL TTC', 0, 0, 'C'); + $pdf->SetXY(181, 225); + $pdf->Cell(9, 8, number_format($totals['tva'], 2, '.', '') . chr(128), 0, 0, 'R'); - // Valeur alignée avec la fin du tableau tout à droite - $pdf->SetXY(185, 240); - $pdf->Cell(15, 8, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'R'); + $pdf->SetXY(189, 225); + $pdf->Cell(16, 8, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'R'); + + // CADRE TOTAL TTC - Cadre encore plus agrandi + $pdf->SetXY(170, 241); + $pdf->Cell(19, 6, 'TOTAL TTC', 0, 0, 'C'); + + $pdf->SetXY(189, 241); + $pdf->Cell(16, 6, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'C'); // Cadre TOTAL TTC aligné avec la fin du tableau (205) $lines = [ - [155, 240, 155, 248], // Ligne verticale gauche - [185, 240, 185, 248], // Ligne de séparation + [170, 240, 170, 248], // Ligne verticale gauche (déplacée de 173 à 170 pour agrandir) + [189, 240, 189, 248], // Ligne de séparation (alignée avec colonne T.T.C) [205, 240, 205, 248], // Ligne verticale droite (alignée avec fin du tableau) - [155, 240, 205, 240], // Ligne horizontale haute - [155, 248, 205, 248] // Ligne horizontale basse + [170, 240, 205, 240], // Ligne horizontale haute + [170, 248, 205, 248] // Ligne horizontale basse ]; foreach ($lines as $line) {