示例#1
0
 public ActionResult ConfirmRecordStatus(string note, long RequestID)
 {
     try
     {
         if (RequestID > 0)
         {
             INV_TransRequest ob = repository.InvTransRequestRepository.GetByID(Convert.ToInt64(RequestID));
             if (ob.RecordStatus == "CHK")
             {
                 ob.ApproveComments = note;
                 ob.RecordStatus    = "CNF";
                 ob.ApprovedBy      = Convert.ToInt32(Session["UserID"]);
                 ob.ApproveDate     = DateTime.Now;
                 repository.InvTransRequestRepository.Update(ob);
                 int flag = repository.Save();
                 if (flag == 1)
                 {
                     _vmMsg.Type = Enums.MessageType.Success;
                     _vmMsg.Msg  = "Approved Successfully.";
                 }
                 else
                 {
                     _vmMsg.Type = Enums.MessageType.Error;
                     _vmMsg.Msg  = "Approved Faild.";
                 }
             }
             else
             {
                 _vmMsg.Type = Enums.MessageType.Error;
                 _vmMsg.Msg  = "Only Confirmed Record Should be Approved.";
             }
         }
         else
         {
             _vmMsg.Type = Enums.MessageType.Error;
             _vmMsg.Msg  = "Data Save First Before Checked.";
         }
     }
     catch (DbEntityValidationException e)
     {
         // throw new Exception e;
     }
     return(Json(new { msg = _vmMsg }));
 }
 public ActionResult LoanReturnRequestStatusUpdate(string type, long requestID, string note)
 {
     if (type.Equals("Checker"))
     {
         INV_TransRequest item = repository.InvTransRequestRepository.GetByID(requestID);
         item.CheckedBy     = Convert.ToInt32(Session["UserID"]);
         item.CheckComments = note;
         item.CheckDate     = DateTime.Now;
         item.RecordStatus  = "CHK";
         repository.InvTransRequestRepository.Update(item);
         repository.Save();
         _vmMsg.Type = Enums.MessageType.Success;
         _vmMsg.Msg  = "Checked Successfully.";
     }
     else if (type.Equals("Recommend"))
     {
         INV_TransRequest item = repository.InvTransRequestRepository.GetByID(requestID);
         item.RecommendBy       = Convert.ToInt32(Session["UserID"]);
         item.RecommendComments = note;
         item.RecommendDate     = DateTime.Now;
         item.RecordStatus      = "REC";
         repository.InvTransRequestRepository.Update(item);
         repository.Save();
         _vmMsg.Type = Enums.MessageType.Success;
         _vmMsg.Msg  = "Recommended Successfully.";
     }
     else if (type.Equals("Approver"))
     {
         INV_TransRequest item = repository.InvTransRequestRepository.GetByID(requestID);
         item.RecommendBy       = Convert.ToInt32(Session["UserID"]);
         item.RecommendComments = note;
         item.RecommendDate     = DateTime.Now;
         item.RecordStatus      = "CNF";
         repository.InvTransRequestRepository.Update(item);
         repository.Save();
         _vmMsg.Type = Enums.MessageType.Success;
         _vmMsg.Msg  = "Recommended Successfully.";
     }
     else
     {
     }
     return(Json(new { msg = _vmMsg }));
 }
