Example #1
0
        public ActionResult AddProduct()
        {
            List <PurchaseDetailEntity> listDetail = Session[SessionKey.SESSION_PURCHASE_DETAIL] as List <PurchaseDetailEntity>;

            listDetail = listDetail.IsNull() ? new List <PurchaseDetailEntity>() : listDetail;

            List <PurchaseDetailEntity> list = WebUtil.GetFormObject <List <PurchaseDetailEntity> >("List");

            if (!list.IsNullOrEmpty())
            {
                foreach (PurchaseDetailEntity item in list)
                {
                    if (listDetail.Exists(a => a.ProductNum == item.ProductNum))
                    {
                        PurchaseDetailEntity entity = listDetail.First(a => a.ProductNum == item.ProductNum);
                        entity.Num    = entity.Num + item.Num;
                        entity.Amount = entity.Price * entity.Num;
                    }
                    else
                    {
                        PurchaseDetailEntity entity = new PurchaseDetailEntity();
                        entity.SnNum       = ConvertHelper.NewGuid();
                        entity.ProductName = item.ProductName;
                        entity.BarCode     = item.BarCode;
                        entity.ProductNum  = item.ProductNum;
                        entity.Num         = item.Num;
                        entity.UnitNum     = item.UnitNum;
                        entity.UnitName    = item.UnitName;
                        entity.Price       = item.Price;
                        entity.Amount      = entity.Price * entity.Num;
                        entity.Status      = (int)EPurchaseStatus.CreateOrder;
                        entity.CreateTime  = DateTime.Now;
                        entity.CompanyID   = this.CompanyID;
                        entity.Size        = item.Size;
                        listDetail.Add(entity);
                    }
                }
            }
            Session[SessionKey.SESSION_PURCHASE_DETAIL] = listDetail;
            DataResult dataResult = new DataResult()
            {
                Code    = (int)EResponseCode.Success,
                Message = "响应成功"
            };

            return(Content(JsonHelper.SerializeObject(dataResult)));
        }
Example #2
0
        /// <summary>
        /// 查询采购订单详细
        /// </summary>
        /// <returns></returns>
        public ActionResult GetDetail()
        {
            string SnNum                = WebUtil.GetFormValue <string>("SnNum");
            string CompanyID            = WebUtil.GetFormValue <string>("CompanyID", string.Empty);
            PurchaseDetailEntity entity = new PurchaseDetailEntity();

            entity.OrderSnNum = SnNum;
            entity.CompanyID  = CompanyID;
            Bill <PurchaseEntity, PurchaseDetailEntity> bill = new PurchaseOrder(CompanyID);
            List <PurchaseDetailEntity> list = bill.GetOrderDetail(entity);

            DataResult <List <PurchaseDetailEntity> > dataResult = new DataResult <List <PurchaseDetailEntity> >();

            dataResult.Code    = (int)EResponseCode.Success;
            dataResult.Message = "响应成功";
            dataResult.Result  = list;
            return(Content(JsonHelper.SerializeObject(dataResult)));
        }
