private async Task <ShopifySharp.Product> UploadProduct(ShopifyProduct product)
 {
     try
     {
         var service         = new ShopifySharp.ProductService("https://*****:*****@amore-by-leva.myshopify.com", "1ea0b4f49ff131e180a2e7b7e5cba0d6");
         var productToUpload = new ShopifySharp.Product()
         {
             Title       = product.Title,
             ProductType = product.ProductType,
             Vendor      = "ASP.Net",
             BodyHtml    = "<b>Such a nice product for this price</b>",
         };
         if (product.Publish)
         {
             productToUpload.PublishedAt = DateTimeOffset.Now;
         }
         return(await service.CreateAsync(productToUpload, new ShopifySharp.ProductCreateOptions()
         {
             Published = product.Publish
         }));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemple #2
0
        static public async Task SetInventory(List <ShopifySharp.Product> products)
        {
            CatalogApi api    = new CatalogApi();
            V1ItemsApi v1api  = new V1ItemsApi();
            string     cursor = null;

            do
            {
                ListCatalogResponse resp = await api.ListCatalogAsync(cursor, "ITEM_VARIATION");

                foreach (CatalogObject obj in resp.Objects)
                {
                    long id = long.Parse(obj.ItemVariationData.UserData);
                    ShopifySharp.Product        prod    = products.FirstOrDefault(p => p.Variants.Any(v => v.Id == id));
                    ShopifySharp.ProductVariant variant = prod.Variants.FirstOrDefault(v => v.Id == id);
                    V1AdjustInventoryRequest    body    = new V1AdjustInventoryRequest(variant.InventoryQuantity, "MANUALADJUST", "From Shopify");
                    try
                    {
                        await v1api.AdjustInventoryAsync(obj.CatalogV1Ids[0].LocationId, obj.CatalogV1Ids[0]._CatalogV1Id, body);
                    }
                    catch (Exception)
                    {
                    }
                    //				obj.PresentAtAllLocations = true;
                }

                cursor = resp.Cursor;
            } while (cursor != null);
        }
Exemple #3
0
        static public async Task FixBarCodes(List <ShopifySharp.Product> products)
        {
            CatalogApi api    = new CatalogApi();
            string     cursor = null;
            List <CatalogObjectBatch> batches = new List <CatalogObjectBatch>();
            CatalogObjectBatch        batch   = new CatalogObjectBatch
            {
                Objects = new List <CatalogObject>()
            };

            batches.Add(batch);

            do
            {
                ListCatalogResponse resp = await api.ListCatalogAsync(cursor, "ITEM_VARIATION");

                if (resp.Objects != null && resp.Objects.Count > 0)
                {
                    batch.Objects.AddRange(resp.Objects);
                }
                cursor = resp.Cursor;
            } while (cursor != null);

            foreach (CatalogObject obj in batch.Objects)
            {
                long id = long.Parse(obj.ItemVariationData.UserData);
                ShopifySharp.Product        prod    = products.FirstOrDefault(p => p.Variants.Any(v => v.Id == id));
                ShopifySharp.ProductVariant variant = prod.Variants.FirstOrDefault(v => v.Id == id);

//				ShopifySharp.ProductVariant variant = products.Select(p => p.Variants.First(v => v.Id.ToString() == obj.ItemVariationData.UserData)).First();
                obj.ItemVariationData.Upc = variant.Barcode;
                obj.ItemVariationData.Sku = variant.Barcode;
//				obj.PresentAtAllLocations = true;
            }

            BatchUpsertCatalogObjectsRequest  body     = new BatchUpsertCatalogObjectsRequest(Guid.NewGuid().ToString(), batches);
            BatchUpsertCatalogObjectsResponse response = await api.BatchUpsertCatalogObjectsAsync(body);
        }
Exemple #4
0
        static public async Task PortItemsAsync2(string locationId)
        {
            List <ShopifySharp.Product> products = await Shopify.GetProductsAsync();

            List <CatalogObjectBatch> batches = new List <CatalogObjectBatch>();
            CatalogObjectBatch        batch   = new CatalogObjectBatch
            {
                Objects = new List <CatalogObject>()
            };

            batches.Add(batch);

            CatalogObject tax = new CatalogObject(
                "TAX",
                Id: $"#salestax",
                PresentAtAllLocations: true,
                TaxData: new CatalogTax
            {
                Name = "SalesTax",
                AppliesToCustomAmounts = true,
                CalculationPhase       = "SUBTOTALPHASE",
                Enabled       = true,
                InclusionType = "ADDITIVE",
                Percentage    = "8.9"
            }
                );

            CatalogObject employee = new CatalogObject(
                Type: "DISCOUNT",
                Id: $"#employee",
                PresentAtAllLocations: true,
                DiscountData: new CatalogDiscount
            {
                Name         = "Employee",
                DiscountType = "FIXEDPERCENTAGE",
                LabelColor   = "Red",
                PinRequired  = false,
                Percentage   = "40"
            }
                );

            batch.Objects.Add(tax);
            foreach (ShopifySharp.Product prod in products)
            {
                CatalogObject obj = new CatalogObject(
                    Type: "ITEM",
                    Id: $"#{prod.Title}",
                    PresentAtAllLocations: true,
                    ItemData: new CatalogItem
                {
                    Name = prod.Title,
                    //						Description = prod.,
                    //					CategoryId = "#Beverages",
                    TaxIds = new List <string>()
                    {
                        "#salestax"
                    },
                    Variations = new List <CatalogObject>()
                }
                    );
                foreach (ShopifySharp.ProductVariant variant in prod.Variants)
                {
                    CatalogObject vari = new CatalogObject
                                         (
                        Type: "ITEMVARIATION",
                        Id: $"#{prod.Title}-{variant.Title}",
                        PresentAtAllLocations: true,
                        ItemVariationData: new CatalogItemVariation()
                    {
                        UserData       = variant.Id.ToString(),
                        Upc            = variant.Barcode,
                        ItemId         = $"#{prod.Title}",
                        Name           = variant.Title,
                        TrackInventory = true,
                        PricingType    = "FIXEDPRICING",
                        PriceMoney     = new Money(
                            Amount: variant.Price.HasValue ? ((long?)(variant.Price.Value * 100L)) : null,
                            Currency: "USD"
                            )
                    }
                                         );
                    obj.ItemData.Variations.Add(vari);
                }
                batch.Objects.Add(obj);
            }

            CatalogApi api = new CatalogApi();

            BatchUpsertCatalogObjectsRequest  body     = new BatchUpsertCatalogObjectsRequest(Guid.NewGuid().ToString(), batches);
            BatchUpsertCatalogObjectsResponse response = await api.BatchUpsertCatalogObjectsAsync(body);

            foreach (CatalogObject item in response.Objects.Where(o => o.Type == "ITEM"))
            {
                if (!string.IsNullOrEmpty(item.ItemData.Variations?[0].ItemVariationData.UserData))
                {
                    long oldId = long.Parse(item.ItemData.Variations?[0].ItemVariationData.UserData);
                    ShopifySharp.Product prod = products.FirstOrDefault(p => p.Variants.Any(v => v.Id == oldId));

                    await ImageUploader.PortImage(locationId, item.Id, prod.Images.First().Src);
                }
            }
        }