From 1cf3422e05ae4f426e6730794eca54451ca2a158 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Aug 2020 01:56:42 +0200 Subject: [PATCH] FIX Bad adress of vendor in PDF for PDF of supplier payment FIX dol_convertToWord() Bad conversion of number into a string --- htdocs/core/lib/functionsnumtoword.lib.php | 15 ++++++--- .../doc/pdf_standard.modules.php | 17 +++++----- htdocs/langs/en_US/main.lang | 33 +++++++++++++++++++ 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/htdocs/core/lib/functionsnumtoword.lib.php b/htdocs/core/lib/functionsnumtoword.lib.php index 26db2bbec90..401e97e1de4 100644 --- a/htdocs/core/lib/functionsnumtoword.lib.php +++ b/htdocs/core/lib/functionsnumtoword.lib.php @@ -24,20 +24,20 @@ /** - * Function to return number in text. + * Function to return a number into a text. * May use module NUMBERWORDS if found. * - * @param float $num Number to convert + * @param float $num Number to convert (must be a numeric value, like reported by price2num()) * @param Translate $langs Language * @param boolean $currency 0=number to translate | 1=currency to translate - * @param boolean $centimes 0=no centimes | 1=centimes to translate + * @param boolean $centimes 0=no cents/centimes | 1=there is cents/centimes to translate * @return string|false Text of the number */ function dol_convertToWord($num, $langs, $currency = false, $centimes = false) { global $conf; - $num = str_replace(array(',', ' '), '', trim($num)); + //$num = str_replace(array(',', ' '), '', trim($num)); This should be useless since $num MUST be a php numeric value if (!$num) { return false; } @@ -56,6 +56,7 @@ function dol_convertToWord($num, $langs, $currency = false, $centimes = false) $concatWords = $langs->getLabelFromNumber($num, $type); return $concatWords; } else { + $TNum = explode('.', $num); $num = (int) $TNum[0]; $words = array(); @@ -140,7 +141,11 @@ function dol_convertToWord($num, $langs, $currency = false, $centimes = false) // If we need to write cents call again this function for cents if (!empty($TNum[1])) { if (!empty($currency)) $concatWords .= ' '.$langs->transnoentities('and'); - $concatWords .= ' '.dol_convertToWord($TNum[1], $langs, $currency, true); + + $decimalpart = $TNum[1]; + $decimalpart = preg_replace('/0+$/', '', $decimalpart); + + $concatWords .= ' '.dol_convertToWord($decimalpart, $langs, '', true); if (!empty($currency)) $concatWords .= ' '.$langs->transnoentities('centimes'); } return $concatWords; diff --git a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php index 0ad8b391faf..58ef22172bf 100644 --- a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php @@ -223,7 +223,7 @@ class pdf_standard extends ModelePDFSuppliersPayments } } - $total = $object->montant; + $total = $object->amount; // Definition of $dir and $file if ($object->specimen) @@ -550,12 +550,12 @@ class pdf_standard extends ModelePDFSuppliersPayments // Total payments $pdf->SetXY($this->page_largeur - $this->marge_droite - 50, $posy); - $pdf->MultiCell(50, 4, price($object->montant), 0, 'R', 1); + $pdf->MultiCell(50, 4, price($object->amount), 0, 'R', 1); $posy += 20; // translate amount $currency = $conf->currency; - $translateinletter = strtoupper(dol_convertToWord($object->montant, $outputlangs, $currency)); + $translateinletter = strtoupper(dol_convertToWord($object->amount, $outputlangs, $currency)); $pdf->SetXY($this->marge_gauche + 50, $posy); $pdf->MultiCell(90, 8, $translateinletter, 0, 'L', 1); $posy += 8; @@ -565,10 +565,9 @@ class pdf_standard extends ModelePDFSuppliersPayments $pdf->MultiCell(150, 4, $object->thirdparty->nom, 0, 'L', 1); $pdf->SetXY($this->page_largeur - $this->marge_droite - 30, $posy); - $pdf->MultiCell(35, 4, str_pad(price($object->montant).' '.$currency, 18, '*', STR_PAD_LEFT), 0, 'R', 1); + $pdf->MultiCell(35, 4, str_pad(price($object->amount).' '.$currency, 18, '*', STR_PAD_LEFT), 0, 'R', 1); $posy += 10; - // City $pdf->SetXY($this->page_largeur - $this->marge_droite - 30, $posy); $pdf->MultiCell(150, 4, $mysoc->town, 0, 'L', 1); @@ -608,9 +607,9 @@ class pdf_standard extends ModelePDFSuppliersPayments $pdf->SetTextColor(0, 0, 0); $pdf->SetFont('', '', $default_font_size - 2); - $titre = strtoupper($mysoc->town).', le '.date("d").' '.$outputlangs->transnoentitiesnoconv(date("F")).' '.date("Y"); + /*$titre = strtoupper($mysoc->town).' - '.dol_print_date(dol_now(), 'day', 'tzserver', $outputlangs); $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 3) - 60, $tab_top - 6); - $pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre); + $pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre);*/ $titre = $outputlangs->transnoentities("AmountInCurrency", $outputlangs->transnoentitiesnoconv("Currency".$currency)); $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 3), $tab_top); @@ -774,7 +773,9 @@ class pdf_standard extends ModelePDFSuppliersPayments $carac_client_name = pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client = pdf_build_address($outputlangs, $this->emetteur, $mysoc, ((!empty($object->contact)) ? $object->contact : null), $usecontact, 'target', $object); + $usecontact = 0; + + $carac_client = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, ((!empty($object->contact)) ? $object->contact : null), $usecontact, 'target', $object); // Show recipient $widthrecbox = 90; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index f87f3a277de..ce9e5b6264e 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -941,6 +941,39 @@ ShortThursday=T ShortFriday=F ShortSaturday=S ShortSunday=S +one=one +two=two +three=three +four=four +five=five +six=six +seven=seven +eight=eight +nine=nine +ten=ten +eleven=eleven +twelve=twelve +thirteen=thirdteen +fourteen=fourteen +fifteen=fifteen +sixteen=sixteen +seventeen=seventeen +eighteen=eighteen +nineteen=nineteen +twenty=twenty +thirty=thirty +forty=forty +fifty=fifty +sixty=sixty +seventy=seventy +eighty=eighty +ninety=ninety +hundred=hundred +thousand=thousand +million=million +billion=billion +trillion=trillion +quadrillion=quadrillion SelectMailModel=Select an email template SetRef=Set ref Select2ResultFoundUseArrows=Some results found. Use arrows to select.