Ejemplo n.º 1
0
 /**
  * 	Add line into array products
  *	$this->client doit etre charge
  *
  * 	@param  int		$idproduct       	Product Id to add
  * 	@param  int		$qty             	Quantity
  * 	@param  int		$remise_percent  	Discount effected on Product
  *  @return	int							<0 if KO, >0 if OK
  *
  *	TODO	Remplacer les appels a cette fonction par generation objet Ligne
  *			insere dans tableau $this->products
  */
 function add_product($idproduct, $qty, $remise_percent = 0)
 {
     global $conf, $mysoc;
     if (!$qty) {
         $qty = 1;
     }
     dol_syslog(get_class($this) . "::add_product {$idproduct}, {$qty}, {$remise_percent}");
     if ($idproduct > 0) {
         $prod = new Product($this->db);
         $prod->fetch($idproduct);
         $productdesc = $prod->description;
         $tva_tx = get_default_tva($mysoc, $this->client, $prod->id);
         // local taxes
         $localtax1_tx = get_default_localtax($mysoc, $this->client, 1, $prod->tva_tx);
         $localtax2_tx = get_default_localtax($mysoc, $this->client, 2, $prod->tva_tx);
         // multiprix
         if ($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) {
             $price = $prod->multiprices[$this->client->price_level];
         } else {
             $price = $prod->price;
         }
         $line = new PropaleLigne($this->db);
         $line->fk_product = $idproduct;
         $line->desc = $productdesc;
         $line->qty = $qty;
         $line->subprice = $price;
         $line->remise_percent = $remise_percent;
         $line->tva_tx = $tva_tx;
         $this->lines[] = $line;
     }
 }
Ejemplo n.º 2
0
 /**
  * testGetDefaultTva
  *
  * @return	void
  */
 public function testGetDefaultLocalTax()
 {
     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;
     $companyfrnovat->localtax1_assuj = 0;
     $companyfrnovat->localtax2_assuj = 0;
     $companyes = new Societe($db);
     $companyes->country_code = 'ES';
     $companyes->tva_assuj = 1;
     $companyes->localtax1_assuj = 1;
     $companyes->localtax2_assuj = 1;
     $companymc = new Societe($db);
     $companymc->country_code = 'MC';
     $companymc->tva_assuj = 1;
     $companymc->localtax1_assuj = 0;
     $companymc->localtax2_assuj = 0;
     $companyit = new Societe($db);
     $companyit->country_code = 'IT';
     $companyit->tva_assuj = 1;
     $companyit->tva_intra = 'IT99999';
     $companyit->localtax1_assuj = 0;
     $companyit->localtax2_assuj = 0;
     $notcompanyit = new Societe($db);
     $notcompanyit->country_code = 'IT';
     $notcompanyit->tva_assuj = 1;
     $notcompanyit->tva_intra = '';
     $notcompanyit->typent_code = 'TE_PRIVATE';
     $notcompanyit->localtax1_assuj = 0;
     $notcompanyit->localtax2_assuj = 0;
     $companyus = new Societe($db);
     $companyus->country_code = 'US';
     $companyus->tva_assuj = 1;
     $companyus->tva_intra = '';
     $companyus->localtax1_assuj = 0;
     $companyus->localtax2_assuj = 0;
     // Test RULE FR-MC
     $vat1 = get_default_localtax($companyfrnovat, $companymc, 1, 0);
     $vat2 = get_default_localtax($companyfrnovat, $companymc, 2, 0);
     $this->assertEquals(0, $vat1);
     $this->assertEquals(0, $vat2);
     // Test RULE ES-ES
     $vat1 = get_default_localtax($companyes, $companyes, 1, 0);
     $vat2 = get_default_localtax($companyes, $companyes, 2, 0);
     $this->assertEquals(5.2, $vat1);
     $this->assertEquals(-19, $vat2);
     // Test RULE ES-IT
     $vat1 = get_default_localtax($companyes, $companyit, 1, 0);
     $vat2 = get_default_localtax($companyes, $companyit, 2, 0);
     $this->assertEquals(0, $vat1);
     $this->assertEquals(0, $vat2);
     // Test RULE ES-IT
     $vat1 = get_default_localtax($companyes, $notcompanyit, 1, 0);
     $vat2 = get_default_localtax($companyes, $notcompanyit, 2, 0);
     $this->assertEquals(0, $vat1);
     $this->assertEquals(0, $vat2);
     // Test RULE FR-IT
     // Not tested
     // Test RULE ES-US
     $vat1 = get_default_localtax($companyes, $companyus, 1, 0);
     $vat2 = get_default_localtax($companyes, $companyus, 2, 0);
     $this->assertEquals(0, $vat1);
     $this->assertEquals(0, $vat2);
 }