/**
  * @param ErpShipmentEntity $erpShipment
  * @param ShopifyOrderEntity $shopifyOrder
  */
 public function setFulfilledItems(ErpShipmentEntity $erpShipment, ShopifyOrderEntity $shopifyOrder)
 {
     /** @var ErpOrderItemEntity $item */
     foreach ($erpShipment->getShipmentItems() as $item) {
         /** @var ShopifyOrderLineItemEntity $shopifyItem */
         foreach ($shopifyOrder->getItems() as $shopifyItem) {
             if ($item->getSku() == $shopifyItem->getSku()) {
                 $shopifyItem->setIsFulfilled(1);
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * @param StoreEntity $store
  * @param ErpOrderEntity $erpOrder
  * @return ErpShipmentEntity
  * @throws ErpShipmentNotFound
  */
 public function getShipment(StoreEntity $store, ErpOrderEntity $erpOrder)
 {
     $request = $this->client->createRequest('GET', sprintf('%s/shipments/?order=%s', $store->getErpUrl(), $erpOrder->getOrderId()), ['auth' => [$store->getErpUsername(), $store->getErpPassword()]]);
     try {
         $response = $this->sendRequest($request)->xml();
     } catch (\Exception $e) {
         throw new ErpShipmentNotFound(sprintf('Not shipment can be found with the order id %s', $erpOrder->getOrderId()));
     }
     return ErpShipmentEntity::createFromShipmentXMLObject($response);
 }
 /**
  * @param StoreEntity $store
  * @param ShopifyOrderEntity $shopifyOrder
  * @param ErpShipmentEntity $erpShipment
  * @throws \Exception
  */
 public function updateOrCreateFulfillments(StoreEntity $store, ShopifyOrderEntity $shopifyOrder, ErpShipmentEntity $erpShipment)
 {
     $this->setSettings($store);
     $fulFilledItems = [];
     /** @var ShopifyOrderLineItemEntity $item */
     foreach ($shopifyOrder->getItems() as $item) {
         if ($item->isFulfilled()) {
             $fulfilled = new \stdClass();
             $fulfilled->id = $item->getId();
             $fulFilledItems[] = $fulfilled;
         }
     }
     if ($erpShipment->getTrackingNumbers() && empty($fulFilledItems)) {
         throw new \Exception('Error: something is wrong here, got tracking numbers but no fulfilled items?');
     }
     $fulfillmentData = ['tracking_number' => $erpShipment->getTrackingNumbers(), 'line_items' => $fulFilledItems];
     if ($shopifyOrder->getFulfillmentId()) {
         $this->client->createFulfillment(['order_id' => $shopifyOrder->getId(), 'fulfillment' => $fulfillmentData]);
     } else {
         $this->client->updateFulfillment(['order_id' => $shopifyOrder->getId(), 'id' => $shopifyOrder->getFulfillmentId(), 'fulfillment' => $fulfillmentData]);
     }
 }