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