public ActionResult _FilterPost(StockLineFilterViewModel vm)
        {
            List <StockLineViewModel> temp = _StockLineService.GetJobConsumptionForFilters(vm).ToList();
            StockMasterDetailModel    svm  = new StockMasterDetailModel();

            svm.StockLineViewModel = temp;
            StockHeader         Header   = new StockHeaderService(_unitOfWork).Find(vm.StockHeaderId);
            StockHeaderSettings settings = new StockHeaderSettingsService(_unitOfWork).GetStockHeaderSettingsForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId);

            svm.StockHeaderSettings = Mapper.Map <StockHeaderSettings, StockHeaderSettingsViewModel>(settings);

            return(PartialView("_Results", svm));
        }
Пример #2
0
        public ActionResult _FilterPost(RequisitionFiltersForIssue vm, string All)
        {
            List <StockLineViewModel> temp = _StockLineService.GetRequisitionsForFilters(vm, (string.IsNullOrEmpty(All) ? false : true)).ToList();

            StockMasterDetailModel svm = new StockMasterDetailModel();

            svm.StockLineViewModel = temp;
            //Getting Settings
            var Header = new StockHeaderService(_unitOfWork).Find(vm.StockHeaderId);

            svm.StockHeaderSettings = Mapper.Map <StockHeaderSettings, StockHeaderSettingsViewModel>(new StockHeaderSettingsService(_unitOfWork).GetStockHeaderSettingsForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId));
            return(PartialView("_Results", svm));
        }
Пример #3
0
        /// <summary>
        /// This function returns a new instance of ControlCollection class.
        /// The control collection is processed on the page which contains this UserControl
        /// for transaction posting.
        /// </summary>
        /// <returns></returns>
        private ControlData GetControls()
        {
            //Todo
            ControlData collection = new ControlData();

            collection.Date = Conversion.TryCastDate(this.DateTextBox.Text);

            collection.StoreId             = Conversion.TryCastInteger(GetDropDownValue(this.StoreDropDownList));
            collection.TransactionType     = this.TransactionTypeRadioButtonList.SelectedItem.Value;
            collection.PartyCode           = this.PartyCodeTextBox.Text;
            collection.PriceTypeId         = Conversion.TryCastInteger(GetDropDownValue(this.PriceTypeDropDownList));
            collection.ReferenceNumber     = this.ReferenceNumberTextBox.Text;
            collection.RunningTotal        = Conversion.TryCastDecimal(this.RunningTotalTextBox.Text);
            collection.TaxTotal            = Conversion.TryCastDecimal(this.TaxTotalTextBox.Text);
            collection.GrandTotal          = Conversion.TryCastDecimal(this.GrandTotalTextBox.Text);
            collection.ShippingAddressCode = this.ShippingAddressCodeHidden.Value;
            collection.ShippingCompanyId   = Conversion.TryCastInteger(GetDropDownValue(this.ShippingCompanyDropDownList));
            collection.ShippingCharge      = Conversion.TryCastDecimal(this.ShippingChargeTextBox.Text);
            collection.CashRepositoryId    = Conversion.TryCastInteger(GetDropDownValue(this.CashRepositoryDropDownList));
            collection.CostCenterId        = Conversion.TryCastInteger(GetDropDownValue(this.CostCenterDropDownList));
            collection.AgentId             = Conversion.TryCastInteger(GetDropDownValue(this.SalespersonDropDownList));
            collection.StatementReference  = this.StatementReferenceTextBox.Text;

            string json = ProductGridViewDataHidden.Value;

            var jss = new JavaScriptSerializer();

            dynamic result = jss.Deserialize <dynamic>(json);

            foreach (var item in result)
            {
                StockMasterDetailModel detail = new StockMasterDetailModel();
                detail.ItemCode = item[0];
                detail.Quantity = Conversion.TryCastInteger(item[2]);
                detail.UnitName = item[3];
                detail.Price    = Conversion.TryCastDecimal(item[4]);
                detail.Discount = Conversion.TryCastDecimal(item[6]);
                detail.TaxRate  = Conversion.TryCastDecimal(item[8]);
                detail.Tax      = Conversion.TryCastDecimal(item[9]);

                if (this.StoreDropDownList.SelectedItem != null)
                {
                    detail.StoreId = Conversion.TryCastInteger(this.StoreDropDownList.SelectedItem.Value);
                }

                collection.AddDetail(detail);
            }

            return(collection);
        }
