diff --git a/htdocs/cashdesk/class/Facturation.class.php b/htdocs/cashdesk/class/Facturation.class.php index 3143805b860..240b32e34db 100644 --- a/htdocs/cashdesk/class/Facturation.class.php +++ b/htdocs/cashdesk/class/Facturation.class.php @@ -109,12 +109,14 @@ class Facturation $localtaxarray = getLocalTaxesFromRate($vatrowid, 0, $societe, $mysoc, 1); // Define part of HT, VAT, TTC - $resultarray=calcul_price_total($this->qte, $this->prix(), $this->remisePercent(), $vat_rate, 0, 0, 0, 'HT', $use_npr, $product->type, $mysoc, $locataxarray); + $resultarray=calcul_price_total($this->qte, $this->prix(), $this->remisePercent(), $vat_rate, -1, -1, 0, 'HT', $use_npr, $product->type, $mysoc, $localtaxarray); // Calcul du total ht sans remise $total_ht = $resultarray[0]; $total_vat = $resultarray[1]; $total_ttc = $resultarray[2]; + $total_localtax1 = $resultarray[9]; + $total_localtax2 = $resultarray[10]; // Calcul du montant de la remise if ($this->remisePercent()) @@ -134,7 +136,7 @@ class Facturation $newcartarray[$i]['label']=$product->label; $newcartarray[$i]['price']=$product->price; $newcartarray[$i]['price_ttc']=$product->price_ttc; - + if (! empty($conf->global->PRODUIT_MULTIPRICES)) { if (isset($product->multiprices[$societe->price_level])) @@ -151,6 +153,9 @@ class Facturation $newcartarray[$i]['remise']=price2num($montant_remise_ht); $newcartarray[$i]['total_ht']=price2num($total_ht,'MT'); $newcartarray[$i]['total_ttc']=price2num($total_ttc,'MT'); + $newcartarray[$i]['total_vat']=price2num($total_vat, 'MT'); + $newcartarray[$i]['total_localtax1']=price2num($total_localtax1, 'MT'); + $newcartarray[$i]['total_localtax2']=price2num($total_localtax2, 'MT'); $_SESSION['poscart']=$newcartarray; $this->raz(); @@ -204,12 +209,18 @@ class Facturation // Total HT $remise = $tab[$i]['remise']; $total_ht += ($tab[$i]['total_ht']); + $total_vat += ($tab[$i]['total_vat']); $total_ttc += ($tab[$i]['total_ttc']); + $total_localtax1 += ($tab[$i]['total_localtax1']); + $total_localtax2 += ($tab[$i]['total_localtax2']); } $this->prix_total_ttc = $total_ttc; $this->prix_total_ht = $total_ht; - + $this->prix_total_vat = $total_vat; + $this->prix_total_localtax1 = $total_localtax1; + $this->prix_total_localtax2 = $total_localtax2; + $this->montant_tva = $total_ttc - $total_ht; //print $this->prix_total_ttc.'eeee'; exit; } diff --git a/htdocs/cashdesk/validation_verif.php b/htdocs/cashdesk/validation_verif.php index cccccb1fdfe..afe73820568 100644 --- a/htdocs/cashdesk/validation_verif.php +++ b/htdocs/cashdesk/validation_verif.php @@ -158,45 +158,30 @@ switch ($action) // Get content of cart $tab_liste = $_SESSION['poscart']; - // Loop on each product + // Loop on each line into cart $tab_liste_size=count($tab_liste); - for ($i=0;$i < $tab_liste_size;$i++) + for ($i=0; $i < $tab_liste_size; $i++) { - // Recuperation de l'article - $product = new Product($db); - $product->fetch($tab_liste[$i]['fk_article']); - $ret=array('label'=>$product->label,'tva_tx'=>$product->tva_tx,'price'=>$product->price); - - if (! empty($conf->global->PRODUIT_MULTIPRICES)) - { - if (isset($product->multiprices[$societe->price_level])) - { - $ret['price'] = $product->multiprices[$societe->price_level]; - } - } - $tab_article = $ret; - - $res = $db->query('SELECT taux FROM '.MAIN_DB_PREFIX.'c_tva WHERE rowid = '.$tab_liste[$i]['fk_tva']); - $ret=array(); - $tab = $db->fetch_array($res); - foreach ( $tab as $cle => $valeur ) - { - $ret[$cle] = $valeur; - } - $tab_tva = $ret; + $tmp = getTaxesFromId($tab_liste[$i]['fk_tva']); + $vat_rate = $tmp['rate']; + $vat_npr = $tmp['npr']; $invoiceline=new FactureLigne($db); $invoiceline->fk_product=$tab_liste[$i]['fk_article']; - $invoiceline->desc=$tab_article['label']; - $invoiceline->tva_tx=empty($tab_tva['taux'])?0:$tab_tva['taux']; // works even if vat_rate is '' - //$invoiceline->tva_tx=$tab_tva['taux']; + $invoiceline->desc=$tab_liste[$i]['label']; $invoiceline->qty=$tab_liste[$i]['qte']; $invoiceline->remise_percent=$tab_liste[$i]['remise_percent']; - $invoiceline->price=$tab_article['price']; - $invoiceline->subprice=$tab_article['price']; + $invoiceline->price=$tab_liste[$i]['price']; + $invoiceline->subprice=$tab_liste[$i]['price']; + + $invoiceline->tva_tx=empty($vat_rate)?0:$vat_rate; // works even if vat_rate is '' + $invoiceline->info_bits=empty($vat_npr)?0:$vat_npr; + $invoiceline->total_ht=$tab_liste[$i]['total_ht']; $invoiceline->total_ttc=$tab_liste[$i]['total_ttc']; - $invoiceline->total_tva=($tab_liste[$i]['total_ttc']-$tab_liste[$i]['total_ht']); + $invoiceline->total_tva=$tab_liste[$i]['total_vat']; + $invoiceline->total_localtax1=$tab_liste[$i]['total_localtax1']; + $invoiceline->total_localtax2=$tab_liste[$i]['total_localtax2']; $invoice->lines[]=$invoiceline; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d45cdf45492..12c759a67d6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3646,8 +3646,7 @@ function get_localtax_by_third($local) * Get vat rate and npr from id. * You can call getLocalTaxesFromRate after to get other fields * - * @param string $vatrate VAT Rate. Value can be value or the string with code into parenthesis or rowid if $firstparamisid is 1. Example: '8.5' or '8.5 (8.5NPR)' or 123. - * @param int $usenpr Use npr + * @param int $vatrowid Line ID into vat rate table. * @return array array(localtax_type1(1-6 / 0 if not found), rate of localtax1, ...) */ function getTaxesFromId($vatrowid) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 52653fa7f4d..791e43c7496 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -40,8 +40,8 @@ * @param float $pu Unit price (HT or TTC selon price_base_type) * @param float $remise_percent_ligne Discount for line * @param float $txtva 0=do not apply standard tax, Vat rate=apply - * @param float $uselocaltax1_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty) - * @param float $uselocaltax2_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty) + * @param float $uselocaltax1_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1. + * @param float $uselocaltax2_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1. * @param float $remise_percent_global 0 * @param string $price_base_type HT=Unit price parameter is HT, TTC=Unit price parameter is TTC * @param int $info_bits Miscellaneous informations on line