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 ]); } }