Ejemplo n.º 1
0
        public bool Save(IEnumerable <Models.SaleOrderModel> saleOrders)
        {
            // 遍历保存销售单
            foreach (var saleOrderModel in saleOrders)
            {
                using (var db = new YintaiHZhouContext())
                {
                    using (var ts = new TransactionScope())
                    {
                        var saleOrder = new OPC_Sale()
                        {
                            OrderNo     = saleOrderModel.OrderNo,
                            SaleOrderNo = saleOrderModel.SaleOrderNo,
                            SalesType   = 0,
                            Status      = saleOrderModel.Status,
                            SellDate    = saleOrderModel.SellDate,
                            SalesAmount = saleOrderModel.SalesAmount, //是明细累加出的总金额
                            SalesCount  = saleOrderModel.SalesCount,
                            SectionId   = saleOrderModel.SectionId,
                            CreatedDate = saleOrderModel.CreatedDate,
                            CreatedUser = saleOrderModel.CreatedUser,
                            UpdatedDate = saleOrderModel.CreatedDate,
                            UpdatedUser = saleOrderModel.CreatedUser,
                            CashDate    = SplitOrderUtils.GetDefaultDateTime(),
                            RemarkDate  = SplitOrderUtils.GetDefaultDateTime()
                        };
                        db.OPC_Sale.Add(saleOrder);

                        // 保存销售单详情
                        foreach (var saleDetail in saleOrderModel.Items)
                        {
                            saleDetail.UpdatedDate = DateTime.UtcNow;
                            saleDetail.Remark      = String.Empty;
                            saleDetail.UpdatedUser = SystemDefine.SysUserId;
                            db.OPC_SaleDetail.Add(saleDetail);
                        }

                        // 检查销售是否已经存在,防止重复拆单,
                        // 处理方式:发现销售单存继续其他销售单处理,放弃当前的修改,不进行保存
                        if (db.OPC_Sale.Any(s => s.SaleOrderNo == saleOrderModel.SaleOrderNo))
                        {
                            SaveSplitOrderLog(saleOrderModel.OrderNo.ToString(CultureInfo.InvariantCulture),
                                              "已经拆单完成,重复拆单", -999);
                            continue;
                        }

                        db.SaveChanges();
                        ts.Complete();
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        public override bool Support(OrderModel order, SectionStocksModel sectionStocks)
        {
            /**=========================================
             * 参数检查
             * =========================================*/

            SplitOrderUtils.CheckArgument(order, sectionStocks);

            /**=========================================
             * 需要判断订单中的商品价格和是否库存充足
             * =========================================*/
            return(SplitOrderUtils.AllSkuHasStockForOrderPrice(order, sectionStocks));
        }