示例#3
0
        public ActionResult DeleteLoanRequest(long id)
        {
            INV_TransRequest isGradeExist = repository.InvTransRequestRepository.GetByID(id);

            if (isGradeExist != null)
            {
                try
                {
                    var item = repository.InvTransRequestRefRepository.Get(filter: ob => ob.RequestID == id);
                    if (item != null)
                    {
                        foreach (var i in item)
                        {
                            repository.InvTransRequestRefRepository.Delete(i.TransRequestRefID);
                            repository.Save();
                        }
                    }
                    repository.InvTransRequestRepository.Delete(isGradeExist);
                    repository.Save();
                    _vmMsg.Type = Enums.MessageType.Success;
                    _vmMsg.Msg  = "Data Deleted Successfully.";
                }
                catch (Exception ex)
                {
                    _vmMsg.Type = Enums.MessageType.Error;
                    _vmMsg.Msg  = "Confirmation faild due to communication error.";
                }
            }
            else
            {
                _vmMsg.Type = Enums.MessageType.Error;
                _vmMsg.Msg  = "Please Delete Chemical Info First.";
            }

            return(Json(_vmMsg, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Save(LoanReturnIssue dataSet)
        {
            decimal RemainingQty   = 0;
            decimal ReturnQuantity = 0;
            decimal TotalReturnQty = 0;

            try
            {
                if (dataSet.RequestID == 0)
                {
                    INV_TransRequest ob = new INV_TransRequest();
                    if (dataSet.RequestType == "RLRR")
                    {
                        ob.RequestNo = DalCommon.GetPreDefineNextCodeByUrl("LoanReturnRequest/LoanReturnIssue");
                    }
                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestType        = dataSet.RequestType;
                    ob.Remarks            = dataSet.Remarks;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo;
                    ob.ToSource           = dataSet.ToSource;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.RecordStatus       = "NCF";
                    ob.SetOn = DateTime.Now;
                    if (dataSet.ReturnMethod == "Exchange Other Item")
                    {
                        ob.ReturnMethod = "EOI";
                    }
                    else if (dataSet.ReturnMethod == "Doller to Doller")
                    {
                        ob.ReturnMethod = "DTD";
                    }
                    else if (dataSet.ReturnMethod == "Exchange Same Item")
                    {
                        ob.ReturnMethod = "ESI";
                    }
                    else
                    {
                        ob.ReturnMethod = dataSet.ReturnMethod;
                    }

                    ob.SetBy      = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedOn = DateTime.Now;
                    ob.IPAddress  = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Insert(ob);

                    INV_TransRequestRef obRef = new INV_TransRequestRef();
                    obRef.TransRequestRefNo = ob.RequestNo;
                    obRef.RequestID         = ob.RequestID;
                    obRef.RefRequestID      = Convert.ToInt64(dataSet.RefRequestID);
                    obRef.Remark            = dataSet.Remarks;
                    obRef.SetOn             = DateTime.Now;
                    obRef.SetBy             = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedBy        = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn        = DateTime.Now;
                    obRef.IPAddress         = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Insert(obRef);

                    if (dataSet.lstLoanReturnIssueItems != null)
                    {
                        foreach (var item in dataSet.lstLoanReturnIssueItems)
                        {
                            TotalReturnQty = (item.RemainingQty * item.ReturnRate);

                            RemainingQty   = item.RemainingQty == null ? 0 : Convert.ToDecimal(item.RemainingQty);
                            ReturnQuantity = item.ReturnQuantity == null ? 0 : Convert.ToDecimal(item.ReturnQuantity);
                            INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                            obReqItem.RequestID         = ob.RequestID;
                            obReqItem.TransRequestRefID = obRef.TransRequestRefID;


                            obReqItem.RefItemID = Convert.ToInt32(item.ItemID);
                            if (item.ReturnMethodID == "ESI")
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }

                            obReqItem.ReferenceQty  = Convert.ToDecimal(item.ReferenceQty);
                            obReqItem.ReferenceUnit = Convert.ToByte(item.ReferenceUnit);
                            if (item.ReceiveCurrencyID != null)
                            {
                                obReqItem.ReferenceCurrency = Convert.ToByte(item.ReceiveCurrencyID);
                            }
                            obReqItem.ReferenceRate  = Convert.ToDecimal(item.ReceiveRate);
                            obReqItem.ReferenceValue = Convert.ToDecimal(item.ReceiveValue);
                            obReqItem.ReturnMethod   = item.ReturnMethodID == null ? "" : item.ReturnMethodID;
                            if (item.ReturnUnitID != null)
                            {
                                obReqItem.ReturnUnit = Convert.ToByte(item.ReturnUnitID);
                            }
                            if (item.ReturnItemID != null)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ReturnItemID);
                            }
                            if (item.ReturnCurrencyID != null)
                            {
                                obReqItem.ReturnCurrency = Convert.ToByte(item.ReturnCurrencyID);
                            }
                            if (item.ReturnExchangeRate != null)
                            {
                                obReqItem.ExchangeRate = Convert.ToDecimal(item.ReturnExchangeRate);
                            }
                            if (item.ReturnRate != null)
                            {
                                obReqItem.ReturnRate = Convert.ToDecimal(item.ReturnRate);
                            }
                            obReqItem.RefItemDueQty = 0;                                      //Math.Round(item.RemainingQty - ((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)),2);
                            obReqItem.ReturnValue   = Convert.ToDecimal(item.ReturnQuantity); //Math.Round(((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)),2);
                            obReqItem.SetBy         = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn         = DateTime.Now;
                            obReqItem.ModifiedBy    = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn    = DateTime.Now;
                            obReqItem.IPAddress     = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Insert(obReqItem);
                        }
                    }
                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = ob.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Saved Successfully.";
                    }
                    catch (Exception ex)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
                else
                {  // Update
                    INV_TransRequest ob = repository.InvTransRequestRepository.GetByID(dataSet.RequestID);
                    ob.RequestDate = DalCommon.SetDate(dataSet.RequestDate);
                    if (dataSet.ReturnMethod == "Exchange Other Item")
                    {
                        ob.ReturnMethod = "EOI";
                    }
                    else if (dataSet.ReturnMethod == "Doller to Doller")
                    {
                        ob.ReturnMethod = "DTD";
                    }
                    else if (dataSet.ReturnMethod == "Exchange Same Item")
                    {
                        ob.ReturnMethod = "ESI";
                    }
                    else
                    {
                        ob.ReturnMethod = dataSet.ReturnMethod;
                    }
                    ob.RequestType        = dataSet.RequestType;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo;
                    ob.ToSource           = dataSet.ToSource;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.Remarks            = dataSet.Remarks;
                    ob.ModifiedOn         = DateTime.Now;
                    ob.ModifiedBy         = Convert.ToInt32(Session["UserID"]);
                    ob.IPAddress          = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Update(ob);

                    INV_TransRequestRef obRef = repository.InvTransRequestRefRepository.Get(filter: o => o.RequestID == dataSet.RequestID).FirstOrDefault();
                    obRef.Remark     = dataSet.Remarks;
                    obRef.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn = DateTime.Now;
                    obRef.IPAddress  = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Update(obRef);
                    if (dataSet.lstLoanReturnIssueItems != null)
                    {
                        foreach (var item in dataSet.lstLoanReturnIssueItems)
                        {
                            TotalReturnQty = (item.RemainingQty * item.ReturnRate);
                            RemainingQty   = item.RemainingQty == null ? 0 : Convert.ToDecimal(item.RemainingQty);
                            ReturnQuantity = item.ReturnQuantity == null ? 0 : Convert.ToDecimal(item.ReturnQuantity);

                            INV_TransRequestItem obReqItem = repository.InvTransRequestItemRepository.GetByID(item.TransRequestItemID);

                            //obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                            obReqItem.RefItemID     = Convert.ToInt32(item.ItemID);
                            obReqItem.ReferenceQty  = Convert.ToDecimal(item.ReferenceQty);
                            obReqItem.ReferenceUnit = Convert.ToByte(item.ReferenceUnit);
                            if (item.ReceiveCurrencyID != null)
                            {
                                obReqItem.ReferenceCurrency = Convert.ToByte(item.ReceiveCurrencyID);
                            }
                            if (item.ReturnMethodID == "ESI")
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }

                            obReqItem.ReferenceRate  = Convert.ToDecimal(item.ReceiveRate);
                            obReqItem.ReferenceValue = Convert.ToDecimal(item.ReceiveValue);
                            obReqItem.ReturnMethod   = item.ReturnMethodID == null ? "" : item.ReturnMethodID;
                            if (item.ReturnUnitID != null)
                            {
                                obReqItem.ReturnUnit = Convert.ToByte(item.ReturnUnitID);
                            }
                            if (item.ReturnItemID != null)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ReturnItemID);
                            }
                            if (item.ReturnCurrencyID != null)
                            {
                                obReqItem.ReturnCurrency = Convert.ToByte(item.ReturnCurrencyID);
                            }
                            if (item.ReturnExchangeRate != null)
                            {
                                obReqItem.ExchangeRate = Convert.ToDecimal(item.ReturnExchangeRate);
                            }
                            if (item.ReturnRate != null)
                            {
                                obReqItem.ReturnRate = Convert.ToDecimal(item.ReturnRate);
                            }
                            obReqItem.RefItemDueQty = 0;                                      //Math.Round((item.RemainingQty + (obReqItem.ReturnValue == null?0 : Convert.ToDecimal(obReqItem.ReturnValue))) - ((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)), 2);
                            obReqItem.ReturnValue   = Convert.ToDecimal(item.ReturnQuantity); //Math.Round(((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)), 2);
                            obReqItem.SetBy         = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn         = DateTime.Now;
                            obReqItem.ModifiedBy    = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn    = DateTime.Now;
                            obReqItem.IPAddress     = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Update(obReqItem);
                        }
                    }

                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = dataSet.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Updated Successfully.";
                    }
                    catch (DbEntityValidationException e)
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (var eve in e.EntityValidationErrors)
                        {
                            sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                        eve.Entry.Entity.GetType().Name,
                                                        eve.Entry.State));
                            foreach (var ve in eve.ValidationErrors)
                            {
                                sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                            ve.PropertyName,
                                                            ve.ErrorMessage));
                            }
                        }

                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                        throw new DbEntityValidationException(sb.ToString(), e);
                    }
                }
            }
            catch (DbEntityValidationException e)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var eve in e.EntityValidationErrors)
                {
                    sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                eve.Entry.Entity.GetType().Name,
                                                eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                    ve.PropertyName,
                                                    ve.ErrorMessage));
                    }
                }

                _vmMsg.Type = Enums.MessageType.Error;
                _vmMsg.Msg  = "Saved Faild.";
                throw new DbEntityValidationException(sb.ToString(), e);
            }
            return(Json(new { msg = _vmMsg }));
        }
