public ActionResult Create()
        {
            int      InType        = WebUtil.GetFormValue <int>("InType", 0);
            int      ProductType   = WebUtil.GetFormValue <int>("ProductType", 0);
            string   ContractOrder = WebUtil.GetFormValue <string>("ContractOrder", string.Empty);
            string   SupNum        = WebUtil.GetFormValue <string>("SupNum", string.Empty);
            string   SupName       = WebUtil.GetFormValue <string>("SupName", string.Empty);
            string   ContactName   = WebUtil.GetFormValue <string>("ContactName", string.Empty);
            string   Phone         = WebUtil.GetFormValue <string>("Phone", string.Empty);
            DateTime OrderTime     = WebUtil.GetFormValue <DateTime>("OrderTime", DateTime.Now);
            string   Remark        = WebUtil.GetFormValue <string>("Remark", string.Empty);

            InStorageEntity entity = new InStorageEntity();

            entity.OrderNum      = SequenceProvider.GetSequence(typeof(InStorageEntity));
            entity.InType        = InType;
            entity.ProductType   = ProductType;
            entity.SupNum        = SupNum;
            entity.SupName       = SupName;
            entity.ContactName   = ContactName;
            entity.Phone         = Phone;
            entity.Address       = "";
            entity.ContractOrder = ContractOrder;
            entity.Status        = (int)EAudite.Wait;
            entity.IsDelete      = (int)EIsDelete.NotDelete;
            entity.OrderTime     = OrderTime;
            entity.CreateTime    = DateTime.Now;
            entity.CreateUser    = this.LoginUserCode;
            entity.AuditUser     = string.Empty;
            entity.AuditeTime    = DateTime.MinValue;
            entity.PrintUser     = string.Empty;
            entity.PrintTime     = DateTime.MinValue;
            entity.Reason        = string.Empty;
            entity.OperateType   = (int)EOpType.PC;
            entity.EquipmentNum  = string.Empty;
            entity.EquipmentCode = string.Empty;
            entity.Remark        = Remark;
            entity.StorageNum    = this.DefaultStore;

            List <InStorDetailEntity> list = Session[CacheKey.TEMPDATA_CACHE_INSTORDETAIL] as List <InStorDetailEntity>;

            if (list.IsNullOrEmpty())
            {
                this.ReturnJson.AddProperty("Key", "1001");
                this.ReturnJson.AddProperty("Value", "请选择要入库的产品以及数量");
                return(Content(this.ReturnJson.ToString()));
            }
            entity.Num    = list.Sum(a => a.Num);
            entity.Amount = list.Sum(a => a.Amount);
            Bill <InStorageEntity, InStorDetailEntity> bill = new InStorageOrder();
            string returnValue = bill.Create(entity, list);

            if (returnValue == EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success))
            {
                Session[CacheKey.TEMPDATA_CACHE_INSTORDETAIL] = null;
                this.ReturnJson.AddProperty("Key", "1000");
                this.ReturnJson.AddProperty("Value", "入库单创建成功");
            }
            return(Content(this.ReturnJson.ToString()));
        }
Exemple #2
0
        /// <summary>
        /// 新增入库单
        /// </summary>
        /// <returns></returns>
        public ActionResult Create()
        {
            string                    CompanyID = WebUtil.GetFormValue <string>("CompanyID", string.Empty);
            InStorageEntity           entity    = WebUtil.GetFormObject <InStorageEntity>("Entity");
            List <InStorDetailEntity> list      = WebUtil.GetFormObject <List <InStorDetailEntity> >("List");

            entity.SnNum         = ConvertHelper.NewGuid();
            entity.ProductType   = (int)EProductType.Goods;
            entity.Status        = (int)EAudite.Wait;
            entity.IsDelete      = (int)EIsDelete.NotDelete;
            entity.CreateTime    = DateTime.Now;
            entity.CompanyID     = entity.CompanyID.IsEmpty() ? CompanyID : entity.CompanyID;
            entity.EquipmentNum  = "";
            entity.EquipmentCode = "";

            Bill <InStorageEntity, InStorDetailEntity> bill = new InStorageOrder(CompanyID);
            string     returnValue = bill.Create(entity, list);
            DataResult result      = new DataResult();

            if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue)
            {
                result.Code    = (int)EResponseCode.Success;
                result.Message = "入库单创建成功";
            }
            else
            {
                result.Code    = (int)EResponseCode.Exception;
                result.Message = "入库单创建失败";
            }
            return(Content(JsonHelper.SerializeObject(result)));
        }
        /// <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);
        }
        public ActionResult Create()
        {
            int InType = WebUtil.GetFormValue<int>("InType", 0);
            int ProductType = WebUtil.GetFormValue<int>("ProductType", 0);
            string ContractOrder = WebUtil.GetFormValue<string>("ContractOrder", string.Empty);
            string SupNum = WebUtil.GetFormValue<string>("SupNum", string.Empty);
            string SupName = WebUtil.GetFormValue<string>("SupName", string.Empty);
            string ContactName = WebUtil.GetFormValue<string>("ContactName", string.Empty);
            string Phone = WebUtil.GetFormValue<string>("Phone", string.Empty);
            DateTime OrderTime = WebUtil.GetFormValue<DateTime>("OrderTime", DateTime.Now);
            string Remark = WebUtil.GetFormValue<string>("Remark", string.Empty);

            InStorageEntity entity = new InStorageEntity();
            entity.OrderNum = SequenceProvider.GetSequence(typeof(InStorageEntity));
            entity.InType = InType;
            entity.ProductType = ProductType;
            entity.SupNum = SupNum;
            entity.SupName = SupName;
            entity.ContactName = ContactName;
            entity.Phone = Phone;
            entity.Address = "";
            entity.ContractOrder = ContractOrder;
            entity.Status = (int)EAudite.Wait;
            entity.IsDelete = (int)EIsDelete.NotDelete;
            entity.OrderTime = OrderTime;
            entity.CreateTime = DateTime.Now;
            entity.CreateUser = this.LoginUserCode;
            entity.AuditUser = string.Empty;
            entity.AuditeTime = DateTime.MinValue;
            entity.PrintUser = string.Empty;
            entity.PrintTime = DateTime.MinValue;
            entity.Reason = string.Empty;
            entity.OperateType = (int)EOpType.PC;
            entity.EquipmentNum = string.Empty;
            entity.EquipmentCode = string.Empty;
            entity.Remark = Remark;
            entity.StorageNum = this.DefaultStore;

            List<InStorDetailEntity> list = Session[CacheKey.TEMPDATA_CACHE_INSTORDETAIL] as List<InStorDetailEntity>;
            if (list.IsNullOrEmpty())
            {
                this.ReturnJson.AddProperty("Key", "1001");
                this.ReturnJson.AddProperty("Value", "请选择要入库的产品以及数量");
                return Content(this.ReturnJson.ToString());
            }
            entity.Num = list.Sum(a => a.Num);
            entity.Amount = list.Sum(a => a.Amount);
            Bill<InStorageEntity, InStorDetailEntity> bill = new InStorageOrder();
            string returnValue = bill.Create(entity, list);
            if (returnValue == EnumHelper.GetEnumDesc<EReturnStatus>(EReturnStatus.Success))
            {
                Session[CacheKey.TEMPDATA_CACHE_INSTORDETAIL] = null;
                this.ReturnJson.AddProperty("Key", "1000");
                this.ReturnJson.AddProperty("Value", "入库单创建成功");
            }
            return Content(this.ReturnJson.ToString());
        }