Example #3
0
        /// <summary>
        /// 根据采购订单转化为入库单
        /// 1: 采购订单生成入库单成功
        /// 1001:采购订单不存在
        /// 1002:采购订单已经全部入库,请勿重新入库
        /// 1003: 订单已经被取消,不能入库
        /// 1004: 采购订单中不存在入库物品
        /// 1005: 存在不在采购单内的货品
        /// </summary>
        /// <param name="SnNum">采购订单唯一编号</param>
        /// <param name="list">要入库的内容</param>
        /// <param name="StorageNum">仓库编号</param>
        /// <param name="CreateUser">操作人编号</param>
        /// <returns></returns>
        public DataResult ToInStorage(string SnNum, List <PurchaseDetailEntity> list, string StorageNum, string CreateUser)
        {
            PurchaseEntity entity = new PurchaseEntity();

            entity.SnNum = SnNum;
            entity       = this.GetOrder(entity);
            DataResult result = new DataResult();

            if (entity == null)
            {
                result.Code    = 1001;
                result.Message = "采购订单不存在";
                return(result);
            }

            if (entity.Status < (int)EPurchaseStatus.InTheStock)
            {
                result.Code    = 1001;
                result.Message = "采购订单审核流程不正确,不能生成入库单";
                return(result);
            }

            if (entity.Status == (int)EPurchaseStatus.AllIn)
            {
                result.Code    = 1002;
                result.Message = "采购订单已经全部入库,请勿重新入库";
                return(result);
            }

            if (entity.Status == (int)EPurchaseStatus.OrderCancel)
            {
                result.Code    = 1003;
                result.Message = "订单已经被取消,不能入库";
                return(result);
            }

            PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();

            detailEntity.OrderSnNum = SnNum;
            List <PurchaseDetailEntity> listSource = this.GetOrderDetail(detailEntity);

            if (listSource.IsNullOrEmpty())
            {
                result.Code    = 1004;
                result.Message = "采购订单中不存在入库物品";
                return(result);
            }


            //检查入库产品是否在采购单内
            List <PurchaseDetailEntity> listExists = new List <PurchaseDetailEntity>();

            foreach (PurchaseDetailEntity item in list)
            {
                if (!listSource.Exists(a => a.SnNum == item.SnNum))
                {
                    //不存在添加到集合
                    listExists.Add(item);
                }
            }
            if (!listExists.IsNullOrEmpty())
            {
                string content = listExists.Select(a => string.Format("[{0}]{1}", a.BarCode, a.ProductName)).ToArray().ToString();
                result.Code    = 1005;
                result.Message = content + " 不在采购订单[" + entity.OrderNum + "]中,请重新确认再入库";
                return(result);
            }

            InStorageEntity InEntity = new InStorageEntity();

            InEntity.SnNum         = ConvertHelper.NewGuid();
            InEntity.InType        = (int)EInType.Purchase;
            InEntity.ProductType   = (int)EProductType.Goods;
            InEntity.StorageNum    = StorageNum;
            InEntity.SupNum        = entity.SupNum;
            InEntity.SupSnNum      = entity.SupSnNum;
            InEntity.SupName       = entity.SupName;
            InEntity.ContactName   = entity.Contact;
            InEntity.Phone         = entity.Phone;
            InEntity.Address       = entity.Address;
            InEntity.ContractOrder = entity.SnNum;
            //0 无关联 1 采购 2 出库 3退货
            InEntity.ContractType = 1;
            InEntity.Status       = (int)EAudite.Wait;
            InEntity.IsDelete     = (int)EIsDelete.NotDelete;
            InEntity.CreateTime   = DateTime.Now;
            InEntity.OrderTime    = DateTime.Now;
            InEntity.CreateUser   = CreateUser;
            InEntity.CompanyID    = this.CompanyID;

            List <InStorDetailEntity> listDetail = new List <InStorDetailEntity>();

            foreach (PurchaseDetailEntity item in list)
            {
                InStorDetailEntity InDetail = new InStorDetailEntity();
                InDetail.SnNum         = ConvertHelper.NewGuid();
                InDetail.OrderSnNum    = InEntity.SnNum;
                InDetail.ProductNum    = item.ProductNum;
                InDetail.ProductName   = item.ProductName;
                InDetail.BarCode       = item.BarCode;
                InDetail.BatchNum      = item.BatchNum;
                InDetail.Num           = item.Qty;
                InDetail.InPrice       = item.Price;
                InDetail.Amount        = item.Qty * item.Price;
                InDetail.ContractOrder = item.SnNum;
                InDetail.CreateTime    = DateTime.Now;
                InDetail.LocalNum      = item.LocalNum;
                InDetail.StorageNum    = StorageNum;
                InDetail.CreateUser    = CreateUser;
                InDetail.CompanyID     = this.CompanyID;

                listDetail.Add(InDetail);
            }
            string returnValue = string.Empty;

            using (TransactionScope ts = new TransactionScope())
            {
                Bill <InStorageEntity, InStorDetailEntity> bill = new InStorageOrder(this.CompanyID);
                returnValue = bill.Create(InEntity, listDetail);

                if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue)
                {
                    foreach (PurchaseDetailEntity item in list)
                    {
                        if (item.RealNum + item.Qty >= item.Num)
                        {
                            item.Status   = (int)EPurchaseStatus.AllIn;
                            item.RealNum += item.Qty;
                        }
                        else if ((item.RealNum + item.Qty) < item.Num && (item.RealNum + item.Qty) > 0)
                        {
                            item.Status   = (int)EPurchaseStatus.PartialIn;
                            item.RealNum += item.Qty;
                        }
                        item.Include(a => new { a.RealNum, a.Status });
                        item.Where(a => a.SnNum == item.SnNum);
                        this.PurchaseDetail.Update(item);
                    }

                    //再次查询校验状态
                    detailEntity            = new PurchaseDetailEntity();
                    detailEntity.OrderSnNum = SnNum;
                    listSource = this.GetOrderDetail(detailEntity);
                    if (!listSource.IsNullOrEmpty())
                    {
                        if (listSource.Count(a => a.Status == (int)EPurchaseStatus.PartialIn) > 0 ||
                            (listSource.Count(a => a.Status == (int)EPurchaseStatus.AllIn) < listSource.Count() && listSource.Count(a => a.Status == (int)EPurchaseStatus.AllIn) > 0)
                            )
                        {
                            entity.Status = (int)EPurchaseStatus.PartialIn;
                        }
                        else if (listSource.Count(a => a.Status == (int)EPurchaseStatus.AllIn) == listSource.Count())
                        {
                            entity.Status = (int)EPurchaseStatus.AllIn;
                        }
                        entity.IncludeStatus(true);
                        entity.Where(a => a.SnNum == entity.SnNum);
                        this.Purchase.Update(entity);
                    }
                    result.Code    = (int)EResponseCode.Success;
                    result.Message = "入库单创建成功";
                }
                else
                {
                    result.Code    = (int)EResponseCode.Exception;
                    result.Message = "入库单创建失败";
                }

                ts.Complete();
            }

            return(result);
        }
