Beispiel #1
0
        //获取指定的OutStock
        public static DataSet GetOutStock1(int i_OutStockID)
        {
            DataSet  ds = new DataSet();
            OutStock tO = new OutStock();

            ds = SQLiteHelper.ExecuteDataSet("SELECT A.OutStockID,A.OutStockDate,A.OutStockNum,A.OutStockType,A.OutBillAmt,A.OutBillRemark,A.OutMan,A.UseMan,B.CompanyID,B.CompanyName,C.ProjectID,C.ProjectName,D.WareHouseID,D.WareHouseName FROM OutStock A,Companies B,Projects C,WareHouses D WHERE A.CompanyID=B.CompanyID AND A.ProjectID=C.ProjectID AND A.WareHouseID=D.WareHouseID AND A.OutStockID=@ID", i_OutStockID);

            return(ds);
        }
        public void AddOutStock(OutStock stock)
        {
            OutGoingPen tempPen = new OutGoingPen();

            tempPen.Name  = "Fasto";
            tempPen.Count = 100;
            stock.Add(tempPen);

            tempPen       = new OutGoingPen();
            tempPen.Name  = "Gripper";
            tempPen.Count = 100;
            stock.Add(tempPen);
        }
Beispiel #3
0
        public void AddOutStock(OutStock stock)
        {
            OutGoingPen tempPen = new OutGoingPen();

            tempPen.Name  = "Fasto";
            tempPen.Count = 100;
            Console.WriteLine("Parts going out: '{0}', Quantity: '{1}'", tempPen.Name, tempPen.Count);
            stock.Add(tempPen);

            tempPen       = new OutGoingPen();
            tempPen.Name  = "Gripper";
            tempPen.Count = 100;
            Console.WriteLine("Parts going out: '{0}', Quantity: '{1}'", tempPen.Name, tempPen.Count);
            stock.Add(tempPen);
        }
Beispiel #4
0
        public void RemoveStockFromInventory(Inventory stock)
        {
            OutGoingPen tempPen  = new OutGoingPen();
            OutStock    outStock = new OutStock();

            tempPen.Name  = "Fasto1";
            tempPen.Count = 100;
            outStock.Add(tempPen);

            tempPen       = new OutGoingPen();
            tempPen.Name  = "Gripper";
            tempPen.Count = 50;
            outStock.Add(tempPen);

            StoreInventory.RemoveFromInventory(outStock, MLPen);
        }
Beispiel #5
0
        //删除出库单
        public static void DelCKD(int i_OutStockID)
        {
            ISession     session = NHibernateHelper.sessionFactory.OpenSession();
            ITransaction tx      = session.BeginTransaction();

            try
            {
                OutStock toDel1 = session.Get <OutStock>(i_OutStockID);


                //删除OutStockItem中的相关项
                List <int> toDelItemsID = BLL.CKBLL.GetItemIDs(toDel1.OutStockID);
                foreach (int i in toDelItemsID)
                {
                    OutStockItems toDel2 = session.Get <OutStockItems>(i);
                    session.Delete(toDel2);
                    //更新库存
                    PKModel pk = new PKModel();
                    pk.GoodsID     = toDel2.GoodsID;
                    pk.WareHouseID = toDel1.WareHouseID;
                    WareHouseStock tWH = session.Get <WareHouseStock>(pk);
                    if (tWH != null)
                    {
                        tWH.Number += toDel2.GoodsQty;
                        tWH.Amount += toDel2.GoodsAmt;
                        if (tWH.Number != 0)
                        {
                            tWH.Price = Math.Round(tWH.Amount / tWH.Number, 2);
                        }
                        else
                        {
                            tWH.Price = 0;
                        }
                    }
                }
                session.Delete(toDel1);
                //事务提交
                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }
        }
