Ejemplo n.º 1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         BindDict("Unit", ddlUnit);             //将计量单位下拉框绑定字典
         if (Request.QueryString["ID"] == null) //入库单录入页面
         {
             _TPurchase = null;
             ClearTextBox(); //清除入库单相关服务器控件的内容
         }
         else //入库单修改页面
         {
             id = Request.QueryString["ID"];
             //调用业务规则层-入库单服务类方法获得要修改的实体
             _TPurchase = PurchaseService.Instance.GetPurchase(Convert.ToInt32(id));
             ModelToTextBox(_TPurchase); //将入库单实体赋值给对应的服务器控件
         }
         LoadData();                     //加载GridView数据
         EntryDetailInputPage(false);    //切换到入库单页面
         if (Request.QueryString["Audit"] != null || Request.QueryString["Query"] != null)
         {
             SetReadOnly(); //如果是审核或查询页面调用的,设置所有输入控件只读
         }
         // lblOperator.Text = LoginManager.GetUserName(Context.User.Identity.Name);
     }
 }
Ejemplo n.º 2
0
 private void ModelToTextBox(TPurchase info)
 {
     txtInvoiceCode.Text = info.Content.InvoiceCode;   //发票号
     if (!string.IsNullOrEmpty(info.Content.Provider)) //供应商
     {
         hidProvider.Value = info.Content.Provider;
         Base_DictionaryInfo tempClient = DictionaryInfoService.Instance.GetInfo(Convert.ToInt32(info.Content.Provider));
         //   Base_ClientInfo tempClient = ClientInfoService.Instance.GetClientInfoByCode(info.Content.Provider);
         if (tempClient != null)
         {
             txtProviderName.Text  = tempClient.ValueName;
             hidProviderName.Value = tempClient.ValueCode;
         }
     }
     txtPurchaseBillCode.Text = info.Content.PurchaseBillCode;        //入库单号
     txtPurchaseDate.Text     = info.Content.PurchaseDate.ToString(); //入库日期
     txtInvoiceDate.Text      = info.Content.InvoiceDate.ToString();
     if (!string.IsNullOrEmpty(info.Content.CheckMan))                //经办人
     {
         lblStorageUser.Text = RequestSession.GetSessionUser().UserAccount.ToString();
         // hidPurchaseMan.Value = info.Content.CheckMan;
         //EmployeeInfo tempEmployee = EmployeeInfoService.Instance.GetEmployeeInfoByCode(info.Content.CheckMan);
         //if (tempEmployee != null)
         //{
         //    txtPurchaseManName.Text = tempEmployee.Name;
         //    hidPurchaseManName.Value = tempEmployee.Name;
         //}
     }
 }
Ejemplo n.º 3
0
        private void LoadData()
        {
            TPurchase infoList = _TPurchase;
            //调用业务层返回货品信息列表
            List <MMS_MaterialInfo> productList = MaterialInfoService.Instance.GetAllInfo();

            //将入库单货品与货品信息关联
            var query = from info in infoList.Detail
                        where info.OprType != OperateType.otDelete
                        join product in productList
                        on info.DetDetail.ProductCode equals product.Material_ID.ToString()
                        //  where info.DetDetail.Quantity-info.DetDetail.UseQuantity>0
                        select new
            {
                Id = info.DetDetail.ID,
                info.DetDetail.PurchaseBillCode,
                product.Material_ID,
                product.Material_Name,
                product.Material_Specification,
                Unit = product.Material_Unit,
                info.DetDetail.Quantity,
                info.DetDetail.Price,
                info.DetDetail.SeldPrice,
                info.DetDetail.Lot,
                info.DetDetail.ValidDate,
                Amount = info.DetDetail.Quantity * info.DetDetail.Price
            };

            dgvInfo.DataKeyNames = new[] { "Id" }; //设置GridView数据主键
            dgvInfo.DataSource   = query.ToList(); //设置GridView数据源
            dgvInfo.DataBind();
            //计算数量及金额汇总信息
            lblTotalQuantity.Text = infoList.Detail.Sum(itm => itm.DetDetail.Quantity).ToString("#");
            lblTotalAmount.Text   = infoList.Detail.Sum(itm => itm.DetDetail.Quantity * itm.DetDetail.Price).ToString("#.##");
        }
