コード例 #1
0
 public function testCalculateWithTaxInPrice()
 {
     $mockItem = $this->getMockItem();
     $mockItem->expects($this->atLeastOnce())->method('getIsTaxIncluded')->will($this->returnValue(true));
     $this->mockConfig->expects($this->atLeastOnce())->method('crossBorderTradeEnabled')->will($this->returnValue(false));
     $this->mockConfig->expects($this->atLeastOnce())->method('applyTaxAfterDiscount')->will($this->returnValue(true));
     $this->mockCalculationTool->expects($this->atLeastOnce())->method('getRate')->with($this->addressRateRequest)->will($this->returnValue(self::RATE));
     $this->mockCalculationTool->expects($this->atLeastOnce())->method('getStoreRate')->with($this->addressRateRequest, self::STORE_ID)->will($this->returnValue(self::STORE_RATE));
     $this->mockCalculationTool->expects($this->atLeastOnce())->method('getAppliedRates')->withAnyParameters()->will($this->returnValue([]));
     $this->assertSame($this->taxDetailsItem, $this->model->calculate($mockItem, self::QUANTITY));
     $this->assertSame(self::CODE, $this->taxDetailsItem->getCode());
     $this->assertSame(self::TYPE, $this->taxDetailsItem->getType());
     $this->assertSame(self::ROW_TAX_ROUNDED, $this->taxDetailsItem->getRowTax());
     $this->assertEquals(self::PRICE_INCL_TAX_ROUNDED, $this->taxDetailsItem->getPriceInclTax());
     $this->assertSame($this->taxDetailsItem, $this->model->calculate($mockItem, self::QUANTITY, false));
     $this->assertSame(self::CODE, $this->taxDetailsItem->getCode());
     $this->assertSame(self::TYPE, $this->taxDetailsItem->getType());
     $this->assertSame(self::ROW_TAX, $this->taxDetailsItem->getRowTax());
     $this->assertEquals(self::PRICE_INCL_TAX, $this->taxDetailsItem->getPriceInclTax());
 }
コード例 #2
0
 /**
  * Update tax related fields for quote item
  *
  * @param AbstractItem $quoteItem
  * @param TaxDetailsItemInterface $itemTaxDetails
  * @param TaxDetailsItemInterface $baseItemTaxDetails
  * @param Store $store
  * @return $this
  */
 public function updateItemTaxInfo($quoteItem, $itemTaxDetails, $baseItemTaxDetails, $store)
 {
     //The price should be base price
     $quoteItem->setPrice($baseItemTaxDetails->getPrice());
     $quoteItem->setConvertedPrice($itemTaxDetails->getPrice());
     $quoteItem->setPriceInclTax($itemTaxDetails->getPriceInclTax());
     $quoteItem->setRowTotal($itemTaxDetails->getRowTotal());
     $quoteItem->setRowTotalInclTax($itemTaxDetails->getRowTotalInclTax());
     $quoteItem->setTaxAmount($itemTaxDetails->getRowTax());
     $quoteItem->setTaxPercent($itemTaxDetails->getTaxPercent());
     $quoteItem->setDiscountTaxCompensationAmount($itemTaxDetails->getDiscountTaxCompensationAmount());
     $quoteItem->setBasePrice($baseItemTaxDetails->getPrice());
     $quoteItem->setBasePriceInclTax($baseItemTaxDetails->getPriceInclTax());
     $quoteItem->setBaseRowTotal($baseItemTaxDetails->getRowTotal());
     $quoteItem->setBaseRowTotalInclTax($baseItemTaxDetails->getRowTotalInclTax());
     $quoteItem->setBaseTaxAmount($baseItemTaxDetails->getRowTax());
     $quoteItem->setTaxPercent($baseItemTaxDetails->getTaxPercent());
     $quoteItem->setBaseDiscountTaxCompensationAmount($baseItemTaxDetails->getDiscountTaxCompensationAmount());
     //Set discount calculation price, this may be needed by discount collector
     if ($this->_config->discountTax($store)) {
         $quoteItem->setDiscountCalculationPrice($itemTaxDetails->getPriceInclTax());
         $quoteItem->setBaseDiscountCalculationPrice($baseItemTaxDetails->getPriceInclTax());
     } else {
         $quoteItem->setDiscountCalculationPrice($itemTaxDetails->getPrice());
         $quoteItem->setBaseDiscountCalculationPrice($baseItemTaxDetails->getPrice());
     }
     return $this;
 }