Пример #1
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;
 }
Пример #2
0
 /**
  * Add tax totals information to address object
  *
  * @param \Magento\Quote\Model\Quote $quote
  * @param Address\Total $total
  * @return array|null
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
 {
     $totals = [];
     $store = $quote->getStore();
     $applied = $total->getAppliedTaxes();
     $amount = $total->getTaxAmount();
     $taxAmount = $amount + $total->getTotalAmount('discount_tax_compensation');
     $area = null;
     if ($this->_config->displayCartTaxWithGrandTotal($store) && $total->getGrandTotal()) {
         $area = 'taxes';
     }
     if ($amount != 0 || $this->_config->displayCartZeroTax($store)) {
         $totals[] = ['code' => $this->getCode(), 'title' => __('Tax'), 'full_info' => $applied ? $applied : [], 'value' => $amount, 'area' => $area];
     }
     /**
      * Modify subtotal
      */
     if ($this->_config->displayCartSubtotalBoth($store) || $this->_config->displayCartSubtotalInclTax($store)) {
         if ($total->getSubtotalInclTax() > 0) {
             $subtotalInclTax = $total->getSubtotalInclTax();
         } else {
             $subtotalInclTax = $total->getSubtotal() + $taxAmount - $total->getShippingTaxAmount();
         }
         $totals[] = ['code' => 'subtotal', 'title' => __('Subtotal'), 'value' => $subtotalInclTax, 'value_incl_tax' => $subtotalInclTax, 'value_excl_tax' => $total->getSubtotal()];
     }
     if (empty($totals)) {
         return null;
     }
     return $totals;
 }
Пример #3
0
 /**
  * Process row amount based on FPT total amount configuration setting
  *
  * @param   \Magento\Quote\Model\Quote\Address\Total $total
  * @param   float $rowValueExclTax
  * @param   float $baseRowValueExclTax
  * @param   float $rowValueInclTax
  * @param   float $baseRowValueInclTax
  * @return  $this
  */
 protected function processTotalAmount($total, $rowValueExclTax, $baseRowValueExclTax, $rowValueInclTax, $baseRowValueInclTax)
 {
     if (!$this->weeeData->isTaxable($this->_store)) {
         //Accumulate the values.  Will be used later in the 'weee tax' collector
         $this->weeeTotalExclTax += $this->priceCurrency->round($rowValueExclTax);
         $this->weeeBaseTotalExclTax += $this->priceCurrency->round($baseRowValueExclTax);
     }
     //This value is used to calculate shipping cost; it will be overridden by tax collector
     $total->setSubtotalInclTax($total->getSubtotalInclTax() + $this->priceCurrency->round($rowValueInclTax));
     $total->setBaseSubtotalInclTax($total->getBaseSubtotalInclTax() + $this->priceCurrency->round($baseRowValueInclTax));
     return $this;
 }
Пример #4
0
 /**
  * Process row amount based on FPT total amount configuration setting
  *
  * @param \Magento\Quote\Model\Quote\Address\Total $total
  * @param float $rowValueExclTax
  * @param float $baseRowValueExclTax
  * @param float $rowValueInclTax
  * @param float $baseRowValueInclTax
  * @return $this
  */
 protected function processTotalAmount($total, $rowValueExclTax, $baseRowValueExclTax, $rowValueInclTax, $baseRowValueInclTax)
 {
     if ($this->weeeData->includeInSubtotal($this->_store)) {
         $total->addTotalAmount('subtotal', $rowValueExclTax);
         $total->addBaseTotalAmount('subtotal', $baseRowValueExclTax);
     } else {
         $total->addTotalAmount('weee', $rowValueExclTax);
         $total->addBaseTotalAmount('weee', $baseRowValueExclTax);
     }
     $total->setSubtotalInclTax($total->getSubtotalInclTax() + $rowValueInclTax);
     $total->setBaseSubtotalInclTax($total->getBaseSubtotalInclTax() + $baseRowValueInclTax);
     return $this;
 }