Esempio n. 1
0
 public void Status(string F_Id, string userName)
 {
     using (DbTransactionScope <PI_ReturnHeadInfo> dbtran = base.CreateTransactionScope())
     {
         try
         {
             //更新登记单主表审核状态,审核人,审核时间
             PI_ReturnHeadInfo head = PI_ReturnHead.Instance.FindByID(F_Id, dbtran.Transaction);
             head.F_Status   = 1;
             head.F_Verify   = userName;
             head.F_VeriDate = DateTime.Now;
             PI_ReturnHead.Instance.Update(head, F_Id, dbtran.Transaction);
             //找到登记单子表
             SearchCondition condition = new SearchCondition();
             condition.AddCondition("F_HId", F_Id, SqlOperator.Equal);
             List <PI_ReturnBodyInfo> list = PI_ReturnBody.Instance.Find(condition.BuildConditionSql().Replace("Where (1=1)  AND ", string.Empty), dbtran.Transaction);
             //资产编号
             foreach (PI_ReturnBodyInfo item in list)
             {
                 for (int i = 0; i < item.F_InStockNum; i++)
                 {
                     PI_ReturnBodyInfo entity = new PI_ReturnBodyInfo();
                     entity.F_Id          = Guid.NewGuid().ToString();
                     entity.F_EnCode      = item.F_EnCode;
                     entity.F_FullName    = item.F_FullName;
                     entity.F_OrderNo     = item.F_OrderNo;
                     entity.F_Unit        = item.F_Unit;
                     entity.F_Description = item.F_Description;
                     PI_ReturnBody.Instance.Insert(entity, dbtran.Transaction);
                 }
             }
             dbtran.Commit();
         }
         catch (Exception ex)
         {
             dbtran.RollBack();
             throw ex;
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        ///审核单据
        /// </summary>
        /// <param name="date">审核日期</param>
        /// <param name="Id">审核单据</param>
        /// <param name="user">审核人</param>
        public string Audit(string date, string user, string Id, List <PI_ReturnBodyInfo> stockinfo)
        {
            string SqlAuditSel = "select F_Status from PI_ReturnHead where F_Id='" + Id + "'";
            string AuditState  = this.GetDataTableBySql(SqlAuditSel).Rows[0][0].ToString();

            if (AuditState == "1")
            {
                return("单据已被审核");
            }
            else
            {
                using (DbTransactionScope <PI_ReturnHeadInfo> dbtran = base.CreateTransactionScope())
                {
                    try
                    {
                        Hashtable hash = new Hashtable();
                        //查询所有库存信息
                        List <Sys_StockInfo> StockList = BLLFactory <Sys_Stock> .Instance.GetAll();

                        PI_ReturnHeadInfo hinfo = BLLFactory <PI_ReturnHead> .Instance.FindByID(Id);

                        SearchCondition condition = new SearchCondition();
                        //condition.AddCondition("F_EnCode", hinfo.F_InStockCode, SqlOperator.Equal);
                        //PI_HeadInfo pih = BLLFactory<PI_Head>.Instance.Find(condition.BuildConditionSql().Replace("Where (1=1)  AND ", string.Empty))[0];


                        for (int i = 0; i < stockinfo.Count; i++)
                        {
                            //查询子表信息
                            condition = new SearchCondition();
                            condition.AddCondition("F_Id", stockinfo[i].F_Id, SqlOperator.Equal);
                            PI_ReturnBodyInfo bodyinfo = BLLFactory <PI_ReturnBody> .Instance.Find(condition.BuildConditionSql().Replace("Where (1=1)  AND ", string.Empty))[0];

                            if (bodyinfo.F_WarehouseId == "" || bodyinfo.F_CargoPositionId == "")
                            {
                                return("该单据中仓库或仓位为空,审核未通过");
                            }

                            Sys_StockInfo stock = StockList.Find(u => u.F_WarehouseId == bodyinfo.F_WarehouseId && u.F_CargoPositionId == bodyinfo.F_CargoPositionId && u.F_GoodsId == bodyinfo.F_GoodsId && u.F_Batch == bodyinfo.F_SerialNum);

                            //查询库存表是否存在该仓库中的产品

                            if (stock == null)
                            {
                                dbtran.RollBack();
                                return("该仓库无此产品");
                            }

                            if (stock.F_Number - bodyinfo.F_ReturnNum < 0)
                            {
                                return("产品数量发生了变化,请重新选择审核退回");
                            }

                            //判断库存数量是否足够
                            if (stock.F_Number >= bodyinfo.F_ReturnNum)
                            {
                                //扣减库存
                                hash = new Hashtable();
                                hash.Add("F_Number", stock.F_Number - bodyinfo.F_ReturnNum);
                                Sys_Stock.Instance.Update(stock.F_Id, hash, dbtran.Transaction);

                                //标记为已退货
                                //hash = new Hashtable();
                                //hash.Add("F_DocumentNum", 1);
                                //PI_Head.Instance.Update(pih.F_Id, hash, dbtran.Transaction);

                                //添加履历
                                Sys_InReturnHistoryInfo inRec = new Sys_InReturnHistoryInfo();
                                inRec.F_Id                = Guid.NewGuid().ToString();
                                inRec.F_EnCode            = bodyinfo.F_OrderNo;
                                inRec.F_Batch             = bodyinfo.F_SerialNum;
                                inRec.F_Vendor            = bodyinfo.F_Vendor;
                                inRec.F_VendorName        = bodyinfo.F_VendorName;
                                inRec.F_Verify            = user;
                                inRec.F_Maker             = hinfo.F_Maker;
                                inRec.F_Contacts          = hinfo.F_Contacts;
                                inRec.F_TelePhone         = hinfo.F_TelePhone;
                                inRec.F_Address           = hinfo.F_Address;
                                inRec.F_VeriDate          = DateTime.Now;
                                inRec.F_WarehouseId       = bodyinfo.F_WarehouseId;
                                inRec.F_WarehouseName     = bodyinfo.F_WarehouseName;
                                inRec.F_GoodsName         = bodyinfo.F_GoodsName;
                                inRec.F_GoodsId           = bodyinfo.F_GoodsId;
                                inRec.F_CargoPositionId   = bodyinfo.F_CargoPositionId;
                                inRec.F_CargoPositionName = bodyinfo.F_CargoPositionName;
                                inRec.F_SpecifModel       = bodyinfo.F_SpecifModel;
                                inRec.F_SellingPrice      = bodyinfo.F_SellingPrice;
                                inRec.F_PurchasePrice     = bodyinfo.F_PurchasePrice;
                                inRec.F_Unit              = bodyinfo.F_Unit;
                                inRec.F_InStockNum        = bodyinfo.F_InStockNum;
                                inRec.F_ReturnNum         = bodyinfo.F_ReturnNum;
                                inRec.F_CreatorTime       = DateTime.Now;
                                Sys_InReturnHistory.Instance.Insert(inRec, dbtran.Transaction);


                                //添加库存履历
                                Sys_StockHistoryInfo instockHistory = new Sys_StockHistoryInfo();
                                instockHistory.F_Id                = Guid.NewGuid().ToString();
                                instockHistory.F_EnCode            = bodyinfo.F_OrderNo;
                                instockHistory.F_Batch             = bodyinfo.F_SerialNum;
                                instockHistory.F_Vendor            = hinfo.F_Vendor;
                                instockHistory.F_VendorName        = bodyinfo.F_VendorName;
                                instockHistory.F_Verify            = user;
                                instockHistory.F_Maker             = hinfo.F_Maker;
                                instockHistory.F_Contacts          = hinfo.F_Contacts;
                                instockHistory.F_TelePhone         = hinfo.F_TelePhone;
                                instockHistory.F_Address           = hinfo.F_Address;
                                instockHistory.F_VeriDate          = DateTime.Now;
                                instockHistory.F_WarehouseId       = bodyinfo.F_WarehouseId;
                                instockHistory.F_WarehouseName     = bodyinfo.F_WarehouseName;
                                instockHistory.F_BllCategory       = "入库退货";
                                instockHistory.F_GoodsName         = bodyinfo.F_GoodsName;
                                instockHistory.F_GoodsId           = bodyinfo.F_GoodsId;
                                instockHistory.F_CargoPositionId   = bodyinfo.F_CargoPositionId;
                                instockHistory.F_CargoPositionName = bodyinfo.F_CargoPositionName;
                                instockHistory.F_SpecifModel       = bodyinfo.F_SpecifModel;
                                instockHistory.F_Unit              = bodyinfo.F_Unit;
                                instockHistory.F_OperationNum      = 0 - bodyinfo.F_ReturnNum;
                                instockHistory.F_CreatorTime       = DateTime.Now;
                                Sys_StockHistory.Instance.Insert(instockHistory, dbtran.Transaction);


                                //更新主表入库状态
                                hash = new Hashtable();
                                hash.Add("F_State", 1);
                                PI_ReturnHead.Instance.Update(bodyinfo.F_HId, hash, dbtran.Transaction);
                            }
                            else
                            {
                                return(bodyinfo.F_WarehouseName + "仓库库存不足,产品:" + bodyinfo.F_GoodsName + "库存为:" + stock.F_Number);
                            }

                            //更新审核状态
                            string sql = string.Format("update PI_ReturnHead set F_Status=1,F_VeriDate='{0}',F_Verify='{1}' where F_Id='{2}'", date, user, Id);
                            hash = new Hashtable();
                            base.ExecuteNonQuery(sql, hash, dbtran.Transaction);
                        }
                        dbtran.Commit();
                        return("单据审核成功");
                    }
                    catch (Exception ex)
                    {
                        dbtran.RollBack();
                        return("操作失败");

                        throw ex;
                    }
                }
            }
        }