Example #1
0
        private void BindFromDB()
        {
            try
            {
                var rep  = new SkuRepository();
                var skus = rep.Search(1, "");
                var dt   = new DataTable();
                dt.Columns.Add("Nome");
                dt.Columns.Add("Descricao");
                dt.Columns.Add("ProductCode");
                dt.Columns.Add("IsStockAvailable");
                dt.Columns.Add("Comission");
                dt.Columns.Add("SellingPrice");
                dt.Columns.Add("UnitPrice");

                DataRow dr;
                foreach (var p in skus)
                {
                    dr    = dt.NewRow();
                    dr[0] = p.Description;
                    dr[1] = p.Description;
                    dr[2] = p.SKU;
                    dr[3] = string.Empty;
                    dr[4] = string.Empty;
                    dr[5] = p.Valor;
                    dr[6] = p.Valor;
                    dt.Rows.Add(dr);
                }
                dgProdutos.DataSource = dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro");
            }
        }
Example #2
0
        /// <summary>
        /// 添加信息信息
        /// </summary>
        /// <param name="inputDtos">要添加的店铺信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> AddCartGoodses(params CartGoodsInputDto[] inputDtos)
        {
            CartGoodsRepository.UnitOfWork.TransactionEnabled = true;
            List <string> names = new List <string>();

            foreach (CartGoodsInputDto dto in inputDtos)
            {
                CartGoods cartGoods = dto.MapTo <CartGoods>();

                if (dto.GoodsId.HasValue && dto.GoodsId.Value > 0)
                {
                    Goods.Models.Goods goods = GoodsRepository.GetByKey(dto.GoodsId.Value);
                    if (goods == null)
                    {
                        throw new Exception("商品不存在");
                    }
                    cartGoods.Goods = goods;
                }

                if (dto.UserId.HasValue && dto.UserId.Value > 0)
                {
                    User user = UserRepository.GetByKey(dto.UserId.Value);
                    if (user == null)
                    {
                        throw new Exception("用户不存在");
                    }
                    cartGoods.User = user;
                }

                if (dto.SkuId.HasValue && dto.SkuId.Value > 0)
                {
                    Goods.Models.Sku sku = SkuRepository.GetByKey(dto.SkuId.Value);
                    if (sku == null)
                    {
                        throw new Exception("Sku不存在");
                    }
                    cartGoods.Sku = sku;
                }

                //判断商品的重复性,如果是相同商品相同规格只改变购物数量
                CartGoods repeatCartGoods = CartGoodsRepository.Entities.SingleOrDefault(cg => cg.User.Id == dto.UserId.Value && cg.Goods.Id == dto.GoodsId.Value && cg.Sku.Id == dto.SkuId.Value);
                if (repeatCartGoods == null)
                {
                    await CartGoodsRepository.InsertAsync(cartGoods);
                }
                else
                {
                    repeatCartGoods.BuyCount += dto.BuyCount;
                    await CartGoodsRepository.UpdateAsync(repeatCartGoods);
                }

                names.Add(cartGoods.Name);
            }

            return(await CartGoodsRepository.UnitOfWork.SaveChangesAsync() > 0
                            ? new OperationResult(OperationResultType.Success, $"“{names.ExpandAndToString()}”创建成功")
                            : OperationResult.NoChanged);
        }
        public ConfigurationViewModel()
        {
            _skuRepository = new SkuRepository();
            REM1           = new ObservableCollection <REM1>(FetchREM1());
            REM2           = new ObservableCollection <REM2>(FetchREM2());
            var seasonalData = _skuRepository.RetrieveQuery(SqlQueries.FetchSeasonalData).Tables;

            EuroPrice     = FetcEuroLabel();
            _latestSeason = GetSeasonalDataFor(seasonalData, "TOPPAGE");
            _bottomSeason = GetSeasonalDataFor(seasonalData, "BOTTOMPAGE");
            InitializeCommands();
        }
Example #4
0
        public List <Sales> GetSales(DataSet CordnersStock, List <SpecialPrice> specialPrices)
        {
            var sales = new List <Sales>();
            var euro  = new SkuRepository().RetrieveQuery(SqlQueries.FetchEUROPrice);

            foreach (var specialPrice in specialPrices)
            {
                var stocks = CordnersStock.Tables[0].Select($"NEWSTYLE = {specialPrice.sku}");

                foreach (DataRow dr in stocks)
                {
                    string rrp;
                    if (specialPrice.store_id == 2)
                    {
                        rrp = GenerateEuroPrice(Convert.ToDecimal(dr["SELL"].ToString()), Convert.ToDecimal(euro.Tables[0].Rows[0]["PRICE"]));
                    }
                    else
                    {
                        rrp = dr["SELL"].ToString();
                    }

                    sales.Add(new Sales()
                    {
                        MasterSupplier = dr["MasterSupplier"].ToString().Trim(),
                        Color          = dr["MasterColour"].ToString(),
                        Style          = dr["STYPE"].ToString(),
                        StockType      = dr["MasterStocktype"].ToString(),
                        Category       = dr["MasterSubDept"].ToString(),
                        Season         = dr["User1"].ToString(),
                        Name           = dr["SHORT"].ToString(),
                        Sales_Price    = specialPrice.price,
                        Price_From     = specialPrice.price_from.Trim(),
                        Price_To       = specialPrice.price_to.Trim(),
                        SKU            = specialPrice.sku.Trim(),
                        RRP            = rrp,
                        Discount       = (int)Math.Floor((Convert.ToDecimal(rrp) - specialPrice.price) / Convert.ToDecimal(rrp) * 100),
                        Store          = Convert.ToInt16(specialPrice.store_id) == 1 ? "UK" : "Ireland"
                    });
                }
            }
            return(sales);
        }