Ejemplo n.º 4
0
        private TPurchase ParserAddPurchase(Purchase purchase)
        {
            TPurchase tPurchase = new TPurchase();

            if (purchase != null)
            {
                tPurchase.PurchaseID             = purchase.PurchaseID;
                tPurchase.iPurchaseInvoiceNo     = purchase.iPurchaseInvoiceNo;
                tPurchase.strPurchaseInvoiceDate = purchase.strPurchaseInvoiceDate ?? " ";
                tPurchase.strSupplierName        = purchase.strSupplierName;
                tPurchase.strMasterDecNo         = purchase.strMasterDecNo ?? " ";
                tPurchase.strBLNo               = purchase.strBLNo ?? " ";
                tPurchase.strArrivalDate        = purchase.strArrivalDate ?? " ";
                tPurchase.strPurchaseInvoiceNo  = purchase.strPurchaseInvoiceNo ?? " ";
                tPurchase.dmlConversionRate     = purchase.dmlConversionRate;
                tPurchase.dcmlAED               = purchase.dcmlAED;
                tPurchase.dcmlJYP               = purchase.dcmlJYP;
                tPurchase.strPurchaseInvoiceNo  = purchase.strPurchaseInvoiceNo ?? " ";
                tPurchase.dtPurchaseInvoiceDate = purchase.dtPurchaseInvoiceDate;
                tPurchase.iSupplierID           = purchase.iSupplierID;

                tPurchase.strCustomerInvoiceNo = purchase.strCustomerInvoiceNo ?? " ";


                tPurchase.IsStockReceived = purchase.IsStockReceived;

                tPurchase.strReferenceNumber = purchase.strReferenceNumber;
                tPurchase.strRemark          = purchase.strRemark;
            }
            return(tPurchase);
        }
        private void TextBoxToModel(DataRow dr)
        {
            TPurchase       info        = _TPurchase;
            TPurchaseDetail tinfoDetail = new TPurchaseDetail();

            tinfoDetail.DetDetail = new MMS_PurchaseDetail();
            //TPurchaseDetail tinfoDetail = _TPurchase.Detail[0];
            string BillCode = dr["PurchaseBillCode"].ToString().Trim();
            int    BillId   = 0;

            if (BillId == 0)
            {
                info.Content.AuditFlag        = false;
                info.Content.InvoiceCode      = dr["InvoiceCode"].ToString().Trim();
                info.Content.Provider         = dr["Provider"].ToString().Trim();
                info.Content.PurchaseBillCode = dr["PurchaseBillCode"].ToString();
                if (!string.IsNullOrEmpty(dr["InvoiceDate"].ToString().Trim()))
                {
                    info.Content.InvoiceDate = Convert.ToDateTime(dr["InvoiceDate"].ToString().Trim());
                }

                if (!string.IsNullOrEmpty(dr["InvoiceCode"].ToString().Trim()))
                {
                    info.Content.InvoiceCode = dr["InvoiceCode"].ToString().Trim();
                }
                info.Content.PurchaseDate = DateTime.Now;
                info.Content.CheckMan     = RequestSession.GetSessionUser().UserAccount.ToString();
                info.Content.Operator     = Context.User.Identity.Name;
                info.Content.OperateDate  = DateTime.Now;
                info.OprType = OperateType.otInsert;
            }

            MMS_PurchaseDetail detail = tinfoDetail.DetDetail;

            detail.PurchaseBillCode = dr["PurchaseBillCode"].ToString(); //入库单号
            detail.ProductCode      = dr["ProductCode"].ToString();      //货品代码
            detail.Lot       = dr["Lot"].ToString();                     //批号
            detail.ValidDate = dr["ValidDate"].ToString();               //有效期
            if (!string.IsNullOrEmpty(dr["Quantity"].ToString()))        //数量
            {
                detail.Quantity = Convert.ToInt32(dr["Quantity"].ToString());
            }
            if (!string.IsNullOrEmpty(dr["Price"].ToString())) //单价
            {
                detail.Price = Convert.ToDouble(dr["Price"].ToString());
            }

            tinfoDetail.DetDetail = detail;
            tinfoDetail.OprType   = OperateType.otInsert;
            info.Detail.Add(tinfoDetail); //将操作实体添加到入库货品集合中

            int tempId = PurchaseService.Instance.SavePurchase(info);
        }
