mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
New: Add hidden option MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS
This commit is contained in:
parent
9b36df85dd
commit
4cf84c4ea8
|
|
@ -56,6 +56,7 @@ For users:
|
|||
- New: [ task #1060 ] Register fields localtax(1|2)_type into details tables.
|
||||
- New: [ task #923 ] Localtax support for ODT templates.
|
||||
- New: [ task #90 ] Barcode search.
|
||||
- New: Add hidden option MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS.
|
||||
|
||||
For translators:
|
||||
- Qual: Normalized sort order of all languages files with english reference files.
|
||||
|
|
|
|||
|
|
@ -3370,12 +3370,14 @@ class Form
|
|||
// Comme ils sont tries par ordre croissant, dernier = plus eleve = taux courant
|
||||
if ($defaulttx < 0 || dol_strlen($defaulttx) == 0)
|
||||
{
|
||||
$defaulttx = $this->cache_vatrates[$num-1]['txtva'];
|
||||
if (empty($conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS)) $defaulttx = $this->cache_vatrates[$num-1]['txtva'];
|
||||
else $defaulttx=$conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS;
|
||||
}
|
||||
|
||||
// Disabled if seller is not subject to VAT
|
||||
$disabled=false; $title='';
|
||||
if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0") {
|
||||
if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0")
|
||||
{
|
||||
$title=' title="'.$langs->trans('VATIsNotUsed').'"';
|
||||
$disabled=true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2908,17 +2908,15 @@ function getLocalTaxesFromRate($vatrate, $local, $thirdparty)
|
|||
*
|
||||
* @param int $idprod Id of product or 0 if not a predefined product
|
||||
* @param Societe $thirdparty_seller Thirdparty with a ->country_code defined (FR, US, IT, ...)
|
||||
* @param int $idprodfournprice Id product_fournisseur_price (for supplier order/invoice)
|
||||
* @param int $idprodfournprice Id product_fournisseur_price (for "supplier" order/invoice)
|
||||
* @return int <0 if KO, Vat rate if OK
|
||||
* @see get_product_localtax_for_country
|
||||
*/
|
||||
function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournprice=0)
|
||||
{
|
||||
global $db,$mysoc;
|
||||
global $db,$conf,$mysoc;
|
||||
|
||||
if (! class_exists('Product')) {
|
||||
require DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
||||
}
|
||||
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
||||
|
||||
$ret=0;
|
||||
$found=0;
|
||||
|
|
@ -2931,7 +2929,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
|||
|
||||
if ($mysoc->country_code == $thirdparty_seller->country_code) // If selling country is ours
|
||||
{
|
||||
if ($idprodfournprice > 0) // We want vat for product for a supplier order or invoice
|
||||
if ($idprodfournprice > 0) // We want vat for product for a "supplier" order or invoice
|
||||
{
|
||||
$product->get_buyprice($idprodfournprice,0,0,0);
|
||||
$ret=$product->vatrate_supplier;
|
||||
|
|
@ -2952,23 +2950,28 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
|||
|
||||
if (! $found)
|
||||
{
|
||||
// If vat of product for the country not found or not defined, we return higher vat of country.
|
||||
$sql = "SELECT taux as vat_rate";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p";
|
||||
$sql.= " WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$thirdparty_seller->country_code."'";
|
||||
$sql.= " ORDER BY t.taux DESC, t.recuperableonly ASC";
|
||||
$sql.= $db->plimit(1);
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
if (empty($conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS))
|
||||
{
|
||||
$obj=$db->fetch_object($resql);
|
||||
if ($obj)
|
||||
// If vat of product for the country not found or not defined, we return higher vat of country.
|
||||
$sql = "SELECT taux as vat_rate";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p";
|
||||
$sql.= " WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$thirdparty_seller->country_code."'";
|
||||
$sql.= " ORDER BY t.taux DESC, t.recuperableonly ASC";
|
||||
$sql.= $db->plimit(1);
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$ret=$obj->vat_rate;
|
||||
$obj=$db->fetch_object($resql);
|
||||
if ($obj)
|
||||
{
|
||||
$ret=$obj->vat_rate;
|
||||
}
|
||||
$db->free($sql);
|
||||
}
|
||||
else dol_print_error($db);
|
||||
}
|
||||
else dol_print_error($db);
|
||||
else $ret=$conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS;
|
||||
}
|
||||
|
||||
dol_syslog("get_product_vat_for_country: ret=".$ret);
|
||||
|
|
|
|||
|
|
@ -893,7 +893,7 @@ class Product extends CommonObject
|
|||
|
||||
/**
|
||||
* Lit le prix pratique par un fournisseur
|
||||
* On renseigne le couple prodfournprice/qty ou le triplet qty/product_id/fourn_ref)
|
||||
* On renseigne le couple prodfournprice/qty ou le triplet qty/product_id/fourn_ref
|
||||
*
|
||||
* @param int $prodfournprice Id du tarif = rowid table product_fournisseur_price
|
||||
* @param double $qty Quantity asked
|
||||
|
|
@ -904,6 +904,8 @@ class Product extends CommonObject
|
|||
function get_buyprice($prodfournprice,$qty,$product_id=0,$fourn_ref=0)
|
||||
{
|
||||
$result = 0;
|
||||
|
||||
// We do select by searching with qty and prodfournprice
|
||||
$sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity,";
|
||||
$sql.= " pfp.fk_product, pfp.ref_fourn, pfp.fk_soc, pfp.tva_tx";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
|
||||
|
|
@ -915,7 +917,7 @@ class Product extends CommonObject
|
|||
if ($resql)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
if ($obj && $obj->quantity > 0)
|
||||
if ($obj && $obj->quantity > 0) // If found
|
||||
{
|
||||
$this->buyprice = $obj->price; // \deprecated
|
||||
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
||||
|
|
@ -926,7 +928,7 @@ class Product extends CommonObject
|
|||
}
|
||||
else
|
||||
{
|
||||
// On refait le meme select sur la ref et l'id du produit
|
||||
// We do same select again but searching with qty, ref and id product
|
||||
$sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity, pfp.fk_soc,";
|
||||
$sql.= " pfp.fk_product, pfp.ref_fourn, pfp.tva_tx";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
|
||||
|
|
@ -941,7 +943,7 @@ class Product extends CommonObject
|
|||
if ($resql)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
if ($obj && $obj->quantity > 0)
|
||||
if ($obj && $obj->quantity > 0) // If found
|
||||
{
|
||||
$this->buyprice = $obj->price; // \deprecated
|
||||
$this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id
|
||||
|
|
@ -952,7 +954,7 @@ class Product extends CommonObject
|
|||
}
|
||||
else
|
||||
{
|
||||
return -1; // Ce produit existe chez ce fournisseur mais qte insuffisante
|
||||
return -1; // Ce produit n'existe pas avec cette ref fournisseur ou existe mais qte insuffisante
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user