Example #5
0
 public SalesService()
 {
     _skuRepository = new SkuRepository();
 }
        /// <summary>
        /// 取引終了時の在庫更新を行います。
        /// </summary>
        /// <param name="parameters">パラメーター。</param>
        /// <param name="client">Cosmos DB クライアント。</param>
        /// <param name="log">ロガー。</param>
        /// <returns>非同期の操作を表すタスク。TResult パラメーターの値には、処理の結果が含まれます。</returns>
        /// <remarks>BOX で付与されたタイムスタンプ順に処理されます。</remarks>
        private static async Task <(BoxResponse, RepositoryResult)> UpdateClosingStocksAsync(
            IList <UpdateStocksParameter> parameters,
            DocumentClient client,
            ILogger log)
        {
            var terminalRepo = new TerminalRepository(client);
            var boxRepo      = new BoxRepository(client);
            var skuRepo      = new SkuRepository(client);
            var stockRepo    = new StockRepository(client);
            var cartRepo     = new CartRepository(new CartServiceApi(StaticHttpClient.Instance));

            parameters = parameters
                         .OrderBy(arg => arg.Timestamp)
                         .ToArray();

            foreach (var parameter in parameters)
            {
                // 在庫を設定します。
                var setStocksResult = await stockRepo.SetStocksAsync(
                    parameter.BoxId,
                    "1",
                    parameter.Items.Select(arg => (arg.SkuCode, arg.Quantity)).ToArray());

                if (!setStocksResult.IsSuccess)
                {
                    return(BoxResponseFactory.CreateError <BoxResponse>(setStocksResult), setStocksResult);
                }

                // ターミナルを取得します。
                (var terminalResult, var terminal) = await terminalRepo.FindByBoxIdAsync(parameter.BoxId);

                if (!terminalResult.IsSuccess)
                {
                    return(BoxResponseFactory.CreateError <BoxResponse>(terminalResult), terminalResult);
                }

                // BOX を取得します。
                (var boxResult, var box) = await boxRepo.FindByBoxIdAsync(parameter.BoxId);

                if (!boxResult.IsSuccess)
                {
                    return(BoxResponseFactory.CreateError <BoxResponse>(boxResult), boxResult);
                }

                // 取引開始時と比較して、在庫数に差異がある BOX 商品を取得します。
                (var stockDifferencesResult, var stockReferrences) = await stockRepo.GetStockDifferencesAsync(parameter.BoxId);

                if (!stockDifferencesResult.IsSuccess)
                {
                    return(BoxResponseFactory.CreateError <BoxResponse>(stockDifferencesResult), stockDifferencesResult);
                }

                // BOX 商品を POS 商品に変換し、
                // 取引開始時と比較して、在庫数に差異がある POS 商品を抽出します。
                var items = stockReferrences
                            .Select(arg => (arg.SkuCode, arg.Quantity))
                            .ToArray();

                (var posItemsResult, var posItems) = await BoxItemsToPosItemsAsync(terminal.CompanyCode, terminal.StoreCode, items, skuRepo);

                if (!posItemsResult.IsSuccess)
                {
                    return(BoxResponseFactory.CreateError <BoxResponse>(posItemsResult), posItemsResult);
                }

                var changedPosItems = posItems
                                      .Where(arg => arg.Quantity != 0)
                                      .Select(arg => (arg.ItemCode, 0 < arg.Quantity ? 1 : 2, Math.Abs(arg.Quantity)))
                                      .ToArray();

                if (changedPosItems.Any())
                {
                    // 取引を確定します。
                    var subtotalResult = await cartRepo.SubtotalAsync(box.CartId, changedPosItems);

                    if (!subtotalResult.IsSuccess)
                    {
                        return(BoxResponseFactory.CreateError <BoxResponse>(subtotalResult), subtotalResult);
                    }

                    var createPaymentResult = await cartRepo.CreatePaymentsAsync(box.CartId, new[] { ("01", 0M) });
Example #7
0
 public MagentoSpecialPrice()
 {
     skuRepository = new SkuRepository();
 }
Example #8
0
        /// <summary>
        /// 添加店铺信息信息
        /// </summary>
        /// <param name="inputDtos">要添加的店铺信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> AddGoodss(params GoodsInputDto[] inputDtos)
        {
            GoodsRepository.UnitOfWork.TransactionEnabled = true;
            List <string> names = new List <string>();

            foreach (GoodsInputDto dto in inputDtos)
            {
                Models.Goods goods = new Models.Goods()//商品其他属性的绑定
                {
                    Name                  = dto.Name,
                    GoodsPics             = dto.GoodsPics,
                    Description           = dto.Description,
                    Detail                = dto.Detail,
                    Price                 = dto.Price,
                    Stock                 = dto.Stock,
                    GoodsNumber           = dto.GoodsNumber,
                    BarCode               = dto.BarCode,
                    CreatedTime           = DateTime.Now,
                    BeginTime             = DateTime.Now,
                    IsGuarantee           = dto.IsGuarantee,
                    IsReceipt             = dto.IsReceipt,
                    IsSevenDayReplacement = dto.IsSevenDayReplacement,
                    IsReplacement         = dto.IsReplacement,
                    IsCommend             = dto.IsCommend,
                    IsLocked              = false
                };

                //店铺
                if (dto.ShopId.HasValue && dto.ShopId.Value > 0)
                {
                    Shop.Models.Shop shop = await ShopRepository.GetByKeyAsync(dto.ShopId.Value);

                    if (shop == null)
                    {
                        return(new OperationResult(OperationResultType.QueryNull, "店铺不存在"));
                    }
                    goods.Shop = shop;
                    shop.Goodses.Add(goods);
                }

                //分类
                if (dto.CategoryId.HasValue && dto.CategoryId.Value > 0)
                {
                    Category category = await CategoryRepository.GetByKeyAsync(dto.CategoryId.Value);

                    if (category == null)
                    {
                        return(new OperationResult(OperationResultType.QueryNull, "发布不存在"));
                    }
                    goods.Category = category;
                    category.Goodses.Add(goods);
                }

                //运费模板
                if (dto.ExpressTemplateId.HasValue && dto.ExpressTemplateId.Value > 0)
                {
                    Shop.Models.ExpressTemplate expressTemplate = await ExpressTemplateRepository.GetByKeyAsync(dto.ExpressTemplateId.Value);

                    if (expressTemplate == null)
                    {
                        return(new OperationResult(OperationResultType.QueryNull, "运费模板不存在"));
                    }
                    goods.ExpressTemplate = expressTemplate;
                }

                //商品属性
                if (dto.GoodsAttrs.Count > 0)
                {
                    foreach (Dtos.GoodsAttr goodsAttrDto in dto.GoodsAttrs)
                    {
                        //Hmh.Core.Shop.Models.SpecialExpressAddress specialExpressAddress = specialExpressAddressDto.MapTo<Hmh.Core.Shop.Models.SpecialExpressAddress>();
                        Models.GoodsAttr goodsAttr = new Models.GoodsAttr()
                        {
                            AttrName  = goodsAttrDto.AttrName,
                            AttrValue = goodsAttrDto.AttrValue
                        };

                        await GoodsAttrRepository.InsertAsync(goodsAttr);

                        goodsAttr.Goods = goods;
                        goods.GoodsAttrs.Add(goodsAttr);
                    }
                }

                //商品Sku
                if (dto.Skus.Count > 0)
                {
                    foreach (Dtos.Sku skuDto in dto.Skus)
                    {
                        if (skuDto.Names.Count != skuDto.Values.Count)
                        {
                            return(new OperationResult(OperationResultType.Error, "规格名称和值不对应"));
                        }

                        Models.Sku sku = new Models.Sku()
                        {
                            Names       = skuDto.Names.ExpandAndToString(),
                            Values      = skuDto.Values.ExpandAndToString(),
                            Price       = skuDto.Price,
                            Stock       = skuDto.Stock,
                            GoodsNumber = skuDto.GoodsNumber,
                            BarCode     = skuDto.BarCode,
                            SkuPic      = skuDto.SkuPic
                        };

                        await SkuRepository.InsertAsync(sku);

                        sku.Goods = goods;
                        goods.Skus.Add(sku);
                    }
                }


                int id = await GoodsRepository.InsertAsync(goods);

                //if (!(id > 0))
                //    return new OperationResult(OperationResultType.Error, "添加失败");
                names.Add(goods.Name);
            }
            return(await GoodsRepository.UnitOfWork.SaveChangesAsync() > 0
                ? new OperationResult(OperationResultType.Success, $"商品“{names.ExpandAndToString()}”创建成功")
                : OperationResult.NoChanged);
        }