From e4d6124690331e58ab1c051e94e84aa023f050fb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 30 Jun 2010 23:22:00 +0000 Subject: [PATCH] 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. --- htdocs/comm/propal.php | 27 +++++++++++--------- htdocs/comm/propal/contact.php | 2 ++ htdocs/lib/functions.lib.php | 46 +++++++++++++++------------------- htdocs/lib/security.lib.php | 12 +++++---- 4 files changed, 44 insertions(+), 43 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index f8b16d04816..21a65fa03b1 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -231,18 +231,18 @@ if ($_POST['action'] == 'addmilestone') { $propal = new Propal($db); $propal->fetch($_GET["id"]); - + $milestone_error=0; - + if ($_POST['milestone_label'] == $langs->trans('Label') || $_POST['milestone_desc'] == $langs->trans('Description')) { $milestone_error++; $mesg = '
'.$langs->trans("ErrorMilestone").'
'; } - else + else { $milestone = new Milestone($db); - + $milestone->label = $_POST['milestone_label']; $milestone->description = $_POST['milestone_desc']; $milestone->elementtype = $propal->element; @@ -1651,7 +1651,8 @@ if ($id > 0 || ! empty($ref)) print '
rowid.'" method="POST">'; print ''; print ''; - print ''; + print ''; + print ''; print ''; print ''; print ''; // ancre pour retourner sur la ligne @@ -1727,14 +1728,14 @@ if ($id > 0 || ! empty($ref)) if ($propal->statut == 0 && $user->rights->propale->creer && $_GET["action"] <> 'editline') { $var=true; - + if ($conf->milestone->enabled) { formAddMilestone($propal); - + $var=!$var; } - + if ($conf->global->PRODUIT_USE_MARKUP) $colspan = 'colspan="2"'; print ''; print ''; @@ -1748,9 +1749,10 @@ if ($id > 0 || ! empty($ref)) print "\n"; // Add free products/services form - print ''; + print "\n".''; print ''; print ''; + print ''; print '\n"; print ''; @@ -1772,7 +1774,7 @@ if ($id > 0 || ! empty($ref)) print ''; } print ''; - + print ''; if ($societe->tva_assuj == "0") print '0'; @@ -1785,7 +1787,7 @@ if ($id > 0 || ! empty($ref)) print ''; print ''; - print '
'; + print ''."\n"; // Ajout de produits/services predefinis if ($conf->product->enabled || $conf->service->enabled) @@ -1814,9 +1816,10 @@ if ($id > 0 || ! empty($ref)) print ''.$langs->trans('ReductionShort').''; print ' '; print ''; - print '
'; + print "\n".''; print ''; print ''; + print ''; $var=!$var; diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php index 820edca454c..e7e19ad818b 100644 --- a/htdocs/comm/propal/contact.php +++ b/htdocs/comm/propal/contact.php @@ -234,6 +234,7 @@ if ($id > 0 || ! empty($ref)) $var = false; print ''; + print ''; print ''; print ''; print ''; @@ -265,6 +266,7 @@ if ($id > 0 || ! empty($ref)) print ''; print ''; print ''; + print ''; print ''; // Ligne ajout pour contact externe diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 9acc7958892..771f471dae2 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -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; diff --git a/htdocs/lib/security.lib.php b/htdocs/lib/security.lib.php index f57fb524a01..d08b93a31ca 100644 --- a/htdocs/lib/security.lib.php +++ b/htdocs/lib/security.lib.php @@ -159,12 +159,14 @@ function dol_loginfunction($langs,$conf,$mysoc) $select_entity=''; if (! empty($conf->global->MAIN_MODULE_MULTICOMPANY)) { - require_once(DOL_DOCUMENT_ROOT.'/multicompany/class/multicompany.class.php'); + $res=@include_once(DOL_DOCUMENT_ROOT.'/multicompany/class/multicompany.class.php'); + if ($res) + { + $mc = new Multicompany($db); + $mc->getEntities(0,1); - $mc = new Multicompany($db); - $mc->getEntities(0,1); - - $select_entity=$mc->select_entities($mc->entities,$lastentity,'tabindex="3"'); + $select_entity=$mc->select_entities($mc->entities,$lastentity,'tabindex="3"'); + } } // Security graphical code