123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryShipping\Model;
- use Magento\InventorySourceDeductionApi\Model\SourceDeductionRequestInterface;
- use Magento\Sales\Model\Order\Shipment;
- use Magento\InventorySalesApi\Api\Data\SalesEventInterface;
- use Magento\InventorySalesApi\Api\Data\SalesEventInterfaceFactory;
- use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
- use Magento\InventorySalesApi\Api\Data\SalesChannelInterface;
- use Magento\InventorySourceDeductionApi\Model\SourceDeductionRequestInterfaceFactory;
- use Magento\Store\Api\WebsiteRepositoryInterface;
- class SourceDeductionRequestFromShipmentFactory
- {
- /**
- * @var SourceDeductionRequestInterfaceFactory
- */
- private $sourceDeductionRequestFactory;
- /**
- * @var SalesChannelInterfaceFactory
- */
- private $salesChannelFactory;
- /**
- * @var SalesEventInterfaceFactory
- */
- private $salesEventFactory;
- /**
- * @var WebsiteRepositoryInterface
- */
- private $websiteRepository;
- /**
- * @param SourceDeductionRequestInterfaceFactory $sourceDeductionRequestFactory
- * @param SalesChannelInterfaceFactory $salesChannelFactory
- * @param SalesEventInterfaceFactory $salesEventFactory
- * @param WebsiteRepositoryInterface $websiteRepository
- */
- public function __construct(
- SourceDeductionRequestInterfaceFactory $sourceDeductionRequestFactory,
- SalesChannelInterfaceFactory $salesChannelFactory,
- SalesEventInterfaceFactory $salesEventFactory,
- WebsiteRepositoryInterface $websiteRepository
- ) {
- $this->sourceDeductionRequestFactory = $sourceDeductionRequestFactory;
- $this->salesChannelFactory = $salesChannelFactory;
- $this->salesEventFactory = $salesEventFactory;
- $this->websiteRepository = $websiteRepository;
- }
- /**
- * @param Shipment $shipment
- * @param string $sourceCode
- * @param array $items
- * @return SourceDeductionRequestInterface
- */
- public function execute(
- Shipment $shipment,
- string $sourceCode,
- array $items
- ): SourceDeductionRequestInterface {
- $websiteId = $shipment->getOrder()->getStore()->getWebsiteId();
- $salesEvent = $this->salesEventFactory->create([
- 'type' => SalesEventInterface::EVENT_SHIPMENT_CREATED,
- 'objectType' => SalesEventInterface::OBJECT_TYPE_ORDER,
- 'objectId' => $shipment->getOrderId()
- ]);
- $websiteCode = $this->websiteRepository->getById($websiteId)->getCode();
- $salesChannel = $this->salesChannelFactory->create([
- 'data' => [
- 'type' => SalesChannelInterface::TYPE_WEBSITE,
- 'code' => $websiteCode
- ]
- ]);
- return $this->sourceDeductionRequestFactory->create([
- 'sourceCode' => $sourceCode,
- 'items' => $items,
- 'salesChannel' => $salesChannel,
- 'salesEvent' => $salesEvent
- ]);
- }
- }
|