Example #4
0
        /// <summary>
        /// 采购退货单
        /// </summary>
        /// <param name="SnNum"></param>
        /// <param name="list"></param>
        /// <returns></returns>
        public DataResult ToReturn(string SnNum, List <PurchaseDetailEntity> list)
        {
            PurchaseEntity entity = new PurchaseEntity();

            entity.SnNum = SnNum;
            entity       = this.GetOrder(entity);
            DataResult result = new DataResult();

            if (entity == null)
            {
                result.Code    = 1001;
                result.Message = "采购订单不存在";
                return(result);
            }
            if (entity.Status == (int)EPurchaseStatus.AllIn || entity.Status == (int)EPurchaseStatus.PartialIn)
            {
                result.Code    = 1002;
                result.Message = "该采购单已经入库,不能退货操作";
                return(result);
            }
            PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();

            detailEntity.OrderSnNum = SnNum;
            List <PurchaseDetailEntity> listSource = this.GetOrderDetail(detailEntity);

            if (listSource.IsNullOrEmpty())
            {
                result.Code    = 1003;
                result.Message = "采购订单中不存在出库货品";
                return(result);
            }
            using (TransactionScope ts = new TransactionScope())
            {
                foreach (PurchaseDetailEntity item in list)
                {
                    if (item.Qty > 0)
                    {
                        PurchaseReturnDetailEntity returnDetail = new PurchaseReturnDetailEntity();
                        returnDetail.IncludeAll();
                        returnDetail
                        .Where(a => a.CompanyID == this.CompanyID)
                        .And(a => a.PurchaseDetailSn == item.SnNum)
                        ;
                        PurchaseReturnEntity returnItem = new PurchaseReturnEntity();
                        returnItem.And(a => a.IsDelete == (int)EIsDelete.NotDelete)
                        ;
                        returnDetail.Left <PurchaseReturnEntity>(returnItem, new Params <string, string>()
                        {
                            Item1 = "OrderSnNum", Item2 = "SnNum"
                        });

                        List <PurchaseReturnDetailEntity> listDetail = this.PurchaseReturnDetail.GetList(returnDetail);

                        if (listDetail != null && listDetail.Where(a => a.PurchaseDetailSn == item.SnNum).Sum(a => a.ReturnNum) >= item.Num)
                        {
                            result.Code    = 1006;
                            result.Message = string.Format("货品[{0}]已经全部退货,请勿重复申请退货", item.ProductName);
                            return(result);
                        }
                    }
                }

                string returnValue = string.Empty;

                Bill <PurchaseReturnEntity, PurchaseReturnDetailEntity> bill = new PurchaseReturnOrder(this.CompanyID);
                PurchaseReturnEntity PurchaseReturnEntity = new PurchaseReturnEntity();
                PurchaseReturnEntity.SupSnNum         = entity.SupSnNum;
                PurchaseReturnEntity.SupNum           = entity.SupNum;
                PurchaseReturnEntity.SupName          = entity.SupName;
                PurchaseReturnEntity.Contact          = entity.Contact;
                PurchaseReturnEntity.Phone            = entity.Phone;
                PurchaseReturnEntity.PurchaseSnNum    = entity.SnNum;
                PurchaseReturnEntity.PurchaseOrderNum = entity.OrderNum;
                PurchaseReturnEntity.CompanyID        = this.CompanyID;

                List <PurchaseReturnDetailEntity> listReturnDetail = new List <PurchaseReturnDetailEntity>();
                foreach (PurchaseDetailEntity item in list)
                {
                    if (item.Qty > 0)
                    {
                        PurchaseReturnDetailEntity DetailEntity = new PurchaseReturnDetailEntity();
                        DetailEntity.SnNum            = ConvertHelper.NewGuid();
                        DetailEntity.ProductName      = item.ProductName;
                        DetailEntity.BarCode          = item.BarCode;
                        DetailEntity.ProductNum       = item.ProductNum;
                        DetailEntity.Num              = item.Num;
                        DetailEntity.ReturnNum        = item.Qty;
                        DetailEntity.UnitNum          = item.UnitNum;
                        DetailEntity.Price            = item.Price;
                        DetailEntity.Amount           = item.Price * item.Qty;
                        DetailEntity.ReturnTime       = DateTime.Now;
                        DetailEntity.PurchaseDetailSn = item.SnNum;
                        DetailEntity.CompanyID        = this.CompanyID;
                        DetailEntity.CreateTime       = DateTime.Now;

                        listReturnDetail.Add(DetailEntity);
                    }
                }

                returnValue = bill.Create(PurchaseReturnEntity, listReturnDetail);

                if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue)
                {
                    Task.Factory.StartNew(() =>
                    {
                        foreach (PurchaseDetailEntity DetailItem in listSource)
                        {
                            PurchaseReturnDetailEntity returnDetail = new PurchaseReturnDetailEntity();
                            returnDetail.IncludeAll();
                            returnDetail
                            .Where(a => a.CompanyID == this.CompanyID)
                            .And(a => a.PurchaseDetailSn == DetailItem.SnNum)
                            ;
                            PurchaseReturnEntity returnItem = new PurchaseReturnEntity();
                            returnItem.And(a => a.IsDelete == (int)EIsDelete.NotDelete)
                            ;
                            returnDetail.Left <PurchaseReturnEntity>(returnItem, new Params <string, string>()
                            {
                                Item1 = "OrderSnNum", Item2 = "SnNum"
                            });

                            List <PurchaseReturnDetailEntity> listDetail = this.PurchaseReturnDetail.GetList(returnDetail);
                            if (!listDetail.IsNullOrEmpty())
                            {
                                double ReturnNum = listDetail.Sum(a => a.ReturnNum);
                                DetailItem.IncludeReturnNum(true);
                                DetailItem.ReturnNum = ReturnNum;
                                DetailItem.Where(a => a.SnNum == DetailItem.SnNum).And(a => a.CompanyID == this.CompanyID);
                                this.PurchaseDetail.Update(DetailItem);
                            }
                        }
                        PurchaseEntity PurchaseItem = new PurchaseEntity();
                        PurchaseItem.HasReturn      = (int)EBool.Yes;
                        PurchaseItem.IncludeHasReturn(true);
                        PurchaseItem.Where(a => a.SnNum == SnNum).And(a => a.CompanyID == this.CompanyID);
                        this.Purchase.Update(PurchaseItem);
                    });
                    result.Code    = (int)EResponseCode.Success;
                    result.Message = "采购退货单创建成功";
                }
                else
                {
                    result.Code    = (int)EResponseCode.Exception;
                    result.Message = "采购退货单创建失败";
                }
                ts.Complete();
            }
            return(result);
        }
