From 2ab28d974fd6a3cc743cfb26f313950d9522875c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 15 Mar 2013 17:10:18 +0100 Subject: [PATCH] Fix: Use better test to show localtax to avoid problem when switching from different country. Perf: Can return all localtaxes in one call. --- htdocs/core/lib/functions.lib.php | 3 ++- .../commande/doc/pdf_einstein.modules.php | 19 +++++++---------- .../modules/facture/doc/pdf_crabe.modules.php | 21 +++++++------------ .../modules/propale/doc/pdf_azur.modules.php | 20 +++++++----------- 4 files changed, 25 insertions(+), 38 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index ab504a52b37..3dec3cecc7f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2785,7 +2785,7 @@ function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="") * Get type and rate of localtaxes for a particular vat rate/country fo thirdparty * * @param real $vatrate VAT Rate - * @param int $local Number of localtax (1 / 2) + * @param int $local Number of localtax (1 or 2, or 0 to return 1+2) * @param int $thirdparty company object * @return array array(Type of local tax (1 to 7 / 0 if not found), rate or amount of localtax) * @deprecated TODO We should remove this function by storing rate and type into detail lines. @@ -2808,6 +2808,7 @@ function getLocalTaxesFromRate($vatrate, $local, $thirdparty) $obj = $db->fetch_object($resql); if ($local == 1) return array($obj->localtax1_type, $obj->localtax1); elseif ($local == 2) return array($obj->localtax2_type, $obj->localtax2); + else return array($obj->localtax1_type, $obj->localtax1, $obj->localtax2_type, $obj->localtax2); } return 0; diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index ceccee1602c..ab84897a810 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -375,23 +375,18 @@ class pdf_einstein extends ModelePDFCommandes $vatrate=(string) $object->lines[$i]->tva_tx; // TODO : store local taxes types into object lines and remove this - $localtax1_array=getLocalTaxesFromRate($vatrate,1,$mysoc); - $localtax2_array=getLocalTaxesFromRate($vatrate,2,$mysoc); - if (empty($localtax1_type)) - $localtax1_type = $localtax1_array[0]; - if (empty($localtax2_type)) - $localtax2_type = $localtax2_array[0]; + $localtaxtmp_array=getLocalTaxesFromRate($vatrate,0,$mysoc); + if (! isset($localtax1_type)) $localtax1_type = $localtaxtmp_array[0]; + if (! isset($localtax2_type)) $localtax2_type = $localtaxtmp_array[2]; //end TODO // retrieve global local tax - if ($localtax1_type == '7') - $localtax1_rate = $localtax1_array[1]; - if ($localtax2_type == '7') - $localtax2_rate = $localtax2_array[1]; + if ($localtax1_type == '7') $localtax1_rate = $localtaxtmp_array[1]; + if ($localtax2_type == '7') $localtax2_rate = $localtaxtmp_array[3]; - if ($localtax1ligne != 0 || $localtax1_type == '7') + if ($localtax1_type && ($localtax1ligne != 0 || $localtax1_type == '7')) $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; - if ($localtax2ligne != 0 || $localtax2_type == '7') + if ($localtax2_type && ($localtax2ligne != 0 || $localtax2_type == '7')) $this->localtax2[$localtax2_type][$localtax2_rate]+=$localtax2ligne; if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*'; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index fa8a13353fd..b9492ac3b72 100755 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -377,23 +377,18 @@ class pdf_crabe extends ModelePDFFactures $vatrate=(string) $object->lines[$i]->tva_tx; // TODO : store local taxes types into object lines and remove this - $localtax1_array=getLocalTaxesFromRate($vatrate,1,$mysoc); - $localtax2_array=getLocalTaxesFromRate($vatrate,2,$mysoc); - if (empty($localtax1_type)) - $localtax1_type = $localtax1_array[0]; - if (empty($localtax2_type)) - $localtax2_type = $localtax2_array[0]; + $localtaxtmp_array=getLocalTaxesFromRate($vatrate,0,$mysoc); + if (! isset($localtax1_type)) $localtax1_type = $localtaxtmp_array[0]; + if (! isset($localtax2_type)) $localtax2_type = $localtaxtmp_array[2]; //end TODO - + // retrieve global local tax - if ($localtax1_type == '7') - $localtax1_rate = $localtax1_array[1]; - if ($localtax2_type == '7') - $localtax2_rate = $localtax2_array[1]; + if ($localtax1_type == '7') $localtax1_rate = $localtaxtmp_array[1]; + if ($localtax2_type == '7') $localtax2_rate = $localtaxtmp_array[3]; - if ($localtax1ligne != 0 || $localtax1_type == '7') + if ($localtax1_type && ($localtax1ligne != 0 || $localtax1_type == '7')) $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; - if ($localtax2ligne != 0 || $localtax2_type == '7') + if ($localtax2_type && ($localtax2ligne != 0 || $localtax2_type == '7')) $this->localtax2[$localtax2_type][$localtax2_rate]+=$localtax2ligne; if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*'; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 134c95e9a1e..0a0555df6a4 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -371,24 +371,20 @@ class pdf_azur extends ModelePDFPropales if ($object->remise_percent) $localtax2ligne-=($localtax2ligne*$object->remise_percent)/100; $vatrate=(string) $object->lines[$i]->tva_tx; + // TODO : store local taxes types into object lines and remove this - $localtax1_array=getLocalTaxesFromRate($vatrate,1,$mysoc); - $localtax2_array=getLocalTaxesFromRate($vatrate,2,$mysoc); - if (empty($localtax1_type)) - $localtax1_type = $localtax1_array[0]; - if (empty($localtax2_type)) - $localtax2_type = $localtax2_array[0]; + $localtaxtmp_array=getLocalTaxesFromRate($vatrate,0,$mysoc); + if (! isset($localtax1_type)) $localtax1_type = $localtaxtmp_array[0]; + if (! isset($localtax2_type)) $localtax2_type = $localtaxtmp_array[2]; //end TODO // retrieve global local tax - if ($localtax1_type == '7') - $localtax1_rate = $localtax1_array[1]; - if ($localtax2_type == '7') - $localtax2_rate = $localtax2_array[1]; + if ($localtax1_type == '7') $localtax1_rate = $localtaxtmp_array[1]; + if ($localtax2_type == '7') $localtax2_rate = $localtaxtmp_array[3]; - if ($localtax1ligne != 0 || $localtax1_type == '7') + if ($localtax1_type && ($localtax1ligne != 0 || $localtax1_type == '7')) $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; - if ($localtax2ligne != 0 || $localtax2_type == '7') + if ($localtax2_type && ($localtax2ligne != 0 || $localtax2_type == '7')) $this->localtax2[$localtax2_type][$localtax2_rate]+=$localtax2ligne; if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*';