public ActionResult _FilterPost(SaleDeliveryOrderCancelFilterViewModel vm)
        {
            List <SaleDeliveryOrderCancelLineViewModel> temp = _SaleDeliveryOrderCancelLineService.GetSaleDeliveryOrderLineForMultiSelect(vm).ToList();
            SaleDeliveryOrderCancelMasterDetailModel    svm  = new SaleDeliveryOrderCancelMasterDetailModel();

            svm.SaleDeliveryOrderCancelViewModels = temp;
            return(PartialView("_Results", svm));
        }
        public ActionResult _ResultsPost(SaleDeliveryOrderCancelMasterDetailModel vm)
        {
            int Serial = _SaleDeliveryOrderCancelLineService.GetMaxSr(vm.SaleDeliveryOrderCancelViewModels.FirstOrDefault().SaleDeliveryOrderCancelHeaderId);
            Dictionary <int, decimal> LineStatus = new Dictionary <int, decimal>();
            var Header = new SaleDeliveryOrderCancelHeaderService(_unitOfWork).Find(vm.SaleDeliveryOrderCancelViewModels.FirstOrDefault().SaleDeliveryOrderCancelHeaderId);

            bool BeforeSave = true;

            //try
            //{
            //    BeforeSave = SaleDeliveryOrderCancelDocEvents.beforeLineSaveBulkEvent(this, new SaleDeliveryEventArgs(vm.SaleDeliveryOrderCancelViewModels.FirstOrDefault().SaleDeliveryOrderCancelHeaderId), ref db);
            //}
            //catch (Exception ex)
            //{
            //    string message = _exception.HandleException(ex);
            //    TempData["CSEXCL"] += message;
            //    EventException = true;
            //}

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


            if (ModelState.IsValid && BeforeSave && !EventException)
            {
                foreach (var item in vm.SaleDeliveryOrderCancelViewModels)
                {
                    decimal balqty = (from p in db.ViewSaleDeliveryOrderBalance
                                      where p.SaleDeliveryOrderLineId == item.SaleDeliveryOrderLineId
                                      select p.BalanceQty).FirstOrDefault();

                    if (item.Qty > 0 && item.Qty <= balqty)
                    {
                        SaleDeliveryOrderCancelLine line = new SaleDeliveryOrderCancelLine();

                        line.SaleDeliveryOrderCancelHeaderId = item.SaleDeliveryOrderCancelHeaderId;
                        line.SaleDeliveryOrderLineId         = item.SaleDeliveryOrderLineId;
                        line.Qty          = item.Qty;
                        line.Sr           = Serial++;
                        line.CreatedDate  = DateTime.Now;
                        line.ModifiedDate = DateTime.Now;
                        line.CreatedBy    = User.Identity.Name;
                        line.ModifiedBy   = User.Identity.Name;
                        line.Remark       = item.Remark;

                        LineStatus.Add(line.SaleDeliveryOrderLineId, line.Qty);

                        line.ObjectState = Model.ObjectState.Added;
                        db.SaleDeliveryOrderCancelLine.Add(line);

                        //_SaleDeliveryOrderCancelLineService.Create(line);
                    }
                }

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

                    Header.ObjectState = Model.ObjectState.Modified;

                    db.SaleDeliveryOrderCancelHeader.Add(Header);
                }

                //new SaleDeliveryOrderLineStatusService(_unitOfWork).UpdateSaleDeliveryQtyCancelMultiple(LineStatus, Header.DocDate, ref db);

                //try
                //{
                //    SaleDeliveryOrderCancelDocEvents.onLineSaveBulkEvent(this, new SaleDeliveryEventArgs(vm.SaleDeliveryOrderCancelViewModels.FirstOrDefault().SaleDeliveryOrderCancelHeaderId), ref db);
                //}
                //catch (Exception ex)
                //{
                //    string message = _exception.HandleException(ex);
                //    TempData["CSEXCL"] += message;
                //    EventException = true;
                //}

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

                    db.SaveChanges();
                    //_unitOfWork.Save();
                }

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

                //try
                //{
                //    SaleDeliveryOrderCancelDocEvents.afterLineSaveBulkEvent(this, new SaleDeliveryEventArgs(vm.SaleDeliveryOrderCancelViewModels.FirstOrDefault().SaleDeliveryOrderCancelHeaderId), ref db);
                //}
                //catch (Exception ex)
                //{
                //    string message = _exception.HandleException(ex);
                //    TempData["CSEXC"] += message;
                //}

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

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