/** * @param StoreEntity $store */ public function checkHandlingFeeProductAndCreateIt(StoreEntity $store) { try { if ($store->getShopifyHandlingFeeProductId()) { $this->shopifyClient->checkHandlingFeeProduct($store); } else { $erpProduct = ErpProductEntity::createHandlingFeeProduct(); $product = $this->shopifyClient->saveProduct($store, $erpProduct); $store->setShopifyHandlingFeeProductId($product->getVariantId()); $this->storeRepository->save($store); } } catch (NoShopifyProductFound $e) { //Add the handling fee product $erpProduct = ErpProductEntity::createHandlingFeeProduct(); $product = $this->shopifyClient->saveProduct($store, $erpProduct); $store->setShopifyHandlingFeeProductId($product->getVariantId()); $this->storeRepository->save($store); } }
/** * @param StoreEntity $store * @param CatalogEntity $catalog * @param ErpProductEntity $product */ public function getProductExtraInformation(StoreEntity $store, CatalogEntity $catalog, ErpProductEntity $product) { $request = $this->client->createRequest('GET', sprintf('%s/catalogs/%s/%s/all', $store->getErpUrl(), $catalog->getCatalogName(), $product->getSku()), ['auth' => [$store->getErpUsername(), $store->getErpPassword()]]); $response = $this->sendRequest($request)->xml(); ErpProductEntity::updateProduct($product, $response); }
/** * @param StoreEntity $store * @param ErpProductEntity $erpProduct * @param SkuToProductEntity $skuToProductEntity * @return mixed * @throws NoShopifyProductFound */ public function updateProduct(StoreEntity $store, ErpProductEntity $erpProduct, SkuToProductEntity $skuToProductEntity) { if (empty($skuToProductEntity->getVariantId())) { throw new \InvalidArgumentException(sprintf('Product needs a variant id before it can be updated: %s', $skuToProductEntity->getSku())); } $this->setSettings($store); $productData = ['id' => $skuToProductEntity->getShopifyProductId(), 'title' => $erpProduct->getTitle(), 'product_type' => $erpProduct->getCategory(), 'body_html' => $erpProduct->getFullDesription(), 'variants' => [['id' => $skuToProductEntity->getVariantId(), 'price' => $erpProduct->getPrice(), 'sku' => $erpProduct->getSku(), 'inventory_management' => $erpProduct->getStockManagement(), 'inventory_policy' => $erpProduct->getInventoryPolicy(), 'inventory_quantity' => $erpProduct->getQty()]]]; try { $response = $this->client->updateProduct(['id' => $skuToProductEntity->getShopifyProductId(), 'product' => $productData]); } catch (CommandClientException $e) { //if 404, Collection has already been deleted via shopify, lets carry on if ($e->getResponse()->getStatusCode() == '404') { throw new NoShopifyProductFound(sprintf('Product Id: %s cannot be found within shopify', $skuToProductEntity->getShopifyProductId())); } } return $response; }