Пример #1
0
 /**
  * @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;
 }