Пример #4
0
        public Collection <StockMasterDetailModel> GetDetails(string json, int storeId)
        {
            Collection <StockMasterDetailModel> details = new Collection <StockMasterDetailModel>();
            var jss = new JavaScriptSerializer();

            dynamic result = jss.Deserialize <dynamic>(json);

            foreach (var item in result)
            {
                StockMasterDetailModel detail = new StockMasterDetailModel();
                detail.ItemCode = item[0];
                detail.Quantity = Conversion.TryCastInteger(item[2]);
                detail.UnitName = item[3];
                detail.Price    = Conversion.TryCastDecimal(item[4]);
                detail.Discount = Conversion.TryCastDecimal(item[6]);
                detail.TaxRate  = Conversion.TryCastDecimal(item[8]);
                detail.Tax      = Conversion.TryCastDecimal(item[9]);
                detail.StoreId  = storeId;

                details.Add(detail);
            }

            return(details);
        }
Пример #5
0
        public ActionResult _ResultsPost(StockMasterDetailModel vm)
        {
            int Cnt    = 0;
            int pk     = 0;
            int Serial = _StockLineService.GetMaxSr(vm.StockLineViewModel.FirstOrDefault().StockHeaderId);
            Dictionary <int, decimal> LineStatus = new Dictionary <int, decimal>();
            StockHeader Header = new StockHeaderService(_unitOfWork).Find(vm.StockLineViewModel.FirstOrDefault().StockHeaderId);

            StockHeaderSettings Settings = new StockHeaderSettingsService(_unitOfWork).GetStockHeaderSettingsForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId);


            if (Settings.isMandatoryLineCostCenter == true && vm.StockLineViewModel.Where(m => m.CostCenterId == null).Any())
            {
                ModelState.AddModelError("", "CostCenter is mandatory");
            }

            decimal Qty = vm.StockLineViewModel.Where(m => m.Rate > 0).Sum(m => m.Qty);

            bool BeforeSave = true;

            try
            {
                BeforeSave = StockIssueDocEvents.beforeLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                EventException     = true;
            }

            if (!BeforeSave)
            {
                ModelState.AddModelError("", "Validation failed before save");
            }

            if (ModelState.IsValid && BeforeSave && !EventException)
            {
                foreach (var item in vm.StockLineViewModel)
                {
                    //if (item.Qty > 0 &&  ((Settings.isMandatoryRate.HasValue && Settings.isMandatoryRate == true )? item.Rate > 0 : 1 == 1))
                    if (item.Qty > 0)
                    {
                        StockLine line = new StockLine();

                        line.StockHeaderId     = item.StockHeaderId;
                        line.RequisitionLineId = item.RequisitionLineId;
                        line.ProductId         = item.ProductId;
                        line.Dimension1Id      = item.Dimension1Id;
                        line.Dimension2Id      = item.Dimension2Id;
                        line.Dimension3Id      = item.Dimension3Id;
                        line.Dimension4Id      = item.Dimension4Id;
                        line.Specification     = item.Specification;
                        line.CostCenterId      = item.CostCenterId;
                        line.Qty                = item.Qty;
                        line.DocNature          = StockNatureConstants.Issue;
                        line.Rate               = item.Rate ?? 0;
                        line.Amount             = (line.Qty * line.Rate);
                        line.ReferenceDocId     = item.ReferenceDocId;
                        line.ReferenceDocTypeId = item.ReferenceDocTypeId;
                        line.CreatedDate        = DateTime.Now;
                        line.ModifiedDate       = DateTime.Now;
                        line.CreatedBy          = User.Identity.Name;
                        line.ModifiedBy         = User.Identity.Name;
                        line.StockLineId        = pk;
                        line.Sr          = Serial++;
                        line.ObjectState = Model.ObjectState.Added;
                        db.StockLine.Add(line);
                        pk++;
                        Cnt = Cnt + 1;
                        if (line.RequisitionLineId.HasValue)
                        {
                            LineStatus.Add(line.RequisitionLineId.Value, line.Qty);
                        }
                    }
                }
                //new RequisitionLineStatusService(_unitOfWork).UpdateRequisitionQtyIssueMultiple(LineStatus, Header.DocDate, ref db);

                if (Header.Status != (int)StatusConstants.Drafted && Header.Status != (int)StatusConstants.Import)
                {
                    Header.Status       = (int)StatusConstants.Modified;
                    Header.ModifiedBy   = User.Identity.Name;
                    Header.ModifiedDate = DateTime.Now;
                }

                Header.ObjectState = Model.ObjectState.Modified;
                db.StockHeader.Add(Header);

                try
                {
                    StockIssueDocEvents.onLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    EventException      = true;
                }

                try
                {
                    if (EventException)
                    {
                        throw new Exception();
                    }
                    db.SaveChanges();
                }

                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    return(PartialView("_Results", vm));
                }

                try
                {
                    StockIssueDocEvents.afterLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXC"] += message;
                }

                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId    = Header.DocTypeId,
                    DocId        = Header.StockHeaderId,
                    ActivityType = (int)ActivityTypeContants.MultipleCreate,
                    DocNo        = Header.DocNo,
                    DocDate      = Header.DocDate,
                    DocStatus    = Header.Status,
                }));

                return(Json(new { success = true }));
            }
            return(PartialView("_Results", vm));
        }
Пример #6
0
 public void AddDetail(StockMasterDetailModel detail)
 {
     this.details.Add(detail);
 }
        public ActionResult _ResultsPost(StockMasterDetailModel vm)
        {
            int         Cnt    = 0;
            StockHeader Header = new StockHeaderService(_unitOfWork).Find(vm.StockLineViewModel.FirstOrDefault().StockHeaderId);

            StockHeaderSettings Settings = new StockHeaderSettingsService(_unitOfWork).GetStockHeaderSettingsForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId);

            bool BeforeSave = true;

            try
            {
                BeforeSave = RateConversionDocEvents.beforeLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                EventException     = true;
            }

            if (!BeforeSave)
            {
                ModelState.AddModelError("", "Validation failed before save");
            }

            if (ModelState.IsValid && BeforeSave && !EventException)
            {
                var CostCenterRecords = (from p in vm.StockLineViewModel
                                         where p.CostCenterId != null
                                         group p by p.CostCenterId into g
                                         select g).ToList();

                var CostCenterIds = CostCenterRecords.Select(m => m.Key).ToArray();

                var DBCostCenterStatus = (from p in db.CostCenterStatus
                                          where CostCenterIds.Contains(p.CostCenterId)
                                          select p).ToArray();


                foreach (var item in vm.StockLineViewModel)
                {
                    if (item.Qty != 0 && item.Rate > 0 && (Settings.isMandatoryLineCostCenter == true ? item.CostCenterId.HasValue : 1 == 1))
                    {
                        StockLine line = new StockLine();

                        StockProcessViewModel StockProcessViewModel = new StockProcessViewModel();

                        if (Header.StockHeaderId != null && Header.StockHeaderId != 0)//If Transaction Header Table Has Stock Header Id Then It will Save Here.
                        {
                            StockProcessViewModel.StockHeaderId = (int)Header.StockHeaderId;
                        }
                        else if (Cnt > 0)//If function will only post in stock process then after first iteration of loop the stock header id will go -1
                        {
                            StockProcessViewModel.StockHeaderId = -1;
                        }
                        else//If function will only post in stock process then this statement will execute.For Example Job consumption.
                        {
                            StockProcessViewModel.StockHeaderId = 0;
                        }
                        StockProcessViewModel.StockProcessId      = -Cnt;
                        StockProcessViewModel.DocHeaderId         = Header.StockHeaderId;
                        StockProcessViewModel.DocLineId           = line.StockLineId;
                        StockProcessViewModel.DocTypeId           = Header.DocTypeId;
                        StockProcessViewModel.StockHeaderDocDate  = Header.DocDate;
                        StockProcessViewModel.StockProcessDocDate = Header.DocDate;
                        StockProcessViewModel.DocNo              = Header.DocNo;
                        StockProcessViewModel.DivisionId         = Header.DivisionId;
                        StockProcessViewModel.SiteId             = Header.SiteId;
                        StockProcessViewModel.CurrencyId         = null;
                        StockProcessViewModel.PersonId           = Header.PersonId;
                        StockProcessViewModel.ProductId          = item.ProductId;
                        StockProcessViewModel.HeaderFromGodownId = null;
                        StockProcessViewModel.HeaderGodownId     = Header.GodownId;
                        StockProcessViewModel.HeaderProcessId    = Header.ProcessId;
                        StockProcessViewModel.GodownId           = Header.GodownId;
                        StockProcessViewModel.Remark             = Header.Remark;
                        StockProcessViewModel.Status             = Header.Status;
                        StockProcessViewModel.ProcessId          = Header.ProcessId;
                        StockProcessViewModel.LotNo              = null;
                        StockProcessViewModel.CostCenterId       = (item.CostCenterId == null ? Header.CostCenterId : item.CostCenterId);


                        if (item.Qty < 0)
                        {
                            StockProcessViewModel.Qty_Rec = Math.Abs(item.Qty);
                            StockProcessViewModel.Qty_Iss = 0;
                        }
                        else if (item.Qty > 0)
                        {
                            StockProcessViewModel.Qty_Iss = Math.Abs(item.Qty);
                            StockProcessViewModel.Qty_Rec = 0;
                        }

                        StockProcessViewModel.Rate          = item.Rate;
                        StockProcessViewModel.ExpiryDate    = null;
                        StockProcessViewModel.Specification = item.Specification;
                        StockProcessViewModel.Dimension1Id  = item.Dimension1Id;
                        StockProcessViewModel.Dimension2Id  = item.Dimension2Id;
                        StockProcessViewModel.Dimension3Id  = item.Dimension3Id;
                        StockProcessViewModel.Dimension4Id  = item.Dimension4Id;
                        StockProcessViewModel.CreatedBy     = User.Identity.Name;
                        StockProcessViewModel.CreatedDate   = DateTime.Now;
                        StockProcessViewModel.ModifiedBy    = User.Identity.Name;
                        StockProcessViewModel.ModifiedDate  = DateTime.Now;

                        string StockProcessPostingError = "";
                        StockProcessPostingError = new StockProcessService(_unitOfWork).StockProcessPostDB(ref StockProcessViewModel, ref db);

                        if (StockProcessPostingError != "")
                        {
                            string message = StockProcessPostingError;
                            ModelState.AddModelError("", message);
                            return(PartialView("_Results", vm));
                        }

                        line.StockProcessId = StockProcessViewModel.StockProcessId;



                        line.StockHeaderId = item.StockHeaderId;
                        line.Qty           = item.Qty;
                        line.ProductId     = item.ProductId;
                        line.LotNo         = item.LotNo;
                        line.Rate          = (decimal)item.Rate;
                        line.Amount        = Math.Round((decimal)item.Rate * item.Qty, Settings.LineRoundOff ?? 0);
                        line.Dimension1Id  = item.Dimension1Id;
                        line.Dimension2Id  = item.Dimension2Id;
                        line.Dimension3Id  = item.Dimension3Id;
                        line.Dimension4Id  = item.Dimension4Id;
                        line.DocNature     = StockNatureConstants.Receive;
                        line.CostCenterId  = item.CostCenterId;
                        line.FromProcessId = item.FromProcessId;
                        line.Specification = item.Specification;
                        line.CreatedDate   = DateTime.Now;
                        line.ModifiedDate  = DateTime.Now;
                        line.CreatedBy     = User.Identity.Name;
                        line.ModifiedBy    = User.Identity.Name;

                        line.ObjectState = Model.ObjectState.Added;
                        //_StockLineService.Create(line);
                        db.StockLine.Add(line);

                        Cnt = Cnt + 1;
                    }
                }

                if (Header.Status != (int)StatusConstants.Drafted && Header.Status != (int)StatusConstants.Import)
                {
                    Header.Status       = (int)StatusConstants.Modified;
                    Header.ModifiedBy   = User.Identity.Name;
                    Header.ModifiedDate = DateTime.Now;

                    Header.ObjectState = Model.ObjectState.Modified;
                    db.StockHeader.Add(Header);
                }

                //ForUpdating CostCenterStatus Values//

                foreach (var item in DBCostCenterStatus)
                {
                    var CostCenterAmounts = db.StockLine.Local.Where(m => m.CostCenterId == item.CostCenterId).ToList();



                    if (CostCenterAmounts != null)
                    {
                        if (CostCenterAmounts.Sum(m => m.Amount) > 0)
                        {
                            item.AmountDr = (item.AmountDr ?? 0) + CostCenterAmounts.Sum(m => m.Amount);
                        }
                        else if (CostCenterAmounts.Sum(m => m.Amount) < 0)
                        {
                            item.AmountDr = (item.AmountDr ?? 0) + CostCenterAmounts.Sum(m => m.Amount);
                        }

                        item.ObjectState = Model.ObjectState.Modified;
                        db.CostCenterStatus.Add(item);
                    }
                }


                try
                {
                    RateConversionDocEvents.onLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    EventException      = true;
                }

                try
                {
                    if (EventException)
                    {
                        throw new Exception();
                    }
                    db.SaveChanges();
                }

                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    return(PartialView("_Results", vm));
                }

                try
                {
                    RateConversionDocEvents.afterLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXC"] += message;
                }

                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId    = Header.DocTypeId,
                    DocId        = Header.StockHeaderId,
                    ActivityType = (int)ActivityTypeContants.MultipleCreate,
                    DocNo        = Header.DocNo,
                    DocDate      = Header.DocDate,
                    DocStatus    = Header.Status,
                }));

                return(Json(new { success = true }));
            }
            return(PartialView("_Results", vm));
        }
        public ActionResult _ResultsPost(StockMasterDetailModel vm)
        {
            StockHeader         temp     = new StockHeaderService(_unitOfWork).Find(vm.StockLineViewModel.FirstOrDefault().StockHeaderId);
            StockHeaderSettings Settings = new StockHeaderSettingsService(_unitOfWork).GetStockHeaderSettingsForDocument(temp.DocTypeId, temp.DivisionId, temp.SiteId);

            bool BeforeSave = true;

            try
            {
                BeforeSave = JobConsumptionDocEvents.beforeLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                EventException     = true;
            }

            if (!BeforeSave)
            {
                ModelState.AddModelError("", "Validation failed before save");
            }

            int Cnt = 0;

            if (ModelState.IsValid && BeforeSave && !EventException)
            {
                foreach (var item in vm.StockLineViewModel)
                {
                    if (item.Qty != 0 && (Settings.isMandatoryLineCostCenter == true ? item.CostCenterId.HasValue : 1 == 1))
                    {
                        StockLine line = new StockLine();
                        line.StockHeaderId = item.StockHeaderId;
                        line.Qty           = item.Qty;
                        line.ProductId     = item.ProductId;
                        line.LotNo         = item.LotNo;
                        line.Dimension1Id  = item.Dimension1Id;
                        line.Dimension2Id  = item.Dimension2Id;
                        line.Dimension3Id  = item.Dimension3Id;
                        line.Dimension4Id  = item.Dimension4Id;
                        line.CostCenterId  = item.CostCenterId;
                        line.FromProcessId = item.FromProcessId;
                        line.Specification = item.Specification;
                        line.CreatedDate   = DateTime.Now;
                        line.ModifiedDate  = DateTime.Now;
                        line.CreatedBy     = User.Identity.Name;
                        line.ModifiedBy    = User.Identity.Name;
                        line.DocNature     = (item.Qty < 0 ? StockNatureConstants.Receive : StockNatureConstants.Issue);


                        StockProcessViewModel StockProcessViewModel = new StockProcessViewModel();

                        if (temp.StockHeaderId != null && temp.StockHeaderId != 0)//If Transaction Header Table Has Stock Header Id Then It will Save Here.
                        {
                            StockProcessViewModel.StockHeaderId = (int)temp.StockHeaderId;
                        }
                        else if (Cnt > 0)//If function will only post in stock process then after first iteration of loop the stock header id will go -1
                        {
                            StockProcessViewModel.StockHeaderId = -1;
                        }
                        else//If function will only post in stock process then this statement will execute.For Example Job consumption.
                        {
                            StockProcessViewModel.StockHeaderId = 0;
                        }
                        StockProcessViewModel.StockProcessId      = -Cnt;
                        StockProcessViewModel.DocHeaderId         = temp.StockHeaderId;
                        StockProcessViewModel.DocLineId           = line.StockLineId;
                        StockProcessViewModel.DocTypeId           = temp.DocTypeId;
                        StockProcessViewModel.StockHeaderDocDate  = temp.DocDate;
                        StockProcessViewModel.StockProcessDocDate = temp.DocDate;
                        StockProcessViewModel.DocNo              = temp.DocNo;
                        StockProcessViewModel.DivisionId         = temp.DivisionId;
                        StockProcessViewModel.SiteId             = temp.SiteId;
                        StockProcessViewModel.CurrencyId         = null;
                        StockProcessViewModel.PersonId           = temp.PersonId;
                        StockProcessViewModel.ProductId          = item.ProductId;
                        StockProcessViewModel.HeaderFromGodownId = null;
                        StockProcessViewModel.HeaderGodownId     = temp.GodownId;
                        StockProcessViewModel.HeaderProcessId    = temp.ProcessId;
                        StockProcessViewModel.GodownId           = temp.GodownId;
                        StockProcessViewModel.Remark             = temp.Remark;
                        StockProcessViewModel.Status             = temp.Status;
                        StockProcessViewModel.ProcessId          = temp.ProcessId;
                        StockProcessViewModel.LotNo              = null;
                        StockProcessViewModel.CostCenterId       = item.CostCenterId;
                        //StockProcessViewModel.Qty_Iss = item.Qty;
                        //StockProcessViewModel.Qty_Rec = 0;

                        if (item.Qty > 0)
                        {
                            StockProcessViewModel.Qty_Rec = item.Qty;
                            StockProcessViewModel.Qty_Iss = 0;
                        }
                        else if (item.Qty < 0)
                        {
                            StockProcessViewModel.Qty_Rec = 0;
                            StockProcessViewModel.Qty_Iss = Math.Abs(item.Qty);
                        }

                        StockProcessViewModel.Rate          = item.Rate;
                        StockProcessViewModel.ExpiryDate    = null;
                        StockProcessViewModel.Specification = item.Specification;
                        StockProcessViewModel.Dimension1Id  = item.Dimension1Id;
                        StockProcessViewModel.Dimension2Id  = item.Dimension2Id;
                        StockProcessViewModel.Dimension3Id  = item.Dimension3Id;
                        StockProcessViewModel.Dimension4Id  = item.Dimension4Id;
                        StockProcessViewModel.CreatedBy     = User.Identity.Name;
                        StockProcessViewModel.CreatedDate   = DateTime.Now;
                        StockProcessViewModel.ModifiedBy    = User.Identity.Name;
                        StockProcessViewModel.ModifiedDate  = DateTime.Now;

                        string StockProcessPostingError = "";
                        StockProcessPostingError = new StockProcessService(_unitOfWork).StockProcessPostDB(ref StockProcessViewModel, ref db);

                        if (StockProcessPostingError != "")
                        {
                            string message = StockProcessPostingError;
                            ModelState.AddModelError("", message);
                            return(PartialView("_Results", vm));
                        }

                        line.StockProcessId = StockProcessViewModel.StockProcessId;

                        line.ObjectState = Model.ObjectState.Added;
                        db.StockLine.Add(line);
                        //_StockLineService.Create(line);
                        Cnt = Cnt + 1;
                    }
                }


                if (temp.Status != (int)StatusConstants.Drafted && temp.Status != (int)StatusConstants.Import)
                {
                    temp.Status       = (int)StatusConstants.Modified;
                    temp.ModifiedBy   = User.Identity.Name;
                    temp.ModifiedDate = DateTime.Now;

                    temp.ObjectState = Model.ObjectState.Modified;
                    db.StockHeader.Add(temp);
                }

                try
                {
                    JobConsumptionDocEvents.onLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    EventException      = true;
                }

                try
                {
                    if (EventException)
                    {
                        throw new Exception();
                    }

                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    return(PartialView("_Results", vm));
                }

                try
                {
                    JobConsumptionDocEvents.afterLineSaveBulkEvent(this, new StockEventArgs(vm.StockLineViewModel.FirstOrDefault().StockHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXC"] += message;
                }

                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId    = temp.DocTypeId,
                    DocId        = temp.StockHeaderId,
                    ActivityType = (int)ActivityTypeContants.MultipleCreate,
                    DocNo        = temp.DocNo,
                    DocDate      = temp.DocDate,
                    DocStatus    = temp.Status,
                }));

                return(Json(new { success = true }));
            }
            return(PartialView("_Results", vm));
        }