public void Init()
        {
            instance     = new CatalogApi();
            testAccounts = new TestAccounts();
            var testAccount = testAccounts["US-Prod"];

            Configuration.Default.AccessToken = testAccount.AccessToken;

            try
            {
                var request =
                    new BatchUpsertCatalogObjectsRequest(
                        IdempotencyKey: Guid.NewGuid().ToString(),
                        Batches: new List <CatalogObjectBatch>()
                        );
                request.Batches.Add(new CatalogObjectBatch(Objects: OBJECTS));
                var response = instance.BatchUpsertCatalogObjects(request);
                idMap = response.IdMappings.ToDictionary(
                    keySelector: m => m.ClientObjectId,
                    elementSelector: m => m.ObjectId
                    );
            }
            catch (Exception ex)
            {
                Assert.Fail("Failed to build catalog objects. {0}", ex.ToString());
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
        public void TestBatchUpsertCatalogObjects()
        {
            var batches    = new List <CatalogObjectBatch>();
            int numObjects = 0;

            for (int batchNum = 0; batchNum < BATCH_NUMBER; batchNum++)
            {
                var objects = new List <CatalogObject>();

                for (int i = 0; i < CATALOG_PER_BATCH_NUMBER; i++)
                {
                    var itemId      = string.Format("#Item-{0}-{1}", batchNum, i);
                    var itemName    = string.Format("Item Name {0}-{1}", batchNum, i);
                    var variationId = string.Format("#ItemVariation-{0}-{1}", batchNum, i);
                    objects.Add(new CatalogObject(
                                    Type: TypeEnum.ITEM,
                                    Id: itemId,
                                    ItemData: new CatalogItem(
                                        Name: itemName,
                                        Variations: new List <CatalogObject>()
                    {
                        new CatalogObject(
                            Type: TypeEnum.ITEMVARIATION,
                            Id: variationId,
                            ItemVariationData: new CatalogItemVariation(
                                ItemId: itemId,
                                Name: "Regular",
                                PricingType: CatalogItemVariation.PricingTypeEnum.FIXEDPRICING,
                                PriceMoney: new Money(Amount: 100L, Currency: Money.CurrencyEnum.USD)
                                )
                            )
                    }
                                        )
                                    ));
                    numObjects++;
                }

                var batch = new CatalogObjectBatch(objects);
                batches.Add(batch);
            }

            var request = new BatchUpsertCatalogObjectsRequest(
                IdempotencyKey: Guid.NewGuid().ToString(),
                Batches: batches
                );
            var response = instance.BatchUpsertCatalogObjects(request);

            Assert.AreEqual(numObjects, response.Objects.Count);

            response.IdMappings.ForEach(m => idMap.Add(m.ClientObjectId, m.ObjectId));
        }
Exemple #5
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 #6
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);
                }
            }
        }