Ejemplo n.º 1
0
        public OPResult <string> SaveBillCannibalize(BillBO <BillCannibalize, BillCannibalizeDetails> bo)
        {
            using (var dbContext = new DistributionEntities())
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        BillHelper.SaveBill <BillCannibalize, BillCannibalizeDetails>(bo, dbContext);
                        var storeout = BillHelper.GenerateStoreOut(bo);
                        BillHelper.SaveBillStoreOut(storeout, dbContext);

                        dbContext.SaveChanges();

                        scope.Complete();
                    }
                    catch (Exception e)
                    {
                        return(new OPResult <string> {
                            IsSucceed = false, Message = "保存失败,失败原因:\n" + e.Message
                        });
                    }
                }
            }
            return(new OPResult <string> {
                IsSucceed = true, Message = "保存成功!", Result = bo.Bill.Code
            });
        }
Ejemplo n.º 2
0
        public OPResult SaveBillStoring(BillBO <BillStoring, BillStoringDetails> bo)
        {
            using (var dbContext = new DistributionEntities())
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        BillHelper.SaveBillStoring(bo, dbContext);
                        dbContext.SaveChanges();

                        scope.Complete();
                    }
                    catch (Exception e)
                    {
                        return(new OPResult {
                            IsSucceed = false, Message = "保存失败,失败原因:\n" + e.Message
                        });
                    }
                }
            }
            return(new OPResult {
                IsSucceed = true, Message = "保存成功!"
            });
        }
Ejemplo n.º 3
0
        public OPResult StoringReturnGoodReject(BillBO <BillGoodReturn, BillGoodReturnDetails> bo)
        {
            using (var dbContext = new DistributionEntities())
            {
                dbContext.Entry(bo.Bill).State = EntityState.Modified;
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        //BillHelper.SaveBill<BillGoodReturn, BillGoodReturnDetails>(bo, dbContext);
                        var storing = BillHelper.GenerateStoring(bo);
                        BillHelper.SaveBillStoring(storing, dbContext);
                        //if (bo.FundAccount != null && bo.FundAccount.AlreadyIn != 0)
                        //{
                        //    bo.FundAccount.RefrenceBillCode = bo.Bill.Code;
                        //    dbContext.OrganizationFundAccount.Add(bo.FundAccount);
                        //}
                        dbContext.SaveChanges();

                        scope.Complete();
                    }
                    catch (Exception e)
                    {
                        return(new OPResult {
                            IsSucceed = false, Message = "入库失败,失败原因:\n" + e.Message
                        });
                    }
                }
            }
            return(new OPResult {
                IsSucceed = true, Message = "入库成功!"
            });
        }
