12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Order\Invoice\Total;
- /**
- * Order invoice shipping total calculation model
- *
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class Shipping extends AbstractTotal
- {
- /**
- * @param \Magento\Sales\Model\Order\Invoice $invoice
- * @return $this
- */
- public function collect(\Magento\Sales\Model\Order\Invoice $invoice)
- {
- $invoice->setShippingAmount(0);
- $invoice->setBaseShippingAmount(0);
- $orderShippingAmount = $invoice->getOrder()->getShippingAmount();
- $baseOrderShippingAmount = $invoice->getOrder()->getBaseShippingAmount();
- $shippingInclTax = $invoice->getOrder()->getShippingInclTax();
- $baseShippingInclTax = $invoice->getOrder()->getBaseShippingInclTax();
- if ($orderShippingAmount) {
- /**
- * Check shipping amount in previous invoices
- */
- foreach ($invoice->getOrder()->getInvoiceCollection() as $previousInvoice) {
- if ((double)$previousInvoice->getShippingAmount() && !$previousInvoice->isCanceled()) {
- return $this;
- }
- }
- $invoice->setShippingAmount($orderShippingAmount);
- $invoice->setBaseShippingAmount($baseOrderShippingAmount);
- $invoice->setShippingInclTax($shippingInclTax);
- $invoice->setBaseShippingInclTax($baseShippingInclTax);
- $invoice->setGrandTotal($invoice->getGrandTotal() + $orderShippingAmount);
- $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $baseOrderShippingAmount);
- }
- return $this;
- }
- }
|