Example #5
0
        /// <summary>
        /// 查询采购订单详细分页
        /// </summary>
        /// <returns></returns>
        public ActionResult GetDetailList()
        {
            string CompanyID   = WebUtil.GetFormValue <string>("CompanyID");
            string BarCode     = WebUtil.GetFormValue <string>("BarCode");
            string ProductName = WebUtil.GetFormValue <string>("ProductName");

            string OrderNum   = WebUtil.GetFormValue <string>("OrderNum");
            string OrderSnNum = WebUtil.GetFormValue <string>("OrderSnNum");
            string SupNum     = WebUtil.GetFormValue <string>("SupNum");
            string SupName    = WebUtil.GetFormValue <string>("SupName");
            string Contact    = WebUtil.GetFormValue <string>("Contact");
            string Phone      = WebUtil.GetFormValue <string>("Phone");

            string ContractOrder = WebUtil.GetFormValue <string>("ContractOrder");
            string ContractSn    = WebUtil.GetFormValue <string>("ContractSn");

            int Status       = WebUtil.GetFormValue <int>("Status", 0);
            int AuditeStatus = WebUtil.GetFormValue <int>("AuditeStatus", -1);
            int HasReturn    = WebUtil.GetFormValue <int>("HasReturn", -1);

            string CreateUser = WebUtil.GetFormValue <string>("CreateUser");

            string BeginTime = WebUtil.GetFormValue <string>("BeginTime");
            string EndTime   = WebUtil.GetFormValue <string>("EndTime");

            int PageIndex = WebUtil.GetFormValue <int>("PageIndex", 1);
            int PageSize  = WebUtil.GetFormValue <int>("PageSize", 10);

            PurchaseDetailEntity entity = new PurchaseDetailEntity();

            entity.CompanyID     = CompanyID;
            entity.BarCode       = BarCode;
            entity.ProductName   = ProductName;
            entity.OrderNum      = OrderNum;
            entity.OrderSnNum    = OrderSnNum;
            entity.SupNum        = SupNum;
            entity.SupName       = SupName;
            entity.Contact       = Contact;
            entity.Phone         = Phone;
            entity.ContractOrder = ContractOrder;
            entity.ContractSn    = ContractSn;
            entity.Status        = Status;
            entity.AuditeStatus  = AuditeStatus;
            entity.HasReturn     = HasReturn;
            entity.CreateUser    = CreateUser;
            entity.BeginTime     = BeginTime;
            entity.EndTime       = EndTime;

            PageInfo pageInfo = new PageInfo()
            {
                PageIndex = PageIndex, PageSize = PageSize
            };
            Bill <PurchaseEntity, PurchaseDetailEntity> bill = new PurchaseOrder(CompanyID);
            List <PurchaseDetailEntity>           listResult = bill.GetDetailList(entity, ref pageInfo);
            DataListResult <PurchaseDetailEntity> dataResult = new DataListResult <PurchaseDetailEntity>()
            {
                Code     = (int)EResponseCode.Success,
                Message  = "响应成功",
                Result   = listResult,
                PageInfo = pageInfo
            };

            return(Content(JsonHelper.SerializeObject(dataResult)));
        }