Beispiel #6
0
        public bool insertNewEntity(OutStock s)
        {
            int rowsAffected = 0;

            SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@OutID", SqlDbType.NVarChar), new SqlParameter("@OutType", SqlDbType.Int), new SqlParameter("@StoreHouseID", SqlDbType.Int), new SqlParameter("@HouseDetailID", SqlDbType.Int), new SqlParameter("@UserName", SqlDbType.NVarChar), new SqlParameter("@TradeDate", SqlDbType.NVarChar), new SqlParameter("@TotalPrice", SqlDbType.Float), new SqlParameter("@AlreadyPay", SqlDbType.Float), new SqlParameter("@Description", SqlDbType.NVarChar), new SqlParameter("@State", SqlDbType.Int), new SqlParameter("@CreateDate", SqlDbType.NVarChar) };
            parameters[0].Value  = s.OutID;
            parameters[1].Value  = s.OutType;
            parameters[2].Value  = s.StoreHouseID;
            parameters[3].Value  = s.HouseDetailID;
            parameters[4].Value  = s.UserName;
            parameters[5].Value  = s.TradeDate;
            parameters[6].Value  = s.TotalPrice;
            parameters[7].Value  = s.AlreadyPay;
            parameters[8].Value  = s.Description;
            parameters[9].Value  = s.State;
            parameters[10].Value = s.CreateDate;
            SQLHelper.RunProcedure("p_OutStock_insertNewEntity", parameters, out rowsAffected);
            return(1 == rowsAffected);
        }
Beispiel #7
0
        //获取指定的OutStock
        public static OutStock GetOutStock(int i_OutStockID)
        {
            DataSet  ds = new DataSet();
            OutStock tO = new OutStock();

            ds = SQLiteHelper.ExecuteDataSet("SELECT A.OutStockID,A.OutStockDate,A.OutStockNum,A.OutStockType,A.OutBillAmt,A.OutBillRemark,A.OutMan,A.UseMan,B.CompanyID,B.CompanyName,C.ProjectID,C.ProjectName,D.WareHouseID,D.WareHouseName FROM OutStock A,Companies B,Projects C,WareHouses D WHERE A.CompanyID=B.CompanyID AND A.ProjectID=C.ProjectID AND A.WareHouseID=D.WareHouseID AND A.OutStockID=@ID", i_OutStockID);
            foreach (DataRow mDr in ds.Tables[0].Rows)
            {
                tO.CompanyID     = Convert.ToInt32(mDr["CompanyID"].ToString());
                tO.ProjectID     = Convert.ToInt32(mDr["ProjectID"].ToString());
                tO.OutBillAmt    = Convert.ToDecimal(mDr["OutBillAmt"].ToString());
                tO.OutStockDate  = Convert.ToDateTime(mDr["OutStockDate"].ToString());
                tO.OutStockID    = Convert.ToInt32(mDr["OutStockID"].ToString());
                tO.OutStockNum   = mDr["OutStockNum"].ToString();
                tO.OutStockType  = Convert.ToInt32(mDr["OutStockType"].ToString());
                tO.OutBillRemark = mDr["OutBillRemark"].ToString();
                tO.WareHouseID   = Convert.ToInt32(mDr["WareHouseID"].ToString());
                tO.UseMan        = mDr["UseMan"].ToString();
                tO.OutMan        = mDr["OutMan"].ToString();
            }
            return(tO);
        }
Beispiel #8
0
    protected void init()
    {
        string action = Request.QueryString["action"].ToString();

        if (action.Equals("add"))
        {
            string str0 = Request.QueryString["OutID"].ToString();
            string str1 = Request.QueryString["CreateDate"].ToString();
            string str2 = Request.QueryString["StoreHouseID"].ToString();
            string str3 = Request.QueryString["HouseDetailID"].ToString();
            string str4 = Request.QueryString["OutType"].ToString();
            string str5 = Request.QueryString["AlreadyPay"].ToString();
            string str6 = Request.QueryString["TradeDate"].ToString();
            string str7 = Request.QueryString["Description"].ToString();

            OutStock a = new OutStock();
            a.AlreadyPay    = float.Parse(str5);
            a.OutID         = str0;
            a.OutType       = int.Parse(str4);
            a.CreateDate    = str1;
            a.Description   = str7;
            a.HouseDetailID = int.Parse(str3);
            a.StoreHouseID  = int.Parse(str2);
            a.TradeDate     = str6;
            a.UserName      = getUserName();

            Leyp.SQLServerDAL.Stock.Factory.getOutStockDAL().insertNewEntity(a);
            Response.Write("0");
            Response.End();
        }
        else if (action.Equals("delete"))
        {
            string str0 = Request.QueryString["OutID"].ToString();
            Leyp.SQLServerDAL.Stock.Factory.getOutStockDAL().deleteEitity(str0);
            Response.Write("成功删除单据" + str0);
            Response.End();
        }
    }
