diff --git a/ChangeLog b/ChangeLog index 33b29d6ea54..ba3a70749fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,8 +7,12 @@ English Dolibarr ChangeLog For users: - New: Add supplier ref on supplier orders. - New: Can export supplier orders. +- New: First feature to install external plugins from gui. +- New: Monaco is like France for default vat calculation For developers: +- A module can overwrite templates parts. +- Can add a link on title field of added dictionnary. ***** ChangeLog for 3.2 compared to 3.1 ***** diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0cbd3224ffc..14c511385f2 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2833,7 +2833,8 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) // Le test ci-dessus ne devrait pas etre necessaire. Me signaler l'exemple du cas juridique concerne si le test suivant n'est pas suffisant. // Si le (pays vendeur = pays acheteur) alors la TVA par defaut=TVA du produit vendu. Fin de regle. - if ($societe_vendeuse->country_code == $societe_acheteuse->country_code) // Warning ->country_code not always defined + if (($societe_vendeuse->country_code == $societe_acheteuse->country_code) + || (in_array($societe_vendeuse->country_code,array('FR,MC')) && in_array($societe_acheteuse->country_code,array('FR','MC')))) // Warning ->country_code not always defined { //print 'VATRULE 3'; return get_product_vat_for_country($idprod,$societe_vendeuse->country_code); diff --git a/test/phpunit/FunctionsTest.php b/test/phpunit/FunctionsTest.php index 2a81b2e6d4e..3b54935cf87 100755 --- a/test/phpunit/FunctionsTest.php +++ b/test/phpunit/FunctionsTest.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2010-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -379,14 +379,14 @@ class FunctionsTest extends PHPUnit_Framework_TestCase $this->savdb=$db; $arraytotest=array(0=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "')); - + $encoded=json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); $decoded=json_decode($encoded,true); //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); - + $encoded=dol_json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); @@ -394,5 +394,74 @@ class FunctionsTest extends PHPUnit_Framework_TestCase //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); } + + /** + * testGetDefaultTva + * + * @return void + */ + public function testGetDefaultTva() + { + global $conf,$user,$langs,$db; + $this->savconf=$conf; + $this->savuser=$user; + $this->savlangs=$langs; + $this->savdb=$db; + + $companyfrnovat=new Societe($db); + $companyfrnovat->country_code='FR'; + $companyfrnovat->tva_assuj=0; + + $companyfr=new Societe($db); + $companyfr->country_code='FR'; + $companyfr->tva_assuj=1; + + $companymo=new Societe($db); + $companymo->country_code='MC'; + $companymo->tva_assuj=1; + + $companyit=new Societe($db); + $companyit->country_code='IT'; + $companyit->tva_assuj=1; + $companyit->tva_intra='IT99999'; + + $notcompanyit=new Societe($db); + $notcompanyit->country_code='IT'; + $notcompanyit->tva_assuj=1; + $notcompanyit->tva_intra=''; + $notcompanyit->typent_code='TE_PRIVATE'; + + $companyus=new Societe($db); + $companyus->country_code='US'; + $companyus->tva_assuj=1; + $companyus->tva_intra=''; + + // Test RULE 1-2 + $vat=get_default_tva($companyfrnovat,$companymo,0); + $this->assertEquals(0,$vat); + + // Test RULE 3 (FR-FR) + $vat=get_default_tva($companyfr,$companyfr,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 3 (FR-MC) + $vat=get_default_tva($companyfr,$companymo,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 4 (FR-IT) + $vat=get_default_tva($companyfr,$companyit,0); + $this->assertEquals(0,$vat); + + // Test RULE 5 (FR-IT) + $vat=get_default_tva($companyfr,$notcompanyit,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 6 (FR-IT) + // Not tested + + // Test RULE 7 (FR-US) + $vat=get_default_tva($companyfr,$companyus,0); + $this->assertEquals(0,$vat); + } } ?> \ No newline at end of file