2
0
forked from Wavyzz/dolibarr

Fix: A better fix for default vat with 2 countries in EEC when customer nature is unknown.

Fix: Regression in propal after renaming propalid into id
WARNING: Beta has started. Only fixes must be committed until a branch is created.
This commit is contained in:
Laurent Destailleur
2010-06-30 23:22:00 +00:00
parent 416e993ad6
commit e4d6124690
4 changed files with 44 additions and 43 deletions

View File

@@ -2586,35 +2586,29 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
// Si (vendeur et acheteur dans Communaute europeenne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par defaut=0 (La TVA doit etre paye par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de regle.
// Non gere
// LVM modif car BUG de non prise en compte 'naturel' de "Affilié à la TVA" et prise en compte 'trop forte' de Num TVA vide...
// Explication plus fine : l'information "Affilié à la TVA" n'est à utiliser que pour les tiers 'vendeur' (nous ou fournisseur)
// et non 'acheteur' (les 'prospects') comme on pourrait le penser.
// Il ne faut pas non plus que le non remplissage
// du champ du numéro de TVA Intra empêche la mise de la TVA à 0 lorsque l'on
// vend dans l'union européenne (en étant soi même dans l'union). En effet lorsque l'on
// crée la proposition on ne connait pas forcément cette information du prospect.
/*
// Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par defaut=TVA du produit vendu. Fin de regle
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra)
// Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = entreprise) alors TVA par defaut=0. Fin de regle
// Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = particulier) alors TVA par defaut=TVA du produit vendu. Fin de regle
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()))
{
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut determiner taux tva
return $taux_produit;
// Define if third party is treated as company of not when nature is unknown
$isacompany=empty($conf->global->MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES)?0:1; // 0 by default
if (! empty($societe_acheteuse->tva_intra)) $isacompany=1;
else if (! empty($societe_acheteuse->typent_code) && in_array($societe_acheteuse->typent_code,array('TE_PRIVATE'))) $isacompany=0;
else if (! empty($societe_acheteuse->typent_code) && in_array($societe_acheteuse->typent_code,array('TE_SMALL','TE_MEDIUM','TE_LARGE'))) $isacompany=1;
if ($isacompany)
{
return 0;
}
else
{
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
if (strlen($taux_produit) == 0) return -1; // Si taux produit = '', on ne peut determiner taux tva
return $taux_produit;
}
}
// Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = entreprise avec num TVA intra) alors TVA par defaut=0. Fin de regle
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra)
{
return 0;
}
*/
if ($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC())
{
return 0;
}
// Fin LVM Modif
// Sinon la TVA proposee par defaut=0. Fin de regle.
// Rem: Cela signifie qu'au moins un des 2 est hors Communaute europeenne et que le pays differe
return 0;