Ejemplo n.º 6
0
        //public dynamic GetAllPurchaseReport()
        //{
        //    var jsonData = new
        //    {
        //        total = 1,
        //        page = 1,
        //        records = auctionContext.TPurchases.ToList().Count,
        //        rows = (
        //          from purchase in
        //              (from AM in auctionContext.TPurchases

        //               //join t1 in auctionContext.MCountries on AM.iCountry equals t1.iCountry
        //               //join t2 in auctionContext.MCities on AM.iCity equals t2.iCity

        //               select new
        //               {
        //                   PurchaseID = AM.PurchaseID,
        //                   iPurchaseInvoiceNo = AM.iPurchaseInvoiceNo,
        //                   strPurchaseInvoiceNo = AM.strPurchaseInvoiceNo,

        //                   strPurchaseInvoiceDate = AM.strPurchaseInvoiceDate,
        //                   strSupplierName = AM.strSupplierName,
        //                   strMasterDecNo = AM.strMasterDecNo,
        //                   strBLNo = AM.strBLNo,
        //                   strArrivalDate = AM.strArrivalDate,
        //                   dmlConversionRate = AM.dmlConversionRate,
        //                   dcmlAED = AM.dcmlAED,
        //                   dcmlJYP = AM.dcmlJYP,


        //               }).OrderBy(a => a.iPurchaseInvoiceNo).ToList()
        //          select new
        //          {
        //              id = purchase.PurchaseID,
        //              cell = new string[] {
        //       Convert.ToString(purchase.PurchaseID),Convert.ToString(purchase.iPurchaseInvoiceNo),
        //       Convert.ToString(purchase.strPurchaseInvoiceNo),Convert.ToString(purchase.strPurchaseInvoiceDate),
        //       Convert.ToString(purchase.strSupplierName),Convert.ToString(purchase.strMasterDecNo),
        //       Convert.ToString(purchase.strBLNo),Convert.ToString(purchase.strArrivalDate),
        //       Convert.ToString(purchase.dmlConversionRate),
        //       Convert.ToString(purchase.dcmlAED),
        //       Convert.ToString(purchase.dcmlJYP)

        //       //,Convert.ToString(customers.iPersonID),
        //       //Convert.ToString(customers.strPersonFirstName+" "+customers.strPersonLastName),Convert.ToString(customers.strCompanyName),
        //       //Convert.ToString(customers.CustomerPhoto),Convert.ToString(customers.CustomerDate)
        //                }
        //          }).ToArray()
        //    };
        //    return jsonData;
        //}

        public TPurchase Get(int id)
        {
            TPurchase purchase = new TPurchase();

            //var test = from a in auctionContext.TPurchases
            //           where a.PurchaseID == id
            //           select a
            //           ;
            purchase = auctionContext.TPurchases.Where(a => a.PurchaseID == id).SingleOrDefault();
            // purchase = auctionContext.TPurchases.Where(a => a.PurchaseID == id).FirstOrDefault();
            return(purchase);
        }
Ejemplo n.º 7
0
 /// <summary>
 ///   保存入库单
 /// </summary>
 /// <param name="obj"> 自定义入库单实体 </param>
 /// <returns> 入库单主表ID号 </returns>
 public int SavePurchase(TPurchase obj)
 {
     if (obj.Content.ID.ToString() != null && obj.Content.ID > 0)
     {
         MMS_PurchaseContent content = dao.GetInfo(obj.Content.ID);
         if (content.AuditFlag == true)
         {
             throw new Exception("该单据已经审核" + content.PurchaseBillCode);
         }
     }
     return(dao.SavePurchase(obj));
 }
