static public async Task FixLocations() { CatalogApi api = new CatalogApi(); string cursor = null; string[] types = { "MODIFIER_LIST", "ITEM", "MODIFIER", "CATEGORY", "DISCOUNT", "TAX", "ITEM_VARIATION" }; foreach (string type in types) { List <CatalogObjectBatch> batches = new List <CatalogObjectBatch>(); CatalogObjectBatch batch = new CatalogObjectBatch { Objects = new List <CatalogObject>() }; batches.Add(batch); do { ListCatalogResponse resp = await api.ListCatalogAsync(cursor, type); if (resp.Objects != null && resp.Objects.Count > 0) { batch.Objects.AddRange(resp.Objects.Where(o => o.PresentAtAllLocations == false)); } cursor = resp.Cursor; } while (cursor != null); foreach (CatalogObject obj in batch.Objects) { obj.PresentAtAllLocations = true; } BatchUpsertCatalogObjectsRequest body = new BatchUpsertCatalogObjectsRequest(Guid.NewGuid().ToString(), batches); BatchUpsertCatalogObjectsResponse response = await api.BatchUpsertCatalogObjectsAsync(body); } }
static public async Task PortCatagories() { List <ShopifySharp.CustomCollection> list = await Shopify.GetCollections(); List <CatalogObjectBatch> batches = new List <CatalogObjectBatch>(); CatalogObjectBatch batch = new CatalogObjectBatch { Objects = new List <CatalogObject>() }; batches.Add(batch); foreach (ShopifySharp.CustomCollection collection in list) { CatalogObject category = new CatalogObject( Type: "CATEGORY", Id: $"#{collection.Title}", PresentAtAllLocations: true, CategoryData: new CatalogCategory { Name = collection.Title } ); batch.Objects.Add(category); } CatalogApi api = new CatalogApi(); BatchUpsertCatalogObjectsRequest body = new BatchUpsertCatalogObjectsRequest(Guid.NewGuid().ToString(), batches); BatchUpsertCatalogObjectsResponse response = await api.BatchUpsertCatalogObjectsAsync(body); }
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); } } }