Esempio n. 1
0
 /// <summary>
 /// 移除商品Sku
 /// </summary>
 /// <param name="skuId">商品Sku id</param>
 internal void RemoveSku(int skuId)
 {
     if (Skus.ContainsKey(skuId))
     {
         Skus.Remove(skuId);
     }
 }
        async Task ExecuteLoadItemsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Skus.Clear();
                var result = await PosSDK.CallAPI <ListResult <Sku> >("/catalog/search-skus");

                Skus.ReplaceRange(result.Result.Items);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                MessagingCenter.Send(new MessagingCenterAlert
                {
                    Title   = "Error",
                    Message = "Unable to load items.",
                    Cancel  = "OK"
                }, "message");
            }
            finally
            {
                IsBusy = false;
            }
        }
Esempio n. 3
0
        public void ShouldCheckoutNothing()
        {
            var a = new Sku {
                ItemName = "A", Price = 5
            };
            var b = new Sku {
                ItemName = "B", Price = 3
            };
            var offers = new List <Pricing> {
                new Pricing {
                    Condition = new List <SkuUnits> {
                        new SkuUnits {
                            Sku = a, Units = 2
                        }, new SkuUnits {
                            Sku = b, Units = 1
                        }
                    }
                }
            };
            var skus = new Skus();

            skus.AddOrUpdate(a);
            skus.AddOrUpdate(b);
            var emptyBasket = new List <(Sku sku, int items)>();
            var kart        = new Kart();
            var sut         = new Checkout(skus, offers);

            foreach (var i in emptyBasket)
            {
                kart = sut.Scan(kart, i.sku, i.items);
            }

            kart.Total.ShouldBe(0m);
        }
Esempio n. 4
0
        //Método responsável por Atualizar quantidade em estoque por produto
        public async Task <HttpResponseMessage> AtualizarQuantidadeEstoque(string _skuId, int _onHand)
        {
            Log log = new Log();

            try
            {
                log.WriteLogEstoque("Atualizando quantidade em estoque para o Item " + _skuId);

                UpdateInventory updateInventory = new UpdateInventory();
                List <Skus>     listSku         = new List <Skus>();
                Skus            sku             = new Skus();

                sku.IdSku    = _skuId;
                sku.Quantity = _onHand;

                listSku.Add(sku);

                //updateInventory.SkuList = listSku;

                string jsonUpdateInventory = JsonUtil.ConvertToJsonString(listSku);

                string uri = "api/Stock";

                HttpResponseMessage response = await BuildClient().PutAsync(uri, new StringContent(jsonUpdateInventory, UnicodeEncoding.UTF8, "application/json"));

                return(response);
            }
            catch (HttpRequestException e)
            {
                log.WriteLogEstoque("Exception AtualizarQuantidadeEstoque " + e.InnerException.Message);
                throw;
            }
        }
