public override OPResult Save() { if (string.IsNullOrEmpty(Master.Remark)) { var toOrganizationName = OrganizationListVM.CurrentOrganization.ChildrenOrganizations.Find(o => o.ID == Master.ToOrganizationID).Name; Master.Remark = "发往" + toOrganizationName; } var bo = new BillDeliveryBO { Bill = this.Master, Details = this.Details }; if (!_isSelfShop) { var bid = Master.BrandID; var totalMoney = GetTotalMoney(); bo.FundAccount = new OrganizationFundAccount { BrandID = bid, OrganizationID = this.Master.ToOrganizationID, NeedIn = totalMoney, AlreadyIn = 0.0M, CreatorID = VMGlobal.CurrentUser.ID, BillKind = (int)BillTypeEnum.BillDelivery, Remark = "发货单生成", RefrenceBillCode = this.Master.Code }; } var result = BillWebApiInvoker.Instance.SaveBill <BillDelivery, BillDeliveryDetails>(bo); if (result.IsSucceed) { var users = IMHelper.OnlineUsers.Where(o => o.OrganizationID == Master.ToOrganizationID || o.OrganizationID == VMGlobal.CurrentUser.OrganizationID).ToArray(); var toName = VMGlobal.SysProcessQuery.LinqOP.GetById <SysOrganization>(Master.ToOrganizationID).Name; IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("发往{2}{0}件,单号{1},到货后请及时入库.", Details.Sum(o => o.Quantity), Master.Code, toName), Sender = IMHelper.CurrentUser }, IMReceiveAccessEnum.发货单); } return(result); }
public OPResult SaveBillDelivery(BillDeliveryBO bo) { using (var dbContext = new DistributionEntities()) { using (TransactionScope scope = new TransactionScope()) { try { bo.Bill.Code = BillHelper.GenerateBillCode <BillDelivery>(bo.Bill.ToOrganizationID, dbContext, o => o.ToOrganizationID == bo.Bill.ToOrganizationID); BillHelper.SaveBill <BillDelivery, BillDeliveryDetails>(bo, dbContext); var storeout = BillHelper.GenerateStoreOut(bo); BillHelper.SaveBillStoreOut(storeout, dbContext); if (bo.FundAccount != null && bo.FundAccount.NeedIn != 0) { bo.FundAccount.RefrenceBillCode = bo.Bill.Code; dbContext.OrganizationFundAccount.Add(bo.FundAccount); } if (bo.Bill.IsWriteDownOrder) { //冲减订单 bo.Details.ForEach(d => dbContext.Database.ExecuteSqlCommand("exec UpdateOrderWhenDelivery {0}, {1},{2}", bo.Bill.ToOrganizationID, d.ProductID, d.Quantity)); } dbContext.SaveChanges(); scope.Complete(); } catch (Exception e) { return(new OPResult { IsSucceed = false, Message = "保存失败,失败原因:\n" + e.Message }); } } } return(new OPResult { IsSucceed = true, Message = "保存成功!" }); }