From e8de1b62d113fb9380cb9c07d4bb2ff61682c2a8 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Sat, 26 Jul 2025 11:38:27 +0200 Subject: [PATCH] Debug v22 --- htdocs/core/lib/pdf.lib.php | 15 +++++++++++---- .../modules/facture/doc/pdf_sponge.modules.php | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 8d47b0bdb86..87c75ac787e 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2747,15 +2747,17 @@ function pdf_getSizeForImage($realpath) } /** - * Return line total amount discount + * Return line total amount discount. + * Calculated by taking the unit price (subprice) * quantity - (total without tax) * * @param Commande|Facture|Propal $object Object * @param int $i Current line number * @param Translate $outputlangs Object langs for output * @param int<0,2> $hidedetails Hide details (0=no, 1=yes, 2=just special lines) + * @param int<0,1> $multicurrency 1=Get value in the foreign currency * @return int|float|string Return total of line excl tax */ -function pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, $hidedetails = 0) +function pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, $hidedetails = 0, $multicurrency = 0) { global $hookmanager; @@ -2777,7 +2779,8 @@ function pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, $hidedetails = 'i' => $i, 'outputlangs' => $outputlangs, 'hidedetails' => $hidedetails, - 'special_code' => $special_code + 'special_code' => $special_code, + 'multicurrency' => $multicurrency ); $action = ''; @@ -2792,7 +2795,11 @@ function pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, $hidedetails = } if (empty($hidedetails) || $hidedetails > 1) { - return (float) price2num($sign * (($object->lines[$i]->subprice * (float) $object->lines[$i]->qty) - $object->lines[$i]->total_ht), 'MT', 1); + if (empty($multicurrency)) { + return (float) price2num($sign * (($object->lines[$i]->subprice * (float) $object->lines[$i]->qty) - $object->lines[$i]->total_ht), 'MT', 1); + } else { + return (float) price2num($sign * (($object->lines[$i]->multicurrency_subprice * (float) $object->lines[$i]->qty) - $object->lines[$i]->multicurrency_total_ht), 'MT', 1); + } } } return 0; diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 12e69150e89..8c2df0a7449 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -1800,16 +1800,19 @@ class pdf_sponge extends ModelePDFFactures // Total discount $total_discount_on_lines = 0; + $multicurrency_total_discount_on_lines = 0; foreach ($object->lines as $i => $line) { $resdiscount = pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, 2); + $multicurrency_resdiscount = pdfGetLineTotalDiscountAmount($object, $i, $outputlangs, 2, 1); $total_discount_on_lines += (is_numeric($resdiscount) ? $resdiscount : 0); + $multicurrency_total_discount_on_lines += (is_numeric($multicurrency_resdiscount) ? $multicurrency_resdiscount : 0); // If line was a negative line, we do not count the discount as a discount if ($line->total_ht < 0) { $total_discount_on_lines += -$line->total_ht; + $multicurrency_total_discount_on_lines += -$line->multicurrency_total_ht; } } - $multicurrency_total_discount_on_lines = price2num($total_discount_on_lines * $object->multicurrency_tx, 'CT'); if ($total_discount_on_lines > 0) { // Show total NET before discount