Example #1
0
        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);
        }
Example #2
0
        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 = "保存成功!"
            });
        }