Ejemplo n.º 8
0
 /// <summary>
 ///   入库单审核确认
 /// </summary>
 /// <param name="id"> </param>
 /// <param name="isAudit"> </param>
 /// <param name="operatorCode"> </param>
 /// <returns> </returns>
 public bool AuditPurchase(int id, bool isAudit, string operatorCode)
 {
     using (TransactionScope ts = new TransactionScope())   //开启DTC事务
     {
         TPurchase           tPur    = dao.GetPurchase(id); //取入库单组合实体
         MMS_PurchaseContent content = tPur.Content;        //取入库单主内容实体
         if (content.AuditFlag == true)                     //如果入库单已审核
         {
             throw new Exception("该单据已经审核" + content.PurchaseBillCode);
         }
         foreach (TPurchaseDetail tPurDetail in tPur.Detail) //遍历入库单货品
         {
             MMS_Store storeParam = new MMS_Store();
             storeParam.Warehouse   = tPur.Content.WareHouse;
             storeParam.ProductCode = tPurDetail.DetDetail.ProductCode;
             MMS_Store sto = null;
             //根据仓库、货品代码取库存表中该货品信息
             sto = daoStore.GetStore(storeParam);
             if (sto == null)                       //库存中没有该货品
             {
                 sto             = new MMS_Store(); //创建库存表实例
                 sto.Warehouse   = tPur.Content.WareHouse;
                 sto.ProductCode = tPurDetail.DetDetail.ProductCode;
                 sto.Quantity    = tPurDetail.DetDetail.Quantity;
                 sto.Price       = tPurDetail.DetDetail.Price;
                 sto.Amount      = sto.Quantity * sto.Price;
                 daoStore.InsertInfo(sto); //将该货品信息插入到库存表
                 sto.Memo = "";
             }
             else //库存中有该货品
             {
                 sto.Quantity += tPurDetail.DetDetail.Quantity; //累加货品数量
                 //累加计算货品金额
                 sto.Amount += tPurDetail.DetDetail.Quantity * tPurDetail.DetDetail.Price;
                 if (sto.Quantity > 0)
                 {
                     sto.Price = sto.Amount / sto.Quantity; //根据金额、数量计算单价
                 }
                 daoStore.UpdateInfo(sto);                  //更新库存表
             }
         }
         content.AuditFlag   = isAudit; //入库审核标志
         content.Operator    = operatorCode;
         content.OperateDate = DateTime.Now;
         dao.UpdateInfo(content); //更新入库单的审核标志
         ts.Complete();           //提交事务
     }
     return(true);
 }
Ejemplo n.º 9
0
        protected void btnOK_Click(object sender, EventArgs e)
        {
            TPurchase info = _TPurchase;

            if (string.IsNullOrEmpty(detailId)) //插入操作
            {
                //创建入库货品实例
                TPurchaseDetail tinfoDetail = new TPurchaseDetail();
                tinfoDetail.DetDetail = new MMS_PurchaseDetail();
                if (info.Detail.Count > 0) //新插入的以-1开始,以后渐减
                {
                    //设置新录入入库货品的主键ID,以-1开始,以后渐减
                    int minId = info.Detail.Min(itm => itm.DetDetail.ID);
                    if (minId < 0)
                    {
                        tinfoDetail.DetDetail.ID = minId - 1;
                    }
                    else
                    {
                        tinfoDetail.DetDetail.ID = -1;
                    }
                }
                else //该入库单没有货品信息
                {
                    tinfoDetail.DetDetail.ID = -1;
                }
                DetailTextBoxToModel(tinfoDetail); //将入库货品赋值给实体
                tinfoDetail.OprType = OperateType.otInsert;
                info.Detail.Add(tinfoDetail);      //将操作实体添加到入库货品集合中
                _TPurchase = info;

                ClearDetailTextBox(); //清除入库货品服务器控件内容
                LoadData();           //加载Gridview数据
            }
            else //编辑操作
            {
                //根据入库货品ID取实体
                TPurchaseDetail tinfoDetail = info.Detail.First(itm => itm.DetDetail.ID == Convert.ToInt32(detailId));
                DetailTextBoxToModel(tinfoDetail);               //将服务器控件赋给实体
                if (tinfoDetail.OprType != OperateType.otInsert) //如果是新插入的仍保留插入状态
                {
                    tinfoDetail.OprType = OperateType.otUpdate;
                }
                _TPurchase = info;
                LoadData();                  //加载GridView数据
                EntryDetailInputPage(false); //切换到入库单录入页面
            }
        }