Beispiel #9
0
 //设定出库委脱的函数指针
 public void SetOutStockHandler(OutStock target)
 {
     testOutStock = target;
 }
Beispiel #10
0
        void FormOutBillLoad(object sender, EventArgs e)
        {
            //填充工程项目
            ds2 = BLL.ProjectsBLL.GetAllProjects();
            comboBoxProjectID.DataSource    = ds2.Tables[0];
            comboBoxProjectID.DisplayMember = "ProjectName";
            comboBoxProjectID.ValueMember   = "ProjectID";

            //填充仓库
            ds3 = BLL.WareHouseBLL.GetAllWareHouse();
            comboBoxWareHouseID.DataSource    = ds3.Tables[0];
            comboBoxWareHouseID.DisplayMember = "WareHouseName";
            comboBoxWareHouseID.ValueMember   = "WareHouseID";

            //填充项目供货商
            if (comboBoxProjectID.SelectedValue != null)
            {
                ds1 = BLL.CompanyBLL.GetProjectCompanies2(Convert.ToInt32(comboBoxProjectID.SelectedValue));
                comboBoxCompanyID.DataSource    = ds1.Tables[0];
                comboBoxCompanyID.DisplayMember = "CompanyName";
                comboBoxCompanyID.ValueMember   = "CompanyID";
            }

            //填充DataGridView1
            if (this.Text == "出库单-新增")
            {
                FillDateGridView1(0);
            }
            else
            {
                FillDateGridView1(i_OutStockID);
                //取得数据填充
                OutStock tR = BLL.CKBLL.GetOutStock(i_OutStockID);
                comboBoxCompanyID.SelectedValue   = tR.CompanyID;
                comboBoxProjectID.SelectedValue   = tR.ProjectID;
                comboBoxWareHouseID.SelectedValue = tR.WareHouseID;
                int i_OutStockType = tR.OutStockType;
                switch (i_OutStockType)
                {
                case 0:
                    comboBoxOutStockType.Text = "领料出库";
                    break;

                case 1:
                    comboBoxOutStockType.Text = "领料退货";
                    break;

                case 2:
                    comboBoxOutStockType.Text = "物资借出";
                    break;

                case 3:
                    comboBoxOutStockType.Text = "物资归还";
                    break;

                case 4:
                    comboBoxOutStockType.Text = "报损出库";
                    break;

                case 5:
                    comboBoxOutStockType.Text = "报损退货";
                    break;

                default:
                    break;
                }

                waterTextBoxRemark.Text    = tR.OutBillRemark;
                textBoxID.Text             = tR.OutStockID.ToString();
                textBoxNumber.Text         = tR.OutStockNum;
                dateTimePickerRKDate.Value = tR.OutStockDate;
                dTotal             = tR.OutBillAmt;
                textBoxOutAmt.Text = tR.OutBillAmt.ToString();
                textBoxUseMan.Text = tR.UseMan;
                textBoxOutMan.Text = tR.OutMan;


                //入库日期也不准修改
                dateTimePickerRKDate.Enabled = false;
            }
            comboBoxWareHouseID.Tag = "1";
            iWareHouseID            = Convert.ToInt32(comboBoxWareHouseID.SelectedValue);
        }
Beispiel #11
0
        void ModifyOutStock()
        {
            //修改数据,用事务处理
            OutStock tR = new OutStock();

            tR.OutStockID  = Convert.ToInt32(textBoxID.Text);
            tR.OutStockNum = textBoxNumber.Text;

            tR.OutStockDate = dateTimePickerRKDate.Value;
            tR.ProjectID    = Convert.ToInt32(comboBoxProjectID.SelectedValue.ToString());
            tR.CompanyID    = Convert.ToInt32(comboBoxCompanyID.SelectedValue.ToString());
            tR.WareHouseID  = Convert.ToInt32(comboBoxWareHouseID.SelectedValue.ToString());
            int    i_OutStockType = 0;
            string tS1            = comboBoxOutStockType.Text;

            switch (tS1)
            {
            case "领料出库":
                i_OutStockType = 0;
                break;

            case "领料退货":
                i_OutStockType = 1;
                break;

            case "物资借出":
                i_OutStockType = 2;
                break;

            case "物资归还":
                i_OutStockType = 3;
                break;

            case "报损出库":
                i_OutStockType = 4;
                break;

            case "报损归还":
                i_OutStockType = 5;
                break;

            default:
                break;
            }
            tR.OutStockType = i_OutStockType;

            tR.OutBillAmt    = dTotal;
            tR.OutBillRemark = waterTextBoxRemark.Text;
            List <OutStockItems> tItems = new List <OutStockItems>();

            int row = dataGridView1.Rows.Count;            //得到总行数

            for (int i = 0; i < row - 1; i++)
            {
                //最后一行是新行,不算
                OutStockItems tItem;
                tItem             = new OutStockItems();
                tItem.GoodsID     = Convert.ToInt32(dataGridView1.Rows[i].Cells["GoodsID"].Value);
                tItem.GoodsQty    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsQty"].Value);
                tItem.GoodsPrc    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsPrc"].Value);
                tItem.GoodsAmt    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsAmt"].Value);
                tItem.GoodsName   = dataGridView1.Rows[i].Cells["GoodsName"].Value.ToString();
                tItem.GoodsSpec   = dataGridView1.Rows[i].Cells["GoodsSpec"].Value.ToString();
                tItem.GoodsUnit   = dataGridView1.Rows[i].Cells["GoodsUnit"].Value.ToString();
                tItem.UsePosition = dataGridView1.Rows[i].Cells["UsePosition"].Value.ToString();

                tItems.Add(tItem);
            }

            BLL.CKBLL.ModifyCKD(tR, tItems);
            this.Close();
        }
Beispiel #12
0
        void AddNewOutStock()
        {
            //保存数据,注意使用事务进行处理
            //1、入库单号的生成与修改;2、入库单的增加;3入库单项目的增加
            OutStock tR = new OutStock();

            tR.OutStockDate = dateTimePickerRKDate.Value;
            tR.ProjectID    = Convert.ToInt32(comboBoxProjectID.SelectedValue.ToString());
            tR.CompanyID    = Convert.ToInt32(comboBoxCompanyID.SelectedValue.ToString());
            tR.WareHouseID  = Convert.ToInt32(comboBoxWareHouseID.SelectedValue.ToString());
            int    i_OutStockType = 0;
            string tS1            = comboBoxOutStockType.Text;

            switch (tS1)
            {
            case "领料出库":
                i_OutStockType = 0;
                break;

            case "领料退货":
                i_OutStockType = 1;
                break;

            case "物资借出":
                i_OutStockType = 2;
                break;

            case "物资归还":
                i_OutStockType = 3;
                break;

            case "报损出库":
                i_OutStockType = 4;
                break;

            case "报损归还":
                i_OutStockType = 5;
                break;

            default:
                break;
            }
            tR.OutStockType  = i_OutStockType;
            tR.OutBillAmt    = dTotal;
            tR.OutBillRemark = waterTextBoxRemark.Text;
            tR.UseMan        = textBoxUseMan.Text;
            tR.OutMan        = textBoxOutMan.Text;
            tR.RecordStatus  = "已记账";
            List <OutStockItems> tItems = new List <OutStockItems>();

            int row = dataGridView1.Rows.Count;            //得到总行数

            for (int i = 0; i < row - 1; i++)
            {
                //最后一行是新行,不算
                if (dataGridView1.Rows[i].Cells["GoodsID"].Value == DBNull.Value)
                {
                    continue;
                }
                OutStockItems tItem;
                tItem             = new OutStockItems();
                tItem.GoodsID     = Convert.ToInt32(dataGridView1.Rows[i].Cells["GoodsID"].Value);
                tItem.GoodsQty    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsQty"].Value);
                tItem.GoodsPrc    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsPrc"].Value);
                tItem.GoodsAmt    = Convert.ToDecimal(dataGridView1.Rows[i].Cells["GoodsAmt"].Value);
                tItem.GoodsName   = dataGridView1.Rows[i].Cells["GoodsName"].Value.ToString();
                tItem.GoodsSpec   = dataGridView1.Rows[i].Cells["GoodsSpec"].Value.ToString();
                tItem.GoodsUnit   = dataGridView1.Rows[i].Cells["GoodsUnit"].Value.ToString();
                tItem.UsePosition = dataGridView1.Rows[i].Cells["UsePosition"].Value.ToString();
                if (dataGridView1.Rows[i].Cells["UsePosition"].Value != null)
                {
                    tItem.UsePosition = dataGridView1.Rows[i].Cells["UsePosition"].Value.ToString();
                }
                tItems.Add(tItem);
            }

            BLL.CKBLL.AddCKD(tR, tItems);
            this.Close();
        }
Beispiel #13
0
 //设定出库委脱的函数指针
 public void SetOutStockHandler(OutStock target)
 {
     testOutStock = target;
 }
Beispiel #14
0
        //修改出库单
        public static void ModifyCKD(OutStock tOutStock, List <OutStockItems> tItemsList)
        {
            //修改出库单
            ISession     session = NHibernateHelper.sessionFactory.OpenSession();
            ITransaction tx      = session.BeginTransaction();

            try
            {
                //得到未变更的出库单
                OutStock tOldOutStock = new OutStock();
                tOldOutStock = BLL.CKBLL.GetOutStock(tOutStock.OutStockID);

                //删除OutStockItem中的相关项
                List <int> toDelItemsID = BLL.CKBLL.GetItemIDs(tOldOutStock.OutStockID);
                foreach (int i in toDelItemsID)
                {
                    OutStockItems toDel1 = session.Get <OutStockItems>(i);
                    session.Delete(toDel1);
                    //更新库存
                    PKModel pk = new PKModel();
                    pk.GoodsID     = toDel1.GoodsID;
                    pk.WareHouseID = tOldOutStock.WareHouseID;
                    WareHouseStock tWH = session.Get <WareHouseStock>(pk);
                    if (tWH == null)
                    {
                        WareHouseStock tWHNew = new WareHouseStock();
                        tWHNew.Pk = pk;

                        tWHNew.Number = -toDel1.GoodsQty;
                        tWHNew.Price  = toDel1.GoodsPrc;
                        tWHNew.Amount = -toDel1.GoodsAmt;
                        session.Save(tWHNew);
                    }
                    else
                    {
                        tWH.Number += toDel1.GoodsQty;
                        tWH.Amount += toDel1.GoodsAmt;
                        if (tWH.Number != 0)
                        {
                            tWH.Price = Math.Round(tWH.Amount / tWH.Number, 2);
                        }
                        session.Flush();
                    }
                }
                //保存OutStock的修改
                OutStock toModify = session.Get <OutStock>(tOldOutStock.OutStockID);
                toModify.CompanyID     = tOutStock.CompanyID;
                toModify.ProjectID     = tOutStock.ProjectID;
                toModify.OutBillAmt    = tOutStock.OutBillAmt;
                toModify.OutBillRemark = tOutStock.OutBillRemark;
                toModify.WareHouseID   = tOutStock.WareHouseID;
                toModify.OutStockType  = tOutStock.OutStockType;

                //将新的OutStockItem加入
                foreach (OutStockItems tOI in tItemsList)
                {
                    tOI.OutStockID = tOutStock.OutStockID;
                    session.Save(tOI);
                    //更新库存
                    PKModel pk = new PKModel();
                    pk.GoodsID     = tOI.GoodsID;
                    pk.WareHouseID = tOutStock.WareHouseID;
                    WareHouseStock tWH = session.Get <WareHouseStock>(pk);
                    if (tWH == null)
                    {
                        WareHouseStock tWHNew = new WareHouseStock();
                        tWHNew.Pk = pk;

                        tWHNew.Number = -tOI.GoodsQty;
                        tWHNew.Price  = tOI.GoodsPrc;
                        tWHNew.Amount = -tOI.GoodsAmt;
                        session.Save(tWHNew);
                    }
                    else
                    {
                        tWH.Number -= tOI.GoodsQty;
                        tWH.Amount -= tOI.GoodsAmt;
                        if (tWH.Number != 0)
                        {
                            tWH.Price = Math.Round(tWH.Amount / tWH.Number, 2);
                        }
                        session.Flush();
                    }
                }


                //事务提交
                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }
        }