Esempio n. 5
0
        public void ShouldCheckout1A()
        {
            var a = new Sku {
                ItemName = "A", Price = 5
            };
            var b = new Sku {
                ItemName = "B", Price = 3
            };
            var offers = new List <Pricing> {
                new Pricing {
                    Condition = new List <SkuUnits> {
                        new SkuUnits {
                            Sku = a, Units = 2
                        }, new SkuUnits {
                            Sku = b, Units = 1
                        }
                    }
                }
            };
            var skus = new Skus();

            skus.AddOrUpdate(a);
            skus.AddOrUpdate(b);
            var basket = new List <(Sku sku, int items)>();

            basket.AddRange(new[]
Esempio n. 6
0
        protected double GetUnitPrice(string sku)
        {
            var price = Skus.GetPrice(sku);

            var markdown = Skus.GetMarkdown(sku);

            return(price - markdown);
        }
Esempio n. 7
0
 /// <summary>
 /// 获取商品零售价格 有多个sku时 返回价格区间
 /// </summary>
 /// <returns></returns>
 public string GetRetailPriceText()
 {
     if (Skus != null && Skus.Any())
     {
         var min = Skus.Min(x => x.RetailPrice);
         var max = Skus.Max(x => x.RetailPrice);
         return(min.ToString("F2") + "-" + max.ToString("F2"));
     }
     return(RetailPrice.ToString("F2"));
 }
Esempio n. 8
0
        public int ApplyDiscount(ref IList <Item> itemsLeft)
        {
            var itemDiscounted = itemsLeft.Where(item => Skus.Contains(item.Sku)).OrderByDescending(item => item.Price).Take(MatchingQuantity).ToList();

            foreach (var item in itemDiscounted)
            {
                itemsLeft.Remove(item);
            }
            return(itemDiscounted.Sum(item => item.Price) - ForfaitPrice);
        }
Esempio n. 9
0
 public void Check()
 {
     (PaymentCompanyId <= 0).TrueThrow("下单输入参数发薪公司不能为空");
     (Remark.Length > 100).TrueThrow("备注不能大于100字");
     (OrderPriceSnap == null || !OrderPriceSnap.Any()).TrueThrow("价格快照不能为空");
     (Skus == null || !Skus.Any()).TrueThrow("订单商品不能为空");
     Skus.Any(p => p.Num <= 0 || p.JDSkuId <= 0).TrueThrow("订单商品或数量异常");
     Address.IsNullOrEmpty().TrueThrow("详细地址不能为空");
     Mobile.IsNullOrEmpty().TrueThrow("收货人手机号不能为空");
     Email.IsNullOrEmpty().TrueThrow("收货人EMail不能为空");
     NopOrderId.IsNullOrEmpty().TrueThrow("商城订单编号不能为空");
 }
Esempio n. 10
0
 /// <summary>
 /// 添加商品Sku
 /// </summary>
 /// <param name="skuId">商品Sku id</param>
 /// <param name="itemId">商品 id</param>
 /// <param name="quantity">添加数量</param>
 internal void AddSku(int skuId, int itemId, int quantity = 1)
 {
     if (Skus.ContainsKey(skuId))
     {
         Skus[skuId].Quantity += quantity;
     }
     else
     {
         Skus[skuId] = new Sku {
             Quantity = quantity, ItemId = itemId
         };
     }
 }
Esempio n. 11
0
        /// <summary>
        /// 通过商品ID来获取SKU(可传多项ID,不能超过40!)
        /// </summary>
        /// <param name="sessionKey"></param>
        /// <param name="ItemNumId"></param>
        /// <returns></returns>
        internal IList <Skus> GetItemSkus(string sessionKey, string ItemNumId)
        {
            IList <Skus>       list = new List <Skus>();
            Skus               sku;
            ITopClient         client = new DefaultTopClient(StaticSystemConfig.soft.ApiURL, StaticSystemConfig.soft.AppKey, StaticSystemConfig.soft.AppSecret, "json");
            ItemSkusGetRequest req    = new ItemSkusGetRequest();

            req.Fields = "properties_name,sku_spec_id,with_hold_quantity,sku_delivery_time,change_prop,outer_id,barcode,sku_id,iid,num_iid,properties,quantity,price,created,modified,status";
            if (string.IsNullOrEmpty(ItemNumId))
            {
                return(null);
            }
            req.NumIids = ItemNumId;
            ItemSkusGetResponse response = client.Execute(req, sessionKey);

            if (response.IsError)
            {
                return(null);
            }
            else
            {
                if (response.Skus != null)
                {
                    foreach (Top.Api.Domain.Sku item in response.Skus)
                    {
                        sku                  = new Skus();
                        sku.Barcode          = item.Barcode;
                        sku.ChangeProp       = item.ChangeProp;
                        sku.Created          = item.Created;
                        sku.Iid              = item.Iid;
                        sku.Modified         = item.Modified;
                        sku.NumIid           = item.NumIid;
                        sku.OuterId          = item.OuterId;
                        sku.Price            = item.Price;
                        sku.Properties       = item.Properties;
                        sku.PropertiesName   = item.PropertiesName;
                        sku.Quantity         = item.Quantity;
                        sku.SkuDeliveryTime  = item.SkuDeliveryTime;
                        sku.SkuId            = item.SkuId;
                        sku.SkuSpecId        = item.SkuSpecId;
                        sku.Status           = item.Status;
                        sku.WithHoldQuantity = item.WithHoldQuantity;
                        list.Add(sku);
                    }
                }
            }
            return(list);
        }
Esempio n. 12
0
 /// <summary>
 /// 设置商品Sku数量
 /// </summary>
 /// <param name="skuId">商品Sku id</param>
 /// <param name="itemId">商品 id</param>
 /// <param name="quantity">设置数量</param>
 internal void SetSkuQuantity(int skuId, int itemId, int quantity = 1)
 {
     if (quantity <= 1)
     {
         RemoveSku(skuId);
         return;
     }
     if (Skus.ContainsKey(skuId))
     {
         Skus[skuId].Quantity = quantity;
     }
     else
     {
         Skus[skuId] = new Sku {
             Quantity = quantity, ItemId = itemId
         };
     }
 }
Esempio n. 13
0
            /// <summary>
            /// 减少商品Sku
            /// </summary>
            /// <param name="skuId">商品Sku id</param>
            /// <param name="quantity">减少数量</param>
            internal void SubtractSku(int skuId, int quantity = 1)
            {
                if (!Skus.ContainsKey(skuId))
                {
                    return;
                }
                var q = Skus[skuId].Quantity;
                var v = q - quantity;

                if (v > 0)
                {
                    Skus[skuId].Quantity = v;
                }
                else
                {
                    Skus.Remove(skuId);
                }
            }
Esempio n. 14
0
        public JsonResult SveGoodsSetting(Skus skuitems)
        {
            tbClientUser clientuser = GetUser("UserInfo");
            IList <Item> listitem   = new List <Item>();
            IList <Skus> listsku    = new List <Skus>();

            try
            {
                listitem = goodsinfo.Getitem(clientuser.UserShops[0].SessionKey, skuitems.NumIid.ToString());
                listsku  = goodsinfo.GetItemSkus(clientuser.UserShops[0].SessionKey, skuitems.SkuId.ToString());
                BItems bi = new BItems();
                BSkus  bs = new BSkus();
                if (listitem != null)
                {
                    if (bi.GetItems(skuitems.NumIid.ToString()).Count() <= 0)
                    {
                        bi.AddItems(listitem[0]);
                    }
                }
                if (listsku != null)
                {
                    foreach (Skus item in listsku)
                    {
                        if (item.SkuId.Equals(skuitems.SkuId))
                        {
                            if (bs.GetSkus(skuitems.SkuId.ToString()).Count() <= 0)
                            {
                                bs.AddSkus(skuitems);
                            }
                            else
                            {
                                bs.UpdateSkus(skuitems);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(Json(new { Result = true }));
        }
Esempio n. 15
0
        protected double GetSalePriceForItem(string sku, double qty)
        {
            var price = GetUnitPrice(sku) * qty;

            var skuSpecial = Skus.GetSpecial(sku);

            if (skuSpecial != null && skuSpecial.Amount != -.01)
            {
                if (skuSpecial.NeedsEqualOrLesserPurchase)
                {
                    price = ProcessEqualOrLesserSpecial(price, qty, sku, skuSpecial);
                }
                else
                {
                    price = ProcessForEachSpecial(price, sku, skuSpecial);
                }
            }

            return(price);
        }
Esempio n. 16
0
 /// <summary>
 /// 获取商品价格 有多个sku时 返回价格区间
 /// </summary>
 /// <param name="platform">平台</param>
 /// <returns></returns>
 public string GetPriceText(Platform platform)
 {
     if (platform == Platform.Pc || platform == Platform.Wap)
     {
         if (Skus != null && Skus.Any())
         {
             var min = Skus.Min(x => x.Price);
             var max = Skus.Max(x => x.Price);
             return(min.ToString("F2") + "-" + max.ToString("F2"));
         }
         return(Price.ToString("F2"));
     }
     else if (platform == Platform.App)
     {
         if (Skus != null && Skus.Any())
         {
             var min = Skus.Min(x => x.AppPrice);
             var max = Skus.Max(x => x.AppPrice);
             return(min.ToString("F2") + "-" + max.ToString("F2"));
         }
         return(AppPrice.ToString("F2"));
     }
     return(string.Empty);
 }
Esempio n. 17
0
 public bool CanApply(IEnumerable <IItem> items, ICustomer customer)
 {
     return(Skus.All(s => items.Any(i => i.Sku == s)));
 }
Esempio n. 18
0
            public Shop GetShops()
            {
                var listVendor   = new Vendor().GetListVendor();
                var baseUrl      = Settings.PriceSettings.BaseURL;
                var list         = new List <Shop>();
                var listCategory = new CategoryB().GetListCategory().Select(x => x.Id).ToList <int>();
                var shop         = new Shop()
                {
                    Name       = Settings.PriceSettings.Name,
                    Company    = Settings.PriceSettings.CopanyName,
                    Url        = Settings.PriceSettings.URL,
                    Currencies = new Currencies()
                    {
                        Currency = new Currency()
                        {
                            Id = "UAH", Rate = "1"
                        }
                    },
                };

                var listAddParams  = new AddParam().GetListAddParam();
                var listAdd        = new Product().GetNameReplace();
                var listPictureAdd = new Picture().GetListPicture();

                foreach (var categoryId in listCategory)
                {
                    var ListCat    = new CategoryB().GetListcategoryToPrice(categoryId);
                    var categories = new List <Category>();
                    foreach (var cat in ListCat)
                    {
                        if (!listPictureAdd.Select(x => x.category).Contains(cat.Id))
                        {
                            continue;
                        }
                        if (cat.Parent_Id == 0)
                        {
                            categories.Add(new Category()
                            {
                                Id   = cat.Id.ToString(),
                                Text = cat.Name.ToString()
                            });
                        }
                        else
                        {
                            categories.Add(new Category()
                            {
                                Id       = cat.Id.ToString(),
                                Text     = cat.Name.ToString(),
                                ParentId = cat.Parent_Id.ToString()
                            });
                            var parent = new CategoryB().GetListcategoryToPrice(cat.Parent_Id);
                            categories.Add(new Category()
                            {
                                Id   = parent.FirstOrDefault().Id.ToString(),
                                Text = parent.FirstOrDefault().Name.ToString()
                            });
                        }
                    }

                    var listOffes = new List <Offer>();

                    var products = new Product().GetListProduct(categoryId);
                    if (products.Count() == 0)
                    {
                        continue;
                    }
                    foreach (var product in products)
                    {
                        if (!listPictureAdd.Where(x => x.link.Contains(product.Url)).Any())
                        {
                            continue;
                        }

                        var skuses = new Skus().GetListSkus(product.Id);

                        if (product.Images.Count() == 0)
                        {
                            continue;
                        }
                        foreach (var skus in skuses)
                        {
                            var parames     = new List <Param>();
                            var listParames = new Paramses().GetListParams(product.Id, skus.Id);
                            foreach (var item in listParames.Where(x => x.Status == true))
                            {
                                parames.Add(
                                    new Param()
                                {
                                    Name = item.Name.ToString(),
                                    Text = item.Text.ToString()
                                });
                            }

                            foreach (var item in listAddParams.Where(z => z.GroupId == categoryId))
                            {
                                parames.Add(
                                    new Param()
                                {
                                    Name = item.ParamName.ToString(),
                                    Text = item.ParamValue.ToString()
                                });
                            }

                            var additname = string.Empty;

                            if (product.addparam > 0)
                            {
                                var addName = listAdd[product.addparam];
                                var add     = parames.Where(x => x.Name == addName).FirstOrDefault();

                                if (add != null)
                                {
                                    additname = " " + add.Text.ToString();
                                }
                            }

                            if (skus.Price == 0)
                            {
                                skus.Price = product.Price;
                            }
                            if (skus.Price == 0)
                            {
                                continue;
                            }

                            var    markup      = listParames.Where(x => x.Status == false).FirstOrDefault()?.Text;
                            double markupValue = 0;
                            var    resM        = double.TryParse(markup, out markupValue);
                            if (resM && markupValue > 0)
                            {
                                markupValue = markupValue / 100;
                                skus.Price  = Math.Round(skus.Price + skus.Price * markupValue, 0);
                            }


                            listOffes.Add(new Offer()
                            {
                                Id             = skus.Id.ToString(),
                                Available      = "true",
                                Url            = baseUrl + product.Url.ToString(),
                                Price          = skus.Price.ToString(),
                                Price_old      = (skus.OldPrice == 0) ? null : skus.OldPrice.ToString(),
                                CurrencyId     = "UAH",
                                CategoryId     = categoryId.ToString(),
                                Picture        = product.Images,
                                Vendor         = listVendor.Where(x => x.Product_id == skus.Product_id)?.FirstOrDefault()?.Name ?? string.Empty,
                                Stock_quantity = product.Count.ToString(),
                                Name           = product.Name.ToString() + additname.ToString(),
                                Description    = product.Description.ToString(),
                                Param          = parames
                            });
                        }
                    }
                    if (listOffes.Count() == 0)
                    {
                        continue;
                    }

                    if (shop.Categories == null)
                    {
                        shop.Categories = new Categories()
                        {
                            Category = categories
                        }
                    }
                    ;
                    else
                    {
                        shop.Categories.Category.AddRange(categories);
                    }

                    if (shop.Offers == null)
                    {
                        shop.Offers = new Offers()
                        {
                            Offer = listOffes
                        }
                    }
                    ;
                    else
                    {
                        shop.Offers.Offer.AddRange(listOffes);
                    }
                    shop.Offers.Offer = shop.Offers.Offer.GroupBy(x => x.Id).Select(x => new Offer
                    {
                        Id             = x.Key,
                        Available      = x.Select(z => z.Available).FirstOrDefault().ToString(),
                        CategoryId     = x.Select(z => z.CategoryId).FirstOrDefault().ToString(),
                        CurrencyId     = x.Select(z => z.CurrencyId).FirstOrDefault().ToString(),
                        Description    = x.Select(z => z.Description).FirstOrDefault().ToString(),
                        Name           = x.Select(z => z.Name).FirstOrDefault().ToString(),
                        Param          = x.Select(z => z.Param).FirstOrDefault(),
                        Picture        = x.Select(z => z.Picture).FirstOrDefault(),
                        Price          = x.Select(z => z.Price).FirstOrDefault(),
                        Price_old      = x.Select(z => z.Price_old).FirstOrDefault(),
                        Stock_quantity = x.Select(z => z.Stock_quantity).FirstOrDefault(),
                        Url            = x.Select(z => z.Url).FirstOrDefault(),
                        Vendor         = x.Select(z => z.Vendor).FirstOrDefault().ToString()
                    }).ToList();

                    var listName = shop.Offers.Offer.GroupBy(x => x.Name);
                    foreach (var item in listName)
                    {
                        if (item.Count() > 1)
                        {
                            Settings.Dublicates.Add(string.Concat(item.Select(x => x.CategoryId).FirstOrDefault(), item.Select(x => x.Url).FirstOrDefault()));
                        }
                    }

                    foreach (var item in shop.Offers.Offer)
                    {
                        if (item.Description.Contains(" href"))
                        {
                            Settings.Urls.Add(item.Url);
                        }
                        if (item.Vendor == string.Empty)
                        {
                            Settings.Errores.Add(string.Format("Не указана торговая марка {0}, {1}", item.Id, string.Empty));
                        }
                    }
                }
                if (shop.Categories == null)
                {
                    return(shop);
                }
                shop.Categories.Category = shop.Categories.Category.GroupBy(x => x.Id).Select(x => new Category {
                    Id = x.Key, ParentId = x.Select(z => z.ParentId).FirstOrDefault(), Text = x.Select(z => z.Text).FirstOrDefault()
                }).ToList();
                return(shop);
            }
Esempio n. 19
0
 public bool CanApplyTo(IList <Item> itemsLeft)
 {
     return(itemsLeft.Count(item => Skus.Contains(item.Sku)) >= MatchingQuantity);
 }
Esempio n. 20
0
 public bool AppliesTo(char x)
 {
     return(Skus.Contains(x));
 }
Esempio n. 21
0
 /// <summary>
 /// 添加一行数据
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool AddSkus(Skus model)
 {
     return(SetSkus.AddSkus(model));
 }
Esempio n. 22
0
 /// <summary>
 /// 更新一行数据
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool UpdateSkus(Skus model)
 {
     return(SetSkus.UpdateSkus(model));
 }
 /// <summary>Returns an enumerator that iterates through the resources in this response.</summary>
 public scg::IEnumerator <Sku> GetEnumerator() => Skus.GetEnumerator();
Esempio n. 24
0
        internal int CalculateQualifyingQuota(Dictionary <char, int> skuCounts)
        {
            int qualifyingItemCount = Skus.Sum(sku => skuCounts[sku]);

            return(qualifyingItemCount / QualifyingCount);
        }