示例#5
0
        public ActionResult GetLoanReceiveRequestByID(long RequestID)
        {
            INV_TransRequest data = repository.InvTransRequestRepository.GetByID(RequestID);
            TransRequest     ob   = new TransRequest();

            ob.RequestID   = Convert.ToInt64(data.RequestID);
            ob.RequestNo   = data.RequestNo;
            ob.RequestDate = Convert.ToDateTime(data.RequestDate).ToString("dd/MM/yyyy");
            ob.RequestType = data.RequestType;
            ob.RequestFrom = data.RequestFrom;
            ob.RequestTo   = data.RequestTo;
            if (ob.RequestType == "LNIR")
            {
                //  ob.RequestFromName = repository.StoreRepository.GetByID(Convert.ToInt32(data.RequestTo)).StoreName;// data.RequestFrom;
                ob.RequestToName = repository.StoreRepository.GetByID(Convert.ToInt32(data.RequestTo)).StoreName;

                if (data.FromSource.Equals("SUP") || data.FromSource.Equals("LAG"))
                {
                    ob.RequestFromName = repository.SysSupplierRepository.GetByID(Convert.ToInt32(data.RequestFrom)).SupplierName;
                }
                else if (data.FromSource == "STR")
                {
                    ob.RequestFromName = repository.StoreRepository.GetByID(Convert.ToInt32(data.RequestFrom)).StoreName;// data.RequestFrom;
                }
                else
                {
                    ob.RequestFromName = "";
                }
                ob.FromSource = data.FromSource;
            }
            else
            {
                ob.RequestFromName = repository.StoreRepository.GetByID(Convert.ToInt32(data.RequestFrom)).StoreName;// data.RequestFrom;
                if (data.ToSource.Equals("SUP") || data.ToSource.Equals("LAG"))
                {
                    ob.RequestToName = repository.SysSupplierRepository.GetByID(Convert.ToInt32(data.RequestTo)).SupplierName;
                }
                else if (data.ToSource.Equals("STR"))
                {
                    ob.RequestToName = repository.StoreRepository.GetByID(Convert.ToInt32(data.RequestTo)).StoreName;// data.RequestFrom;
                }
                else
                {
                    ob.RequestToName = "";
                }
            }
            ob.ReturnMethod       = data.ReturnMethod;
            ob.ExpectetReturnTime = Convert.ToByte(data.ExpectetReturnTime).ToString();
            ob.CheckComments      = data.CheckComments;
            ob.ApproveComments    = data.ApproveComments;
            ob.RecordStatus       = data.RecordStatus;
            ob.ToSource           = data.ToSource;
            var reqItemData = repository.InvTransRequestItemRepository.Get(filter: o => o.RequestID == ob.RequestID);

            ob.ChemicalSelectedList = new List <TransRequestItem>();
            foreach (var item in reqItemData)
            {
                TransRequestItem obItem = new TransRequestItem();
                obItem.TransRequestItemID = item.TransRequestItemID;
                obItem.ItemID             = Convert.ToInt32(item.ItemID);
                if (obItem.ItemID > 0)
                {
                    obItem.ItemName = repository.SysChemicalItemRepository.GetByID(obItem.ItemID).ItemName;
                }
                if (Convert.ToInt32(item.PackSize) > 0)
                {
                    obItem.PackSize = repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName;
                }

                obItem.SizeID = item.PackSize.ToString();
                if (Convert.ToInt32(item.SizeUnit) > 0)
                {
                    obItem.SizeUnit = repository.SysUnitRepository.GetByID(Convert.ToInt32(item.SizeUnit)).UnitName;
                }

                obItem.SizeUnitID    = item.SizeUnit.ToString();
                obItem.PackQty       = Convert.ToInt32(item.PackQty);
                obItem.RefItemID     = Convert.ToInt32(item.RefItemID);
                obItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                obItem.SupplierID    = Convert.ToInt32(item.RefSupplierID);
                if (item.RefSupplierID != null)
                {
                    obItem.RefSupplierName = repository.SysSupplierRepository.GetByID(Convert.ToInt32(item.RefSupplierID)).SupplierName;
                }

                obItem.ReturnMethod = item.ReturnMethod;
                obItem.ReferenceQty = item.TransQty == null ? 0 : (decimal)item.TransQty;
                decimal d = item.TransUnit == null ? 0 : Convert.ToInt32(item.TransUnit);
                if (d > 0)
                {
                    obItem.ReferenceUnit = repository.SysUnitRepository.GetByID(d).UnitName;
                }
                else
                {
                    obItem.ReferenceUnit = "";
                }
                obItem.ReferenceUnitID = item.ReferenceUnit.ToString();
                ob.ChemicalSelectedList.Add(obItem);
            }
            return(Json(ob, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        public ActionResult Save(TransRequest dataSet)
        {
            try
            {
                //######################################
                // Session["UserID"] = 1;
                if (dataSet.RequestID == 0)
                {
                    INV_TransRequest ob = new INV_TransRequest();
                    if (dataSet.RequestType == "LNIR")
                    {
                        ob.RequestNo  = DalCommon.GetPreDefineNextCodeByUrl("LoanRequest/LoanIssueRequest");
                        ob.FromSource = dataSet.ToSource;
                        //ob.ToSource = "STR";
                    }
                    else if (dataSet.RequestType == "LNRR")
                    {
                        ob.RequestNo = DalCommon.GetPreDefineNextCodeByUrl("LoanRequest/Index");
                        //ob.FromSource = "STR";
                        ob.ToSource = dataSet.ToSource;
                    }
                    else
                    {
                    }

                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestType        = dataSet.RequestType;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo.ToString();
                    ob.ReturnMethod       = dataSet.ReturnMethod;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.RecordStatus       = "NCF";
                    ob.SetOn      = DateTime.Now;
                    ob.SetBy      = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedOn = DateTime.Now;

                    ob.IPAddress = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Insert(ob);

                    INV_TransRequestRef obRef = new INV_TransRequestRef();
                    obRef.TransRequestRefNo = ob.RequestNo;
                    obRef.RequestID         = ob.RequestID;
                    //obRef.RefRequestID = ob.RequestID;
                    obRef.ReturnMethod = dataSet.ReturnMethod;
                    obRef.SetOn        = DateTime.Now;
                    obRef.SetBy        = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedBy   = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn   = DateTime.Now;
                    obRef.IPAddress    = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Insert(obRef);

                    if (dataSet.ChemicalSelectedList != null)
                    {
                        foreach (var item in dataSet.ChemicalSelectedList)
                        {
                            INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                            obReqItem.RequestID         = ob.RequestID;
                            obReqItem.ReturnMethod      = dataSet.ReturnMethod;
                            obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                            if (item.ItemID > 0)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }
                            if (Convert.ToByte(item.PackSize) > 0)
                            {
                                obReqItem.PackSize = Convert.ToByte(item.PackSize);
                            }

                            obReqItem.PackQty = Convert.ToInt32(item.PackQty);
                            if (Convert.ToByte(item.SizeUnit) > 0)
                            {
                                obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                            }
                            if (obReqItem.PackQty != null && item.PackSize != null)
                            {
                                obReqItem.TransQty = obReqItem.PackQty * ((Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName)));
                            }
                            if (Convert.ToByte(item.ReferenceUnit) > 0)
                            {
                                obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                            }

                            if (item.RefSupplierID > 0)
                            {
                                obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                            }

                            obReqItem.SetBy      = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn      = DateTime.Now;
                            obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn = DateTime.Now;
                            obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Insert(obReqItem);
                        }
                    }
                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = repository.InvTransRequestRepository.Get().Last().RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Saved Successfully.";
                    }
                    catch (Exception ex)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
                else    // Update
                {
                    INV_TransRequest ob = repository.InvTransRequestRepository.GetByID(dataSet.RequestID);
                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo.ToString();
                    ob.ReturnMethod       = dataSet.ReturnMethod;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.ModifiedOn         = DateTime.Now;
                    ob.ModifiedBy         = Convert.ToInt32(Session["UserID"]);
                    ob.FromSource         = "STR";
                    if (ob.RequestType == "LNIR")
                    {
                        ob.FromSource = dataSet.ToSource;
                    }
                    else if (ob.RequestType == "LNRR")
                    {
                        ob.ToSource = dataSet.ToSource;
                    }
                    else
                    {
                    }
                    //ob.ToSource = dataSet.ToSource;
                    ob.IPAddress = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Update(ob);

                    INV_TransRequestRef obRef = repository.InvTransRequestRefRepository.Get(filter: o => o.RequestID == dataSet.RequestID).FirstOrDefault();
                    obRef.ReturnMethod = dataSet.ReturnMethod;
                    obRef.ModifiedBy   = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn   = DateTime.Now;
                    obRef.IPAddress    = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Update(obRef);
                    if (dataSet.ChemicalSelectedList != null)
                    {
                        foreach (var item in dataSet.ChemicalSelectedList)
                        {
                            if (item.TransRequestItemID == 0)
                            {
                                INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                                obReqItem.RequestID         = ob.RequestID;
                                obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                                obReqItem.ReturnMethod      = dataSet.ReturnMethod;
                                if (Convert.ToInt32(item.ItemID) > 0)
                                {
                                    obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                                }
                                if (Convert.ToByte(item.PackSize) > 0)
                                {
                                    obReqItem.PackSize = Convert.ToByte(item.PackSize);
                                }
                                else
                                {
                                    obReqItem.PackSize = 0;
                                }
                                obReqItem.PackQty = Convert.ToInt32(item.PackQty);
                                if (Convert.ToByte(item.SizeUnit) > 0)
                                {
                                    obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                                }

                                if (obReqItem.PackQty > 0 && item.PackSize != null)
                                {
                                    obReqItem.TransQty = obReqItem.PackQty * ((Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName)));//Convert.ToDecimal(item.ReferenceQty);
                                }
                                else
                                {
                                    obReqItem.TransQty = Convert.ToDecimal(item.ReferenceQty);
                                }

                                if (Convert.ToByte(item.ReferenceUnit) > 0)
                                {
                                    obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                                }
                                if (Convert.ToInt32(item.RefSupplierID) > 0)
                                {
                                    obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                                }
                                obReqItem.SetBy      = Convert.ToInt32(Session["UserID"]);
                                obReqItem.SetOn      = DateTime.Now;
                                obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                                obReqItem.ModifiedOn = DateTime.Now;
                                obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                                repository.InvTransRequestItemRepository.Insert(obReqItem);
                            }
                            else
                            {
                                INV_TransRequestItem obReqItem = repository.InvTransRequestItemRepository.GetByID(item.TransRequestItemID);
                                if (Convert.ToInt32(item.ItemID) > 0)
                                {
                                    obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                                }
                                if (Convert.ToByte(item.PackSize) > 0)
                                {
                                    obReqItem.PackSize = Convert.ToByte(item.PackSize);
                                }
                                else
                                {
                                    obReqItem.PackSize = 0;
                                }
                                obReqItem.PackQty      = Convert.ToInt32(item.PackQty);
                                obReqItem.ReturnMethod = dataSet.ReturnMethod;

                                if (Convert.ToByte(item.SizeUnit) > 0)
                                {
                                    obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                                }
                                if (obReqItem.PackQty > 0 && item.PackSize != null)
                                {
                                    obReqItem.TransQty = obReqItem.PackQty * (Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName));    //Convert.ToDecimal(item.ReferenceQty);
                                }
                                else
                                {
                                    obReqItem.TransQty = Convert.ToDecimal(item.ReferenceQty);
                                }
                                if (Convert.ToByte(item.ReferenceUnit) > 0)
                                {
                                    obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                                }

                                if (Convert.ToInt32(item.RefSupplierID) > 0)
                                {
                                    obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                                }
                                obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                                obReqItem.ModifiedOn = DateTime.Now;
                                obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                                repository.InvTransRequestItemRepository.Update(obReqItem);
                            }
                        }
                    }

                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = dataSet.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Updated Successfully.";
                    }
                    catch (Exception x)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
            }
            catch (DbEntityValidationException e)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var eve in e.EntityValidationErrors)
                {
                    sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                eve.Entry.Entity.GetType().Name,
                                                eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                    ve.PropertyName,
                                                    ve.ErrorMessage));
                    }
                }
                throw new DbEntityValidationException(sb.ToString(), e);
            }
            return(Json(new { msg = _vmMsg }));
        }