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; } }
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); }
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); }
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); } } }