diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8bef39525fc..4428fcd5192 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4221,25 +4221,26 @@ function getCurrencySymbol($currency_code) * * @param int $vatrate VAT Rate * @param int $number Number of localtax (1 / 2) - * @return int Type of local tax (1 to 7 / 0 if not found) + * @param int $thirdparty company object + * @return array array(Type of local tax (1 to 7 / 0 if not found), rate or amount of localtax) */ -function getTypeOfLocalTaxFromRate($vatrate, $number) +function getTypeOfLocalTaxFromRate($vatrate, $number, $thirdparty) { - global $db, $mysoc; - + global $db; + // Search local taxes - $sql = "SELECT t.localtax1_type, t.localtax2_type"; + $sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type"; $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; + $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$thirdparty->country_code."'"; $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; $resql=$db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); - if ($number == 1) return $obj->localtax1_type; - elseif ($number == 2) return $obj->localtax2_type; + if ($number == 1) return array($obj->localtax1_type, $obj->localtax1); + elseif ($number == 2) return array($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 4eb5800410e..2b32cc7732b 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -375,41 +375,19 @@ 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=getTypeOfLocalTaxFromRate($vatrate,1,$mysoc); + $localtax2_array=getTypeOfLocalTaxFromRate($vatrate,2,$mysoc); if (empty($localtax1_type)) - $localtax1_type=getTypeOfLocalTaxFromRate($vatrate,1); + $localtax1_type = $localtax1_array[0]; if (empty($localtax2_type)) - $localtax2_type=getTypeOfLocalTaxFromRate($vatrate,2); + $localtax2_type = $localtax2_array[0]; //end TODO - + // retrieve global local tax if ($localtax1_type == '7') - { - $sql = "SELECT t.localtax1"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax1_rate = $obj->localtax1; - } - } + $localtax1_rate = $localtax1_array[1]; if ($localtax2_type == '7') - { - $sql = "SELECT t.localtax2"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax2_rate = $obj->localtax2; - } - } + $localtax2_rate = $localtax2_array[1]; if ($localtax1ligne != 0 || $localtax1_type == '7') $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 09aa5dabaf1..eb4199649b4 100755 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -378,41 +378,19 @@ 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=getTypeOfLocalTaxFromRate($vatrate,1,$mysoc); + $localtax2_array=getTypeOfLocalTaxFromRate($vatrate,2,$mysoc); if (empty($localtax1_type)) - $localtax1_type=getTypeOfLocalTaxFromRate($vatrate,1); + $localtax1_type = $localtax1_array[0]; if (empty($localtax2_type)) - $localtax2_type=getTypeOfLocalTaxFromRate($vatrate,2); + $localtax2_type = $localtax2_array[0]; //end TODO - + // retrieve global local tax if ($localtax1_type == '7') - { - $sql = "SELECT t.localtax1"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax1_rate = $obj->localtax1; - } - } + $localtax1_rate = $localtax1_array[1]; if ($localtax2_type == '7') - { - $sql = "SELECT t.localtax2"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax2_rate = $obj->localtax2; - } - } + $localtax2_rate = $localtax2_array[1]; if ($localtax1ligne != 0 || $localtax1_type == '7') $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 430c6d8b258..3459b045b62 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -371,41 +371,19 @@ class pdf_azur extends ModelePDFPropales $vatrate=(string) $object->lines[$i]->tva_tx; // TODO : store local taxes types into object lines and remove this + $localtax1_array=getTypeOfLocalTaxFromRate($vatrate,1,$mysoc); + $localtax2_array=getTypeOfLocalTaxFromRate($vatrate,2,$mysoc); if (empty($localtax1_type)) - $localtax1_type=getTypeOfLocalTaxFromRate($vatrate,1); + $localtax1_type = $localtax1_array[0]; if (empty($localtax2_type)) - $localtax2_type=getTypeOfLocalTaxFromRate($vatrate,2); + $localtax2_type = $localtax2_array[0]; //end TODO // retrieve global local tax if ($localtax1_type == '7') - { - $sql = "SELECT t.localtax1"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax1_rate = $obj->localtax1; - } - } + $localtax1_rate = $localtax1_array[1]; if ($localtax2_type == '7') - { - $sql = "SELECT t.localtax2"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".$vatrate." AND t.active = 1"; - - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $localtax2_rate = $obj->localtax2; - } - } + $localtax2_rate = $localtax2_array[1]; if ($localtax1ligne != 0 || $localtax1_type == '7') $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne;