123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Order\Payment\Operations;
- use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
- use Magento\Sales\Api\Data\OrderInterface;
- use Magento\Sales\Api\Data\OrderPaymentInterface;
- use Magento\Sales\Model\Order\Invoice;
- use Magento\Sales\Model\Order\Payment\State\CommandInterface;
- use Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface;
- use Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface;
- /**
- * Class AbstractOperation
- */
- abstract class AbstractOperation
- {
- /**
- * @var CommandInterface
- */
- protected $stateCommand;
- /**
- * @var BuilderInterface
- */
- protected $transactionBuilder;
- /**
- * @var ManagerInterface
- */
- protected $transactionManager;
- /**
- * @var EventManagerInterface
- */
- protected $eventManager;
- /**
- * @param CommandInterface $stateCommand
- * @param BuilderInterface $transactionBuilder
- * @param ManagerInterface $transactionManager
- * @param EventManagerInterface $eventManager
- */
- public function __construct(
- CommandInterface $stateCommand,
- BuilderInterface $transactionBuilder,
- ManagerInterface $transactionManager,
- EventManagerInterface $eventManager
- ) {
- $this->stateCommand = $stateCommand;
- $this->transactionBuilder = $transactionBuilder;
- $this->transactionManager = $transactionManager;
- $this->eventManager = $eventManager;
- }
- /**
- * Create new invoice with maximum qty for invoice for each item
- * register this invoice and capture
- *
- * @param OrderPaymentInterface $payment
- * @return Invoice
- */
- protected function invoice(OrderPaymentInterface $payment)
- {
- /** @var Invoice $invoice */
- $invoice = $payment->getOrder()->prepareInvoice();
- $invoice->register();
- if ($payment->getMethodInstance()->canCapture()) {
- $invoice->capture();
- }
- $payment->getOrder()->addRelatedObject($invoice);
- return $invoice;
- }
- /**
- * Totals updater utility method
- * Updates self totals by keys in data array('key' => $delta)
- *
- * @param OrderPaymentInterface $payment
- * @param array $data
- * @return void
- */
- protected function updateTotals(OrderPaymentInterface $payment, $data)
- {
- foreach ($data as $key => $amount) {
- if (null !== $amount) {
- $was = $payment->getDataUsingMethod($key);
- $payment->setDataUsingMethod($key, $was + $amount);
- }
- }
- }
- /**
- * Return invoice model for transaction
- *
- * @param OrderInterface $order
- * @param string $transactionId
- * @return false|Invoice
- */
- protected function getInvoiceForTransactionId(OrderInterface $order, $transactionId)
- {
- foreach ($order->getInvoiceCollection() as $invoice) {
- if ($invoice->getTransactionId() == $transactionId) {
- $invoice->load($invoice->getId());
- // to make sure all data will properly load (maybe not required)
- return $invoice;
- }
- }
- foreach ($order->getInvoiceCollection() as $invoice) {
- if ($invoice->getState() == \Magento\Sales\Model\Order\Invoice::STATE_OPEN
- && $invoice->load($invoice->getId())
- ) {
- $invoice->setTransactionId($transactionId);
- return $invoice;
- }
- }
- return false;
- }
- }
|