Ejemplo n.º 4
0
        public OPResult SaveBillStoreMove(BillBO <BillStoreMove, BillStoreMoveDetails> bo)
        {
            using (var dbContext = new DistributionEntities())
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        BillHelper.SaveBill <BillStoreMove, BillStoreMoveDetails>(bo, dbContext);
                        var storeout = BillHelper.GenerateStoreOut(bo);
                        storeout.Bill.StorageID = bo.Bill.StorageIDOut;
                        BillHelper.SaveBillStoreOut(storeout, dbContext);
                        var storing = BillHelper.GenerateStoring(bo);
                        storing.Bill.StorageID = bo.Bill.StorageIDIn;
                        BillHelper.SaveBillStoring(storing, dbContext);

                        dbContext.SaveChanges();

                        scope.Complete();
                    }
                    catch (Exception e)
                    {
                        return(new OPResult {
                            IsSucceed = false, Message = "保存失败,失败原因:\n" + e.Message
                        });
                    }
                }
            }
            return(new OPResult {
                IsSucceed = true, Message = "保存成功!"
            });
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 保存单据
        /// </summary>
        public static void SaveBill <T, TDetail>(BillBO <T, TDetail> bo, DbContext dbContext, bool specifcCreateTime = false)
            where T : BillBase
            where TDetail : BillDetailBase
        {
            if (!specifcCreateTime)
            {
                bo.Bill.CreateTime = DateTime.Now;
            }

            var tcontext = dbContext.Set <T>();

            if (string.IsNullOrEmpty(bo.Bill.Code))
            {
                bo.Bill.Code = BillHelper.GenerateBillCode <T>(bo.Bill.OrganizationID, dbContext);
            }

            tcontext.Add(bo.Bill);
            dbContext.SaveChanges();

            var dcontext = dbContext.Set <TDetail>();

            foreach (var d in bo.Details)
            {
                d.BillID = bo.Bill.ID;
                dcontext.Add(d);
            }
            dbContext.SaveChanges();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 生成入库单
        /// </summary>
        public static BillBO <BillStoring, BillStoringDetails> GenerateStoring <T, TDetail>(BillBO <T, TDetail> bo)
            where T : BillWithBrand, new()
            where TDetail : BillDetailBase
        {
            BillBO <BillStoring, BillStoringDetails> storing = new BillBO <BillStoring, BillStoringDetails>();
            var bill   = storing.Bill = new BillStoring();
            int typeid = (int)Enum.Parse(typeof(BillTypeEnum), typeof(T).Name);

            bill.Remark           = Enum.GetName(typeof(BillStoringTypeEnum), typeid);
            bill.BillType         = typeid;
            bill.OrganizationID   = bo.Bill.OrganizationID;
            bill.BrandID          = bo.Bill.BrandID;
            bill.RefrenceBillCode = bo.Bill.Code;
            bill.CreatorID        = bo.Bill.CreatorID;
            if (bo.Bill is IStorageID)
            {
                bill.StorageID = ((IStorageID)bo.Bill).StorageID;
            }

            storing.Details = new List <BillStoringDetails>();
            foreach (var p in bo.Details)
            {
                storing.Details.Add(new BillStoringDetails
                {
                    ProductID = p.ProductID,
                    Quantity  = p.Quantity
                });
            }
            ;
            return(storing);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 生成入库单
        /// </summary>
        private BillBO <BillStoring, BillStoringDetails> GenerateStoring(int brandID)
        {
            BillBO <BillStoring, BillStoringDetails> bo = new BillBO <BillStoring, BillStoringDetails>();

            bo.Bill                = new BillStoring();
            bo.Bill.Remark         = "零售入库";
            bo.Bill.BillType       = (int)BillTypeEnum.BillRetail;
            bo.Bill.OrganizationID = this.Master.OrganizationID;//VMGlobal.CurrentUser.OrganizationID;
            bo.Bill.StorageID      = this.Master.StorageID;
            bo.Bill.BrandID        = brandID;
            bo.Bill.CreatorID      = this.Master.CreatorID;//VMGlobal.CurrentUser.ID;

            List <BillStoringDetails> soDetails = new List <BillStoringDetails>();

            this.TraverseGridDataItems(p =>
            {
                if (p.BrandID == brandID && p.Quantity < 0)
                {
                    soDetails.Add(new BillStoringDetails
                    {
                        ProductID = p.ProductID,
                        Quantity  = (-1) * p.Quantity
                    });
                }
            });
            bo.Details = soDetails;
            return(bo);
        }
Ejemplo n.º 8
0
        public override OPResult Save()
        {
            var bo = new BillBO <BillStoreMove, BillStoreMoveDetails>
            {
                Bill    = this.Master,
                Details = this.Details
            };
            var result = BillWebApiInvoker.Instance.SaveBill <BillStoreMove, BillStoreMoveDetails>(bo);

            if (result.IsSucceed)
            {
                this.Init();
            }
            return(result);
        }
Ejemplo n.º 9
0
        public TResult SaveBill <TResult, T, TDetail>(BillBO <T, TDetail> bo, string apiName = null)
            where TResult : OPResult, new()
            where T : BillBase
            where TDetail : BillDetailBase
        {
            bo.Bill.CreatorID = VMGlobal.CurrentUser.ID;
            apiName           = apiName ?? typeof(T).Name;

            try
            {
                return(this.Invoke <TResult, BillBO <T, TDetail> >(bo, "Bill/Save" + apiName));
            }
            catch (Exception ex)
            {
                return(new TResult {
                    IsSucceed = false, Message = ex.Message
                });
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// 保存单据
 /// </summary>
 public static OPResult SaveBill <T, TDetail, TDbContext>(BillBO <T, TDetail> bo)
     where T : BillBase
     where TDetail : BillDetailBase
     where TDbContext : DbContext, new()
 {
     try
     {
         using (var dbContext = new TDbContext())
         {
             BillHelper.SaveBill <T, TDetail>(bo, dbContext);
         }
     }
     catch (Exception ex)
     {
         return(new OPResult {
             IsSucceed = false, Message = "保存失败,失败原因:\n" + ex.Message
         });
     }
     return(new OPResult {
         IsSucceed = true, Message = "保存成功!"
     });
 }
Ejemplo n.º 11
0
 public OPResult SaveBillAllocate(BillBO <BillAllocate, BillAllocateDetails> bo)
 {
     return(BillHelper.SaveBill <BillAllocate, BillAllocateDetails, DistributionEntities>(bo));
 }
Ejemplo n.º 12
0
 public OPResult SaveBill <T, TDetail>(BillBO <T, TDetail> bo, string apiName = null)
     where T : BillBase
     where TDetail : BillDetailBase
 {
     return(this.SaveBill <OPResult, T, TDetail>(bo, apiName));
 }
Ejemplo n.º 13
0
 internal static void SaveBillStoring(BillBO <BillStoring, BillStoringDetails> bo, DbContext dbContext)
 {
     BillHelper.SaveBill <BillStoring, BillStoringDetails>(bo, dbContext);
     dbContext.Database.ExecuteSqlCommand("exec UpdateStockWhenStoreIO {0}, {1}", bo.Bill.ID, true);
 }
Ejemplo n.º 14
0
        public OPResult Storing(BillGoodReturnForSearch entity)
        {
            if (entity.StorageID == default(int))
            {
                return(new OPResult {
                    IsSucceed = false, Message = "由于没有对应的出库仓库, 该单无法入库."
                });
            }
            var            lp   = VMGlobal.DistributionQuery.LinqOP;
            BillGoodReturn bill = lp.GetById <BillGoodReturn>(entity.ID);

            if (bill.Status == (int)BillGoodReturnStatusEnum.退回已入库)
            {
                return new OPResult {
                           IsSucceed = false, Message = "该退回单据已入库"
                }
            }
            ;
            bill.Status = (int)BillGoodReturnStatusEnum.退回已入库;

            //decimal returnMoney = 0;
            //if (!OrganizationListVM.IsSelfRunShop(bill.OrganizationID))
            //{
            //    returnMoney = bill.TotalPrice;
            //}
            var bo = new BillBO <BillGoodReturn, BillGoodReturnDetails>
            {
                Bill    = bill,
                Details = entity.Details.Select(o => new BillGoodReturnDetails
                {
                    ProductID = o.ProductID,
                    Quantity  = o.Quantity
                }).ToList(),
            };
            //if (returnMoney != 0)
            //{
            //    bo.FundAccount =
            //        new OrganizationFundAccount
            //        {
            //            BrandID = bill.BrandID,
            //            OrganizationID = bill.OrganizationID,
            //            NeedIn = 0,
            //            AlreadyIn = returnMoney,
            //            CreatorID = VMGlobal.CurrentUser.ID,
            //            BillKind = (int)BillTypeEnum.BillGoodReturn,
            //            Remark = "退货入库生成,退货单号" + bill.Code,
            //            RefrenceBillCode = bill.Code
            //        };
            //}
            var result = BillWebApiInvoker.Instance.Invoke <OPResult, BillBO <BillGoodReturn, BillGoodReturnDetails> >(bo, "Bill/StoringReturnGoodReject");

            if (result.IsSucceed)
            {
                ObservableCollection <BillGoodReturnForSearch> entities = this.Entities as ObservableCollection <BillGoodReturnForSearch>;

                if (entities != null)
                {
                    entities.Remove(entity);
                }
            }
            return(result);
        }
    }