Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Shipping.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
12 
14 {
23  public function collect(
24  \Magento\Quote\Model\Quote $quote,
25  \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment,
26  \Magento\Quote\Model\Quote\Address\Total $total
27  ) {
28  $storeId = $quote->getStoreId();
29  $items = $shippingAssignment->getItems();
30  if (!$items) {
31  return $this;
32  }
33 
34  //Add shipping
35  $shippingDataObject = $this->getShippingDataObject($shippingAssignment, $total, false);
36  $baseShippingDataObject = $this->getShippingDataObject($shippingAssignment, $total, true);
37  if ($shippingDataObject == null || $baseShippingDataObject == null) {
38  return $this;
39  }
40 
41  $quoteDetails = $this->prepareQuoteDetails($shippingAssignment, [$shippingDataObject]);
42  $taxDetails = $this->taxCalculationService
43  ->calculateTax($quoteDetails, $storeId);
44  $taxDetailsItems = $taxDetails->getItems()[self::ITEM_CODE_SHIPPING];
45 
46  $baseQuoteDetails = $this->prepareQuoteDetails($shippingAssignment, [$baseShippingDataObject]);
47  $baseTaxDetails = $this->taxCalculationService
48  ->calculateTax($baseQuoteDetails, $storeId);
49  $baseTaxDetailsItems = $baseTaxDetails->getItems()[self::ITEM_CODE_SHIPPING];
50 
51  $quote->getShippingAddress()
52  ->setShippingAmount($taxDetailsItems->getRowTotal());
53  $quote->getShippingAddress()
54  ->setBaseShippingAmount($baseTaxDetailsItems->getRowTotal());
55 
57  $shippingAssignment,
58  $total,
59  $taxDetailsItems,
60  $baseTaxDetailsItems
61  );
62 
63  return $this;
64  }
65 
73  public function fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
74  {
75  if ($total->getShippingInclTax()) {
76  return [
77  'code' => 'shipping',
78  'shipping_incl_tax' => $total->getShippingInclTax()
79  ];
80  }
81  return null;
82  }
83 }
fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
Definition: Shipping.php:73
$quote
prepareQuoteDetails(ShippingAssignmentInterface $shippingAssignment, $itemDataObjects)
processShippingTaxInfo(ShippingAssignmentInterface $shippingAssignment, QuoteAddress\Total $total, $shippingTaxDetails, $baseShippingTaxDetails)
collect(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment, \Magento\Quote\Model\Quote\Address\Total $total)
Definition: Shipping.php:23
$items