6 declare(strict_types=1);
30 if (!$this->_areAmountsValid) {
33 if (empty($this->_transferFlags[self::AMOUNT_SHIPPING])) {
37 if (empty($this->_transferFlags[self::AMOUNT_DISCOUNT])) {
41 return [self::AMOUNT_SUBTOTAL => $subtotal];
54 parent::_calculateCustomItemsSubtotal();
67 $areItemsValid =
false;
68 $this->_areAmountsValid =
false;
70 $referenceAmount = $this->_salesModel->getDataUsingMethod(
'base_grand_total');
74 $itemsSubtotal = $itemsSubtotal +
$i->getQty() *
$i->getAmount();
77 $sum = $itemsSubtotal + $this->
getTax();
79 if (empty($this->_transferFlags[self::AMOUNT_SHIPPING])) {
83 if (empty($this->_transferFlags[self::AMOUNT_DISCOUNT])) {
86 $this->_areAmountsValid = round($this->
getDiscount(), 4) < round($itemsSubtotal, 4);
88 $this->_areAmountsValid = $itemsSubtotal > 0.00001;
96 if (sprintf(
'%.4F', $sum) == sprintf(
'%.4F', $referenceAmount)) {
97 $areItemsValid =
true;
102 if (!$areItemsValid) {
103 $this->_salesModelItems = [];
104 $this->_customItems = [];
115 $this->_salesModelItems = [];
117 foreach ($this->_salesModel->getAllItems() as
$item) {
118 if (
$item->getParentItem()) {
123 $qty =
$item->getQty();
125 $subAggregatedLabel =
'';
130 $subAggregatedLabel =
' x' . $qty;
135 $itemBaseRowTotal =
$item->getOriginalItem()->getBaseRowTotal();
136 if (
$amount * $qty != $itemBaseRowTotal) {
137 $amount = (double)$itemBaseRowTotal;
138 $subAggregatedLabel =
' x' . $qty;
143 $item->getName() . $subAggregatedLabel,
149 $this->
addSubtotal($this->_salesModel->getBaseSubtotal());
150 $this->
addTax($this->_salesModel->getBaseTaxAmount());
151 $this->
addShipping($this->_salesModel->getBaseShippingAmount());
152 $this->
addDiscount(abs($this->_salesModel->getBaseDiscountAmount()));
180 $dataContainer = $salesEntity->getTaxContainer();
181 $this->
addTax((
double)$dataContainer->getBaseDiscountTaxCompensationAmount());
182 $this->
addTax((
double)$dataContainer->getBaseShippingDiscountTaxCompensationAmount());
192 foreach ($this->_customItems as
$item) {
193 if (
$item->getAmount() < 0) {
addShipping($shippingAmount)
_collectItemsAndAmounts()
_createItemFromData($name, $qty, $amount, $identifier=null)
addDiscount($discountAmount)
_importItemsFromSalesModel()
addSubtotal($subtotalAmount)
_calculateCustomItemsSubtotal()
_applyDiscountTaxCompensationWorkaround(\Magento\Payment\Model\Cart\SalesModel\SalesModelInterface $salesEntity)