Beispiel #1
0
 /**
  * Mage_Sales_Model_Quote_Address caches items after each collectTotals call. Some extensions calls collectTotals
  * after adding new item to quote in observers. So we need clear this cache before adding new item to quote.
  */
 private function clearQuoteItemsCache()
 {
     foreach ($this->quote->getAllAddresses() as $address) {
         $address->unsetData('cached_items_all');
         $address->unsetData('cached_items_nominal');
         $address->unsetData('cached_items_nonominal');
     }
 }
Beispiel #2
0
 public function testGetAllAddresses()
 {
     $id = 1;
     $this->quoteAddressCollectionMock->expects($this->once())->method('setQuoteFilter')->with($id)->will($this->returnSelf());
     $this->quoteAddressMock->expects($this->once())->method('isDeleted')->will($this->returnValue(false));
     $iterator = new \ArrayIterator([$this->quoteAddressMock]);
     $this->quoteAddressCollectionMock->expects($this->any())->method('getIterator')->will($this->returnValue($iterator));
     $this->quote->setId($id);
     $result = $this->quote->getAllAddresses();
     $this->assertEquals([$this->quoteAddressMock], $result);
 }
Beispiel #3
0
 /**
  * Adds minimal tax information to the "total" data structure
  *
  * @param \Magento\Quote\Model\Quote $quote
  * @param Address\Total $total
  * @return null
  */
 protected function enhanceTotalData(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
 {
     $taxAmount = 0;
     $shippingTaxAmount = 0;
     $discountTaxCompensation = 0;
     $subtotalInclTax = $total->getSubtotalInclTax();
     $computeSubtotalInclTax = true;
     if ($total->getSubtotalInclTax() > 0) {
         $computeSubtotalInclTax = false;
     }
     /** @var \Magento\Quote\Model\Quote\Address $address */
     foreach ($quote->getAllAddresses() as $address) {
         $taxAmount += $address->getTaxAmount();
         $shippingTaxAmount += $address->getShippingTaxAmount();
         $discountTaxCompensation += $address->getDiscountTaxCompensationAmount();
         if ($computeSubtotalInclTax) {
             $subtotalInclTax += $address->getSubtotalInclTax();
         }
     }
     $total->setTaxAmount($taxAmount);
     $total->setShippingTaxAmount($shippingTaxAmount);
     $total->setDiscountTaxCompensationAmount($discountTaxCompensation);
     // accessed via 'discount_tax_compensation'
     $total->setSubtotalInclTax($subtotalInclTax);
     return;
 }
 /**
  * @param \Magento\Quote\Model\Quote $quote
  * @return $this
  */
 protected function _validateCouponCode(\Magento\Quote\Model\Quote $quote)
 {
     $code = $quote->getData('coupon_code');
     if (strlen($code)) {
         $addressHasCoupon = false;
         $addresses = $quote->getAllAddresses();
         if (count($addresses) > 0) {
             foreach ($addresses as $address) {
                 if ($address->hasCouponCode()) {
                     $addressHasCoupon = true;
                 }
             }
             if (!$addressHasCoupon) {
                 $quote->setCouponCode('');
             }
         }
     }
     return $this;
 }