/**
  * @param \SimpleXMLElement $product
  * @return ErpProductEntity
  */
 public static function createFromCatalogXmlResponse(\SimpleXMLElement $product)
 {
     $self = new self();
     $sku = isset($product->attributes()->ItemNo) ? (string) $product->attributes()->ItemNo : null;
     if (!$sku) {
         throw new \InvalidArgumentException('Invalid product downloaded from catalog');
     }
     $self->setSku($sku);
     $self->setTitle((string) $product->Description);
     $self->setLastUpdated(new \DateTime((string) $product->attributes()->LastUpdated));
     $self->setDescription((string) $product->Description);
     foreach ($product->SupplementalData as $data) {
         foreach ($data->attributes() as $k => $v) {
             switch ((string) $v) {
                 case 'webcategory':
                     $self->setCategory((string) $data);
                     break;
             }
         }
     }
     $self->setPrice((string) $product->Pricing->UnitPrice);
     $self->setQty((int) (string) $product->Availability->QtyAvailable);
     return $self;
 }
 /**
  * @param $product
  * @return ShopifyProductEntity
  */
 public static function createFromProductCreationResponse($product)
 {
     $self = new self();
     $self->setId($product['product']['id']);
     $self->setVariantId($product['product']['variants'][0]['id']);
     $self->setCreatedAt(new \DateTime());
     $self->setUpdatedAt(new \DateTime());
     $self->setSku($product['product']['variants'][0]['sku']);
     $self->setHandle($product['product']['handle']);
     return $self;
 }
 /**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['sku' => null, 'category' => null, 'sort_order' => null, 'item_ids' => [], 'counts' => []], $values);
     $message->setSku($values['sku']);
     $message->setCategory($values['category']);
     $message->setSortOrder($values['sort_order']);
     foreach ($values['item_ids'] as $item) {
         $message->addItemIds($item);
     }
     foreach ($values['counts'] as $item) {
         $message->addCounts($item);
     }
     return $message;
 }