public ActionResult _FilterPost(PurchaseOrderAmendmentFilterViewModel vm) { List <PurchaseOrderRateAmendmentLineViewModel> temp = _PurchaseOrderRateAmendmentLineService.GetPurchaseOrderLineForMultiSelect(vm).ToList(); PurchaseOrderAmendmentMasterDetailModel svm = new PurchaseOrderAmendmentMasterDetailModel(); svm.PurchaseOrderRateAmendmentLineViewModel = temp; return(PartialView("_Results", svm)); }
public ActionResult _ResultsPost(PurchaseOrderAmendmentMasterDetailModel vm) { List <HeaderChargeViewModel> HeaderCharges = new List <HeaderChargeViewModel>(); List <LineChargeViewModel> LineCharges = new List <LineChargeViewModel>(); int pk = 0; int Serial = _PurchaseOrderRateAmendmentLineService.GetMaxSr(vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId); bool HeaderChargeEdit = false; var Header = new PurchaseOrderAmendmentHeaderService(db).Find(vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId); PurchaseOrderSetting Settings = new PurchaseOrderSettingService(_unitOfWork).GetPurchaseOrderSettingForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId); int?MaxLineId = new PurchaseOrderRateAmendmentLineChargeService(_unitOfWork).GetMaxProductCharge(Header.PurchaseOrderAmendmentHeaderId, "Web.PurchaseOrderRateAmendmentLines", "PurchaseOrderAmendmentHeaderId", "PurchaseOrderRateAmendmentLineId"); int PersonCount = 0; if (!Settings.CalculationId.HasValue) { throw new Exception("Calculation not configured in purchase order settings"); } int CalculationId = Settings.CalculationId ?? 0; List <LineDetailListViewModel> LineList = new List <LineDetailListViewModel>(); Dictionary <int, decimal> LineStatus = new Dictionary <int, decimal>(); #region BeforeSave bool BeforeSave = true; try { BeforeSave = PurchaseOrderAmendmentDocEvents.beforeLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } if (!BeforeSave) { ModelState.AddModelError("", "Validation failed before save"); } #endregion if (ModelState.IsValid && BeforeSave && !EventException) { foreach (var item in vm.PurchaseOrderRateAmendmentLineViewModel.Where(m => (m.AmendedRate - m.PurchaseOrderRate) != 0 && m.AAmended == false)) { PurchaseOrderRateAmendmentLine line = new PurchaseOrderRateAmendmentLine(); line.PurchaseOrderAmendmentHeaderId = item.PurchaseOrderAmendmentHeaderId; line.PurchaseOrderLineId = item.PurchaseOrderLineId; line.Qty = item.Qty; line.AmendedRate = item.AmendedRate; line.Rate = item.AmendedRate - item.PurchaseOrderRate; line.Amount = item.DealQty * line.Rate; line.PurchaseOrderRate = item.PurchaseOrderRate; 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.PurchaseOrderLineId, line.Rate); line.ObjectState = Model.ObjectState.Added; db.PurchaseOrderRateAmendmentLine.Add(line); LineList.Add(new LineDetailListViewModel { Amount = line.Amount, Rate = line.Rate, LineTableId = line.PurchaseOrderRateAmendmentLineId, HeaderTableId = item.PurchaseOrderAmendmentHeaderId, PersonID = Header.SupplierId, DealQty = item.DealQty }); pk++; } new PurchaseOrderLineStatusService(_unitOfWork).UpdatePurchaseRateOnAmendmentMultiple(LineStatus, Header.DocDate, ref db); new ChargesCalculationService(_unitOfWork).CalculateCharges(LineList, vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId, CalculationId, MaxLineId, out LineCharges, out HeaderChargeEdit, out HeaderCharges, "Web.PurchaseOrderAmendmentHeaderCharges", "Web.PurchaseOrderRateAmendmentLineCharges", out PersonCount, Header.DocTypeId, Header.SiteId, Header.DivisionId); //Saving Charges foreach (var item in LineCharges) { PurchaseOrderRateAmendmentLineCharge PoLineCharge = Mapper.Map <LineChargeViewModel, PurchaseOrderRateAmendmentLineCharge>(item); PoLineCharge.ObjectState = Model.ObjectState.Added; //new PurchaseOrderLineChargeService(_unitOfWork).Create(PoLineCharge); db.PurchaseOrderRateAmendmentLineCharge.Add(PoLineCharge); } //Saving Header charges for (int i = 0; i < HeaderCharges.Count(); i++) { if (!HeaderChargeEdit) { PurchaseOrderAmendmentHeaderCharge POHeaderCharge = Mapper.Map <HeaderChargeViewModel, PurchaseOrderAmendmentHeaderCharge>(HeaderCharges[i]); POHeaderCharge.HeaderTableId = vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId; POHeaderCharge.PersonID = Header.SupplierId; POHeaderCharge.ObjectState = Model.ObjectState.Added; //new PurchaseOrderHeaderChargeService(_unitOfWork).Create(POHeaderCharge); db.PurchaseOrderAmendmentHeaderCharges.Add(POHeaderCharge); } else { var footercharge = new PurchaseOrderAmendmentHeaderChargeService(_unitOfWork).Find(HeaderCharges[i].Id); footercharge.Rate = HeaderCharges[i].Rate; footercharge.Amount = HeaderCharges[i].Amount; footercharge.ObjectState = Model.ObjectState.Modified; //new PurchaseOrderHeaderChargeService(_unitOfWork).Update(footercharge); db.PurchaseOrderAmendmentHeaderCharges.Add(footercharge); } } try { PurchaseOrderAmendmentDocEvents.onLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId), 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 { PurchaseOrderAmendmentDocEvents.afterLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseOrderRateAmendmentLineViewModel.FirstOrDefault().PurchaseOrderAmendmentHeaderId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = Header.DocTypeId, DocId = Header.PurchaseOrderAmendmentHeaderId, ActivityType = (int)ActivityTypeContants.MultipleCreate, DocNo = Header.DocNo, DocDate = Header.DocDate, DocStatus = Header.Status, })); return(Json(new { success = true })); } return(PartialView("_Results", vm)); }