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); }
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); }
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 }); }