public ActionResult _FilterPost(SaleOrderCancelFilterViewModel vm)
        {
            List <SaleOrderCancelLineViewModel> temp = _SaleOrderCancelLineService.GetSaleOrderLineForMultiSelect(vm).ToList();
            SaleOrderCancelMasterDetailModel    svm  = new SaleOrderCancelMasterDetailModel();

            svm.SaleOrderCancelViewModels = temp;
            return(PartialView("_Results", svm));
        }
        public ActionResult CompleteSaleOrderCancelLine(SaleOrderCancelMasterDetailModel vm)
        {
            int SaleOrderCancelHeaderId = 0;

            if (ModelState.IsValid)
            {
                foreach (var item in vm.SaleOrderCancelViewModels)
                {
                    decimal balqty = (from p in db.ViewSaleOrderBalanceForCancellation
                                      where p.SaleOrderLineId == item.SaleOrderLineId
                                      select p.BalanceQty).FirstOrDefault();
                    if (balqty < item.Qty)
                    {
                        return(View(vm).Danger("Qty Exceeding Bal Qty"));
                    }
                    if (item.Qty > 0)
                    {
                        SaleOrderCancelLine line = new SaleOrderCancelLine();

                        line.SaleOrderCancelHeaderId = item.SaleOrderCancelHeaderId;
                        line.SaleOrderLineId         = item.SaleOrderLineId ?? 0;
                        line.Qty          = item.Qty;
                        line.CreatedDate  = DateTime.Now;
                        line.ModifiedDate = DateTime.Now;
                        line.CreatedBy    = User.Identity.Name;
                        line.ModifiedBy   = User.Identity.Name;
                        line.Remark       = item.LineRemark;

                        _SaleOrderCancelLineService.Create(line);
                    }
                    SaleOrderCancelHeaderId = item.SaleOrderCancelHeaderId;
                }
                //_unitOfWork.Save();

                SaleOrderCancelHeader header = new SaleOrderCancelHeaderService(_unitOfWork).Find(SaleOrderCancelHeaderId);

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

                //Activity Log
                ActivityLog al = new ActivityLog()
                {
                    ActivityType = (int)StatusConstants.Submitted,
                    DocId        = header.SaleOrderCancelHeaderId,
                    UserRemark   = header.Remark,
                    Narration    = "Sale Order Cancel Submitted with Cancel no:" + header.DocNo,
                    CreatedDate  = DateTime.Now,
                    CreatedBy    = User.Identity.Name,
                    DocTypeId    = header.DocTypeId,
                };

                new SaleOrderCancelHeaderService(_unitOfWork).Update(header);
                _ActivityLogService.Create(al);
                _unitOfWork.Save();

                return(RedirectToActionPermanent("Index", "SaleOrderCancelHeader"));
            }
            return(View(vm));
        }
        public ActionResult _ResultsPost(SaleOrderCancelMasterDetailModel vm)
        {
            Dictionary <int, decimal> LineStatus = new Dictionary <int, decimal>();
            var Header = new SaleOrderCancelHeaderService(_unitOfWork).Find(vm.SaleOrderCancelViewModels.FirstOrDefault().SaleOrderCancelHeaderId);

            if (ModelState.IsValid)
            {
                foreach (var item in vm.SaleOrderCancelViewModels)
                {
                    decimal balqty = (from p in db.ViewSaleOrderBalanceForCancellation
                                      where p.SaleOrderLineId == item.SaleOrderLineId
                                      select p.BalanceQty).FirstOrDefault();
                    if (balqty < item.Qty)
                    {
                        return(View("_Results", vm).Danger("Qty Exceeding Bal Qty"));
                    }
                    if (item.Qty > 0)
                    {
                        SaleOrderCancelLine line = new SaleOrderCancelLine();

                        line.SaleOrderCancelHeaderId = item.SaleOrderCancelHeaderId;
                        line.SaleOrderLineId         = item.SaleOrderLineId ?? 0;
                        line.Qty          = item.Qty;
                        line.CreatedDate  = DateTime.Now;
                        line.ModifiedDate = DateTime.Now;
                        line.CreatedBy    = User.Identity.Name;
                        line.ModifiedBy   = User.Identity.Name;
                        line.Remark       = item.LineRemark;

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

                        _SaleOrderCancelLineService.Create(line);
                    }
                }

                if (Header.Status != (int)StatusConstants.Drafted && Header.Status != (int)StatusConstants.Import)
                {
                    Header.Status      = (int)StatusConstants.Modified;
                    Header.ObjectState = Model.ObjectState.Modified;
                    new SaleOrderCancelHeaderService(_unitOfWork).Update(Header);
                }

                new SaleOrderLineStatusService(_unitOfWork).UpdateSaleQtyCancelMultiple(LineStatus, Header.DocDate);

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

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

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