Пример #1
0
        public override OPResult Save()
        {
            BillRetailBO bo = this.GenerateRetailBO();

            OPResult result = null;

            try
            {
                result = BillWebApiInvoker.Instance.Invoke <OPResult <BillRetail>, BillRetailBO>(bo, "BillRetail/SaveBillRetail");
            }
            catch (Exception ex)
            {
                result = new OPResult {
                    IsSucceed = false, Message = ex.Message
                };
            }

            if (result.IsSucceed)
            {
                this.Master = ((OPResult <BillRetail>)result).Result;

                var users = IMHelper.OnlineUsers.Where(o => o.OrganizationID == OrganizationListVM.CurrentOrganization.ParentID).ToArray();
                IMHelper.AsyncSendMessageTo(users, new IMessage
                {
                    Message = string.Format("{2}销售{0}件,单号{1},金额{3:C}.", Details.Sum(o => o.Quantity), Master.Code, OrganizationListVM.CurrentOrganization.Name, Master.CostMoney)
                }, IMReceiveAccessEnum.零售单);
            }
            return(result);
        }
Пример #2
0
        protected virtual BillRetailBO GenerateRetailBO()
        {
            var bo = new BillRetailBO {
                Bill = this.Master, Details = this.Details
            };
            var brandIDs = GridDataItems.Select(o => o.BrandID).Distinct().ToList();

            bo.BillStoreOuts = new List <BillBO <BillStoreOut, BillStoreOutDetails> >();
            bo.BillStorings  = new List <BillBO <BillStoring, BillStoringDetails> >();
            foreach (var bid in brandIDs)
            {
                var storeout = this.GenerateStoreOut(bid);
                if (storeout.Details.Count > 0)
                {
                    bo.BillStoreOuts.Add(storeout);
                }
                var storing = this.GenerateStoring(bid);
                if (storing.Details.Count > 0)
                {
                    bo.BillStorings.Add(storing);
                }
            }
            return(bo);
        }
Пример #3
0
        public OPResult <BillRetail> SaveBillRetail(BillRetailBO bo)
        {
            //bo.Bill.CreateTime = DateTime.Now;

            using (var dbContext = new DistributionEntities())
            {
                if (bo.RefrenseVIPUpTactics != null && bo.VIPPointRecord != null)
                {
                    IEnumerable <int> kindIDs = bo.RefrenseVIPUpTactics.Select(o => o.Tactic.FormerKindID).ToList();
                    IEnumerable <VIPCardKindMapping> mappings = dbContext.VIPCardKindMapping.Where(o => o.CardID == bo.VIPPointRecord.VIPID && kindIDs.Contains(o.KindID)).ToList();
                    foreach (var mapping in mappings)
                    {
                        var t = bo.RefrenseVIPUpTactics.First(o => o.Tactic.FormerKindID == mapping.KindID);
                        mapping.KindID = t.Tactic.AfterKindID;
                        if (t.Tactic.CutPoint != 0)
                        {
                            dbContext.VIPPointTrack.Add(new VIPPointTrack
                            {
                                CreateTime = DateTime.Now,
                                Point      = (-1 * t.Tactic.CutPoint),
                                VIPID      = bo.VIPPointRecord.VIPID,
                                Remark     = "VIP升级产生," + t.Description
                            });
                        }
                    }
                }
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        bo.Bill.Code = BillHelper.GenerateBillCode <BillRetail>(bo.Bill.OrganizationID, dbContext);
                        BillHelper.SaveBill <BillRetail, BillRetailDetails>(bo, dbContext, bo.SpecifcCreateTime);
                        foreach (var storeout in bo.BillStoreOuts)
                        {
                            storeout.Bill.CreateTime       = DateTime.Now;
                            storeout.Bill.RefrenceBillCode = bo.Bill.Code;
                            BillHelper.SaveBillStoreOut(storeout, dbContext);
                        }
                        foreach (var storing in bo.BillStorings)
                        {
                            storing.Bill.CreateTime       = DateTime.Now;
                            storing.Bill.RefrenceBillCode = bo.Bill.Code;
                            BillHelper.SaveBillStoring(storing, dbContext);
                        }
                        if (bo.VIPPointRecord != null)
                        {
                            bo.VIPPointRecord.Remark = "零售单产生,小票号" + bo.Bill.Code;
                            dbContext.VIPPointTrack.Add(bo.VIPPointRecord);

                            if (bo.Bill.PredepositPay != 0)
                            {
                                VIPPredepositTrack predepositTrack = new VIPPredepositTrack
                                {
                                    RefrenceBillCode = bo.Bill.Code,
                                    Kind             = false,
                                    OrganizationID   = bo.Bill.OrganizationID,
                                    CreatorID        = bo.Bill.CreatorID,
                                    CreateTime       = DateTime.Now,
                                    ConsumeMoney     = bo.Bill.PredepositPay,
                                    VIPID            = bo.VIPPointRecord.VIPID,
                                    Remark           = "零售单产生"
                                };
                                dbContext.VIPPredepositTrack.Add(predepositTrack);
                            }
                        }
                        if (bo.VIPBirthdayConsumption != null)
                        {
                            bo.VIPBirthdayConsumption.ConsumeDay = DateTime.Now.Date;
                            dbContext.VIPBirthdayConsumption.Add(bo.VIPBirthdayConsumption);
                        }

                        dbContext.SaveChanges();

                        scope.Complete();
                    }
                    catch (Exception e)
                    {
                        return(new OPResult <BillRetail> {
                            IsSucceed = false, Message = "保存失败,失败原因:\n" + e.Message
                        });
                    }
                }
            }
            return(new OPResult <BillRetail> {
                IsSucceed = true, Message = "保存成功!", Result = bo.Bill
            });
        }