public function testTaxDetailsItemMultipleTaxes() { $appliedTaxDataArray = ['tax_rate_key' => '77', 'percent' => 0.0925, 'amount' => 0.82, 'rates' => [self::$travisCtyRateObjectDataArray, self::$utopiaCtyRateObjectDataArray, self::$noTaxRateObjectDataArray]]; $taxDetailsItemDataArray = ['code' => 'QWERTY123', 'type' => 'product', 'tax_percent' => 0.0925, 'price' => 4.99, 'price_incl_tax' => 5.45, 'row_total' => 4.99, 'row_tax' => 0.64, 'taxable_amount' => 4.99, 'discount_amount' => 0.0, 'discount_tax_compensation_amount' => 0.0, 'applied_taxes' => [$appliedTaxDataArray]]; $taxDetailsItemObjectFromArray = $this->taxDetailsItemBuilder->populateWithArray($taxDetailsItemDataArray)->create(); $taxDetailsItemObjectFromObject = $this->taxDetailsItemBuilder->populate($taxDetailsItemObjectFromArray)->create(); $this->assertEquals($taxDetailsItemDataArray, $taxDetailsItemObjectFromArray->__toArray()); $this->assertEquals($taxDetailsItemDataArray, $taxDetailsItemObjectFromObject->__toArray()); $this->assertEquals($taxDetailsItemObjectFromArray, $taxDetailsItemObjectFromObject); }
/** * Callback function that creates a tax details item with applied taxes from a quote details item for testing. * * @param QuoteDetailsItem $item * @return Data\TaxDetails\Item */ public function createTaxDetailsItemWithAppliedTaxes(QuoteDetailsItem $item) { $appliedTaxRateBuilder = $this->taxDetailsBuilder->getAppliedTaxBuilder(); $taxRateBuilder = $appliedTaxRateBuilder->getAppliedTaxRateBuilder(); $rate = $taxRateBuilder->setPercent(self::TAX)->setCode('TAX')->setTitle('Tax')->create(); $appliedTaxes = $appliedTaxRateBuilder->setAmount($item->getUnitPrice() * self::TAX)->setTaxRateKey('TAX_RATE')->setPercent(self::TAX)->setRates([$rate])->create(); return $this->taxDetailsItemBuilder->populate($this->createTaxDetailsItem($item))->setAppliedTaxes([$appliedTaxes])->create(); }