Ejemplo n.º 10
0
        private void TextBoxToModel(TPurchase info)
        {
            info.Content.AuditFlag        = false;
            info.Content.InvoiceCode      = txtInvoiceCode.Text;
            info.Content.Provider         = hidProvider.Value;
            info.Content.PurchaseBillCode = txtPurchaseBillCode.Text;
            if (!string.IsNullOrEmpty(txtInvoiceDate.Text))
            {
                info.Content.InvoiceDate = Convert.ToDateTime(txtInvoiceDate.Text);
            }

            if (!string.IsNullOrEmpty(txtPurchaseDate.Text))
            {
                info.Content.PurchaseDate = Convert.ToDateTime(txtPurchaseDate.Text);
            }
            info.Content.CheckMan = RequestSession.GetSessionUser().UserAccount.ToString();
        }
Ejemplo n.º 11
0
        /// <summary>
        ///   根据主键值获取入库单实体
        /// </summary>
        /// <param name="id"> </param>
        /// <returns> </returns>
        public TPurchase GetPurchase(int id)
        {
            TPurchase resu = new TPurchase(); //创建入库单实体

            resu.OprType = OperateType.otNone;
            //取入库单主内容信息赋值给实体
            resu.Content = dc.MMS_PurchaseContent.Where(itm => itm.ID == id).First();
            //取入库单货品明细信息
            List <MMS_PurchaseDetail> tempList =
                dc.MMS_PurchaseDetail.Where(itm => itm.PurchaseBillCode == resu.Content.PurchaseBillCode).ToList();

            foreach (MMS_PurchaseDetail item in tempList)
            {
                TPurchaseDetail TDetail = new TPurchaseDetail();
                TDetail.OprType   = OperateType.otNone;
                TDetail.DetDetail = item;
                resu.Detail.Add(TDetail); //将入库单货品添加到实体的入库货品列表
            }
            return(resu);
        }
Ejemplo n.º 12
0
        /// <summary>
        ///   GridView行命令事件,点击GridView行按钮时触发的事件
        /// </summary>
        /// <param name="sender"> </param>
        /// <param name="e"> </param>
        protected void dgvInfo_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.CommandName))                     //判断命令名是否为空
            {
                if (e.CommandName == "Edi")                               //如果触发的是详细信息按钮事件
                {
                    int      index  = Convert.ToInt32(e.CommandArgument); //取GridView行索引
                    GridView grid   = (GridView)e.CommandSource;          //取当前操作的GridView
                    int      tempId = Convert.ToInt32(grid.DataKeys[index].Value);
                    detailId = tempId.ToString();
                    TPurchaseDetail detail = _TPurchase.Detail.FirstOrDefault(itm => itm.DetDetail.ID == tempId);
                    ModelToDetailTextBox(detail); //将实体赋值给对应的服务器控件
                    EntryDetailInputPage(true);   //切换到货品录入页面
                }
                else if (e.CommandName == "Del")
                {
                    int      index = Convert.ToInt32(e.CommandArgument);          //取GridView行索引
                    GridView grid  = (GridView)e.CommandSource;                   //取当前操作的GridView
                    int      id    = Convert.ToInt32(grid.DataKeys[index].Value); //取GridView主键值

                    TPurchase       temp       = _TPurchase;
                    TPurchaseDetail tempDetail = temp.Detail.First(itm => itm.DetDetail.ID == id);
                    if (tempDetail.OprType == OperateType.otInsert) //如果是新插入的直接将其删除
                    {
                        temp.Detail.Remove(tempDetail);
                    }
                    else //如是不是新插入的置删除标志
                    {
                        tempDetail.OprType = OperateType.otDelete;
                    }
                    _TPurchase = temp;
                    LoadData();
                }
                else if (e.CommandName == "Page")
                {
                    LoadData();
                }
            }
        }