Beispiel #15
0
        //增加出库单
        public static void AddCKD(OutStock tOutStock, List <OutStockItems> tItemsList)
        {
            //保存数据,注意使用事务进行处理
            //1、出库单号的生成与修改;2、出库单的增加;3、出库单项目的增加
            ISession     session = NHibernateHelper.sessionFactory.OpenSession();
            ITransaction tx      = session.BeginTransaction();

            try
            {
                //查最后的出库单号
                IList <ProgOptions> Key1 = BLL.ProgOptionsBLL.GetOptions("CKD_LastNumber");
                string s_CKD_LastNo      = Key1[0].OptionsValue;
                string s_CKD_NewNo;
                string s_CKD_LastYM;
                string s_CKD_NewYM;
                int    LastNo;
                int    NewNo;
                string s_NewNo;
                s_CKD_NewYM = DateTime.Today.ToString("yyyyMM");
                if (s_CKD_LastNo.Length == 10)
                {
                    //4位年+2位月+4位顺序号
                    s_CKD_LastYM = s_CKD_LastNo.Substring(0, 6);
                    LastNo       = Convert.ToInt32(s_CKD_LastNo.Substring(6, 4));
                    if (s_CKD_NewYM != s_CKD_LastYM)
                    {
                        NewNo = 1;
                    }
                    else
                    {
                        NewNo = LastNo + 1;
                    }
                }
                else
                {
                    //没有数据
                    NewNo = 1;
                }
                s_NewNo = "0000" + NewNo.ToString();
                s_NewNo = s_NewNo.Substring(s_NewNo.Length - 4, 4);
                //将新的最后编号保存到数据库
                ProgOptions t1 = session.Get <ProgOptions>(Key1[0].OptionsID);
                t1.OptionsID     = Key1[0].OptionsID;
                t1.OptionsKey    = Key1[0].OptionsKey;
                s_CKD_NewNo      = s_CKD_NewYM + s_NewNo;
                t1.OptionsValue  = s_CKD_NewNo;
                t1.OptionsRemark = Key1[0].OptionsRemark;

                //保存出库单
                tOutStock.OutStockNum = "CKD-" + t1.OptionsValue;
                session.Save(tOutStock);


                //保存出库单项
                foreach (OutStockItems tOI in tItemsList)
                {
                    tOI.OutStockID = tOutStock.OutStockID;
                    session.Save(tOI);
                    //更新库存
                    PKModel pk = new PKModel();
                    pk.GoodsID     = tOI.GoodsID;
                    pk.WareHouseID = tOutStock.WareHouseID;
                    WareHouseStock tWH = session.Get <WareHouseStock>(pk);
                    if (tWH == null)
                    {
                        WareHouseStock tWHNew = new WareHouseStock();
                        tWHNew.Pk = pk;

                        tWHNew.Number = -tOI.GoodsQty;
                        tWHNew.Price  = tOI.GoodsPrc;
                        tWHNew.Amount = -tOI.GoodsAmt;
                        session.Save(tWHNew);
                    }
                    else
                    {
                        tWH.Number -= tOI.GoodsQty;
                        tWH.Amount -= tOI.GoodsAmt;
                        if (tWH.Number != 0)
                        {
                            tWH.Price = Math.Round(tWH.Amount / tWH.Number, 2);
                        }
                        session.Flush();
                    }
                }
                //事务提交
                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }
        }
        public void CreateOutStock(IList <RequestViewModel> models, string temp_outStockNumber)
        {
            if (models == null || models.Count <= 0)
            {
                return;
            }
            RequestHeader  requestHeader     = _requestHeaderRepository.GetRequestHeader(models.FirstOrDefault()?.RequestNumber);
            OutStockHeader newOutStockHeader = _mapper.Map <OutStockHeader>(requestHeader);
            var            allPurchases      = _purchaseService.GetAllPurchaseNumberByItemCode();
            int            lastSerialNumber  = _outStockHeaderRepository.GetLatestSerialNumber(DateTime.Now);

            newOutStockHeader.SerialNo             = ++lastSerialNumber;
            newOutStockHeader.OutStockHeaderNumber = string.IsNullOrEmpty(temp_outStockNumber) ? ServiceHelper.GenerateCodeNumber("CK", newOutStockHeader.SerialNo) : temp_outStockNumber;
            newOutStockHeader.RequestNumber        = requestHeader.RequestHeaderNumber;
            try
            {
                _outStockHeaderRepository.Add(newOutStockHeader);
                _outStockHeaderRepository.Save();
                foreach (RequestViewModel model in models)
                {
                    OutStock newOutStock = _mapper.Map <OutStock>(model);
                    newOutStock.Type           = model.RequestCategory;
                    newOutStock.OutStockNumber = newOutStockHeader.OutStockHeaderNumber;
                    var selectedPurchase = allPurchases.Where(x => x.RequestId == model.RequestId).FirstOrDefault();
                    if (selectedPurchase != null)
                    {
                        newOutStock.Price = selectedPurchase.Price;
                    }

                    switch (model.RequestCategory)
                    {
                    //报废出库
                    case RequestCategoriesEnum.工程车维修 when model.ToDestroy:
                        newOutStock.Status = ProcessStatusEnum.报废出库;
                        break;

                    //非报废出库
                    case RequestCategoriesEnum.工程车维修:
                        switch (model.Status)
                        {
                        case ProcessStatusEnum.工程车维修入库:
                            newOutStock.Status = ProcessStatusEnum.维修中;
                            _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.维修中);
                            break;

                        case ProcessStatusEnum.维修完成:
                            newOutStock.Status = ProcessStatusEnum.工程车维修出库;
                            _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.工程车维修出库);
                            break;
                        }

                        break;

                    case RequestCategoriesEnum.工具维修 when model.ToDestroy:     //报废出库
                        newOutStock.Status = ProcessStatusEnum.报废出库;
                        break;

                    case RequestCategoriesEnum.工具维修:
                        newOutStock.Status = ProcessStatusEnum.维修中;
                        _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.维修中);
                        break;

                    case RequestCategoriesEnum.工具借出:
                        newOutStock.Status = ProcessStatusEnum.借出出库;
                        _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.借出出库);
                        break;

                    case RequestCategoriesEnum.工程车补给:
                    case RequestCategoriesEnum.员工补给:
                        newOutStock.Status = ProcessStatusEnum.补给出库;
                        _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.补给出库);
                        break;

                    case RequestCategoriesEnum.采购退货:
                        newOutStock.Status = ProcessStatusEnum.退货出库;
                        _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.退货出库);
                        break;

                    default:
                        newOutStock.Status = ProcessStatusEnum.已出库;
                        _requestService.UpdateRequestProcessStatus(model.RequestId, ProcessStatusEnum.已出库);
                        break;
                    }

                    _outStockRepository.Add(newOutStock);
                    _outStockRepository.Save();
                    _managementService.UpdateStorage(model.Code, model.PositionName, -newOutStock.Total, newOutStock.OutStockNumber);
                }
            }
            catch (DbUpdateException)
            {
            }
        }