/** * 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; } }
/** * 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); }