Ejemplo n.º 13
0
        private TPurchase ParserAddPurchase(Purchase purchase)
        {
            TPurchase tPurchase = new TPurchase();

            if (purchase != null)
            {
                tPurchase.PurchaseID             = purchase.PurchaseID;
                tPurchase.iPurchaseInvoiceNo     = purchase.iPurchaseInvoiceNo;
                tPurchase.strPurchaseInvoiceDate = purchase.strPurchaseInvoiceDate ?? " ";
                tPurchase.strSupplierName        = purchase.strSupplierName;
                tPurchase.strMasterDecNo         = purchase.strMasterDecNo ?? " ";
                tPurchase.strBLNo               = purchase.strBLNo ?? " ";
                tPurchase.strArrivalDate        = purchase.strArrivalDate ?? " ";
                tPurchase.strPurchaseInvoiceNo  = purchase.strPurchaseInvoiceNo ?? " ";
                tPurchase.dmlConversionRate     = purchase.dmlConversionRate;
                tPurchase.dcmlAED               = purchase.dcmlAED;
                tPurchase.dcmlJYP               = purchase.dcmlJYP;
                tPurchase.strPurchaseInvoiceNo  = purchase.strPurchaseInvoiceNo ?? " ";
                tPurchase.dtPurchaseInvoiceDate = purchase.dtPurchaseInvoiceDate;
            }
            return(tPurchase);
        }
Ejemplo n.º 14
0
        /// <summary>
        ///   保存入库单
        /// </summary>
        /// <param name="obj"> 自定义入库单实体 </param>
        /// <returns> 入库单主表ID号 </returns>
        public int SavePurchase(TPurchase obj)
        {
            if (obj.OprType == OperateType.otInsert)                //传入的是插入操作标志
            {
                dc.MMS_PurchaseContent.InsertOnSubmit(obj.Content); //执行插入操作
            }
            else if (obj.OprType == OperateType.otUpdate)           //传入的是修改操作标志
            {
                var query = from item in dc.MMS_PurchaseContent
                            where item.ID == obj.Content.ID
                            select item;
                BatchEvaluate.Eval(obj.Content, query.First());     //调用Eval方法进行实体间赋值
            }
            else if (obj.OprType == OperateType.otDelete)           //传入的是删除操作标志
            {
                dc.MMS_PurchaseContent.DeleteOnSubmit(obj.Content); //执行删除操作
            }

            foreach (TPurchaseDetail item in obj.Detail)                  //遍历采购计划货品明细
            {
                if (item.OprType == OperateType.otInsert)                 //传入的是插入操作标志
                {
                    dc.MMS_PurchaseDetail.InsertOnSubmit(item.DetDetail); //执行插入操作
                }
                else if (item.OprType == OperateType.otUpdate)            //传入的是修改操作标志
                {
                    var query = from itm in dc.MMS_PurchaseDetail
                                where itm.ID == item.DetDetail.ID
                                select itm;
                    BatchEvaluate.Eval(item.DetDetail, query.First());    //执行修改操作
                }
                else if (item.OprType == OperateType.otDelete)            //传入的是删除操作标志
                {
                    dc.MMS_PurchaseDetail.DeleteOnSubmit(item.DetDetail); //执行删除操作
                }
            }
            dc.SubmitChanges(); //最后提交操作
            return(obj.Content.ID);
        }
Ejemplo n.º 15
0
 protected void btnSave_Click(object sender, EventArgs e)
 {
     if (Page.IsValid)
     {
         TPurchase info = _TPurchase;
         if (info.Detail.Count == 0)
         {
             Response.Write("<Script>window.alert('请先录入明细信息!')</Script>");
             return;
         }
         TextBoxToModel(info);
         info.Content.Operator    = Context.User.Identity.Name;
         info.Content.OperateDate = DateTime.Now;
         if (string.IsNullOrEmpty(id)) //插入
         {
             info.OprType = OperateType.otInsert;
         }
         else //修改
         {
             info.OprType = OperateType.otUpdate;
         }
         int tempId = PurchaseService.Instance.SavePurchase(info);
         //PurchaseService.Instance.SavePurchase(info);
         if (tempId > 0)
         {
             _TPurchase = PurchaseService.Instance.GetPurchase(tempId);
             id         = tempId.ToString();
             ModelToTextBox(_TPurchase);
             LoadData();
         }
         Response.Write("<Script>window.alert('保存成功!')</Script>");
         ClearTextBox();
         dgvInfo.DataSource = null;
         dgvInfo.DataBind();
         _TPurchase = null;
     }
 }
Ejemplo n.º 16
0
        public bool SaveEdit(TPurchase purchase, List <Vehicle> griddata)
        {
            bool status = false;
            var  pur    = auctionContext.TPurchases.Where(a => a.PurchaseID == purchase.PurchaseID).FirstOrDefault();



            //var test = (from max in auctionContext.TPurchases
            //            where !String.IsNullOrEmpty(max.strPurchaseInvoiceNo)
            //            select Convert.ToInt32(max.strPurchaseInvoiceNo)).Max();


            int?invNo = auctionContext.TPurchases.Max(i => i.iPurchaseInvoiceNo) ?? 0;

            invNo = invNo + 1;

            if (purchase.PurchaseID > 0)
            {
                //Edit Existing Record

                if (pur != null && invNo > 0)
                {
                    pur.PurchaseID = purchase.PurchaseID;
                    // pur.iPurchaseInvoiceNo = invNo;
                    // pur.iPurchaseInvoiceNo = purchase.iPurchaseInvoiceNo;
                    pur.strPurchaseInvoiceDate = purchase.strPurchaseInvoiceDate;
                    pur.strSupplierName        = purchase.strSupplierName;
                    pur.strMasterDecNo         = purchase.strMasterDecNo;
                    pur.strBLNo               = purchase.strBLNo;
                    pur.strArrivalDate        = purchase.strArrivalDate;
                    pur.strInvoiceValue       = purchase.strInvoiceValue;
                    pur.dmlConversionRate     = purchase.dmlConversionRate;
                    pur.dcmlAED               = purchase.dcmlAED;
                    pur.dcmlJYP               = purchase.dcmlJYP;
                    pur.dtPurchaseInvoiceDate = purchase.dtPurchaseInvoiceDate;
                }
            }
            else
            {
                //Save
                purchase.iPurchaseInvoiceNo = invNo;
                //purchase.strPurchaseInvoiceNo = invNo;
                auctionContext.TPurchases.Add(purchase);
            }
            auctionContext.SaveChanges();

            var id = purchase.PurchaseID;

            // Assiging Purchase id to vehicles data
            griddata.ForEach(x => x.PurchaseID = id);



            foreach (var item in griddata)
            {
                if (item.iVehicleID > 0)
                {
                    var vehicle = auctionContext.Vehicles.Where(a => a.iVehicleID == item.iVehicleID).FirstOrDefault();
                    if (vehicle != null)
                    {
                        vehicle.iLotNum         = item.iLotNum;
                        vehicle.strGrade        = item.strGrade;
                        vehicle.strChassisNum   = item.strChassisNum;
                        vehicle.strCategory     = item.strCategory;
                        vehicle.strMake         = item.strMake;
                        vehicle.iModel          = item.iModel;
                        vehicle.iYear           = item.iYear;
                        vehicle.strColor        = item.strColor;
                        vehicle.dmlKM           = item.dmlKM;
                        vehicle.strOrigin       = item.strOrigin;
                        vehicle.iDoor           = item.iDoor;
                        vehicle.strLocation     = item.strLocation;
                        vehicle.weight          = item.weight;
                        vehicle.strHSCode       = item.strHSCode;
                        vehicle.ATMT            = item.ATMT;
                        vehicle.iCustomAssesVal = item.iCustomAssesVal;
                        vehicle.dmlDuty         = item.dmlDuty;
                        vehicle.iCustomValInJPY = item.iCustomValInJPY;

                        vehicle.strGradeA = item.strGradeA;
                        vehicle.strGradeB = item.strGradeB;
                        vehicle.dmlLitter = item.dmlLitter;
                        vehicle.strTrans  = item.strTrans;
                        vehicle.iMileage  = item.iMileage;
                    }
                }
                else
                {
                    item.IsStockRecieved = false;
                    auctionContext.Vehicles.Add(item);
                    //Vehicle vehicle = new Vehicle();

                    //    vehicle.IsStockRecieved = false;
                }
            }

            auctionContext.SaveChanges();
            status = true;
            return(status);
        }