public ActionResult DeletePost(StockLineViewModel vm) { bool BeforeSave = true; try { BeforeSave = StockIssueDocEvents.beforeLineDeleteEvent(this, new StockEventArgs(vm.StockHeaderId, vm.StockLineId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } if (!BeforeSave) { TempData["CSEXC"] += "Validation failed before delete."; } if (BeforeSave && !EventException) { int?ProdUid = 0; List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); //StockLine StockLine = _StockLineService.Find(vm.StockLineId); StockLine StockLine = (from p in db.StockLine where p.StockLineId == vm.StockLineId select p).FirstOrDefault(); StockHeader header = new StockHeaderService(_unitOfWork).Find(StockLine.StockHeaderId); LogList.Add(new LogTypeViewModel { ExObj = Mapper.Map <StockLine>(StockLine), }); ProdUid = StockLine.ProductUidId; if (StockLine.RequisitionLineId.HasValue) { new RequisitionLineStatusService(_unitOfWork).UpdateRequisitionQtyOnIssue(StockLine.RequisitionLineId.Value, StockLine.StockLineId, header.DocDate, 0, ref db, true); } StockLine.ObjectState = Model.ObjectState.Deleted; db.StockLine.Remove(StockLine); if (header.Status != (int)StatusConstants.Drafted && header.Status != (int)StatusConstants.Import) { header.Status = (int)StatusConstants.Modified; header.ModifiedDate = DateTime.Now; header.ModifiedBy = User.Identity.Name; header.ObjectState = Model.ObjectState.Modified; db.StockHeader.Add(header); } //if (ProdUid != null && ProdUid > 0) //{ // ProductUidDetail ProductUidDetail = new ProductUidService(_unitOfWork).FGetProductUidLastValues((int)ProdUid, "Stock Head-" + vm.StockHeaderId.ToString()); // ProductUid ProductUid = new ProductUidService(_unitOfWork).Find((int)ProdUid); // ProductUid.LastTransactionDocDate = ProductUidDetail.LastTransactionDocDate; // ProductUid.LastTransactionDocId = ProductUidDetail.LastTransactionDocId; // ProductUid.LastTransactionDocNo = ProductUidDetail.LastTransactionDocNo; // ProductUid.LastTransactionDocTypeId = ProductUidDetail.LastTransactionDocTypeId; // ProductUid.LastTransactionPersonId = ProductUidDetail.LastTransactionPersonId; // ProductUid.CurrenctGodownId = ProductUidDetail.CurrenctGodownId; // ProductUid.CurrenctProcessId = ProductUidDetail.CurrenctProcessId; // ProductUid.ObjectState = Model.ObjectState.Modified; // db.ProductUid.Add(ProductUid); //} XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { StockIssueDocEvents.onLineDeleteEvent(this, new StockEventArgs(StockLine.StockHeaderId, StockLine.StockLineId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } db.SaveChanges(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; ViewBag.LineMode = "Delete"; return(PartialView("_Create", vm)); } try { StockIssueDocEvents.afterLineDeleteEvent(this, new StockEventArgs(StockLine.StockHeaderId, StockLine.StockLineId), 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, DocLineId = StockLine.StockLineId, ActivityType = (int)ActivityTypeContants.Deleted, DocNo = header.DocNo, xEModifications = Modifications, DocDate = header.DocDate, DocStatus = header.Status, })); } return(Json(new { success = true })); }
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)); }
public ActionResult _CreatePost(StockLineViewModel svm) { StockHeader temp = new StockHeaderService(_unitOfWork).Find(svm.StockHeaderId); StockLine s = Mapper.Map <StockLineViewModel, StockLine>(svm); if (svm.StockHeaderSettings != null) { if (svm.StockHeaderSettings.isMandatoryProcessLine == true && (svm.FromProcessId <= 0 || svm.FromProcessId == null)) { ModelState.AddModelError("FromProcessId", "The Process field is required"); } if (svm.StockHeaderSettings.isMandatoryRate == true && svm.Rate <= 0) { ModelState.AddModelError("Rate", "The Rate field is required"); } if (svm.StockHeaderSettings.isMandatoryLineCostCenter == true && !svm.CostCenterId.HasValue) { ModelState.AddModelError("CostCenterId", "The Cost Center field is required"); } } bool BeforeSave = true; try { if (svm.StockLineId <= 0) { BeforeSave = StockIssueDocEvents.beforeLineSaveEvent(this, new StockEventArgs(svm.StockHeaderId, EventModeConstants.Add), ref db); } else { BeforeSave = StockIssueDocEvents.beforeLineSaveEvent(this, new StockEventArgs(svm.StockHeaderId, EventModeConstants.Edit), ref db); } } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } if (!BeforeSave) { ModelState.AddModelError("", "Validation failed before save."); } if (svm.ProductId <= 0) { ModelState.AddModelError("ProductId", "The Product field is required"); } if (svm.StockLineId <= 0) { ViewBag.LineMode = "Create"; } else { ViewBag.LineMode = "Edit"; } if (ModelState.IsValid && BeforeSave && !EventException) { if (svm.StockLineId <= 0) { s.CreatedDate = DateTime.Now; s.ModifiedDate = DateTime.Now; s.CreatedBy = User.Identity.Name; s.DocNature = StockNatureConstants.Issue; s.ModifiedBy = User.Identity.Name; s.ProductUidId = svm.ProductUidId; s.Sr = _StockLineService.GetMaxSr(s.StockHeaderId); s.ObjectState = Model.ObjectState.Added; db.StockLine.Add(s); if (temp.Status != (int)StatusConstants.Drafted && temp.Status != (int)StatusConstants.Import) { temp.Status = (int)StatusConstants.Modified; temp.ModifiedDate = DateTime.Now; temp.ModifiedBy = User.Identity.Name; db.StockHeader.Add(temp); } try { StockIssueDocEvents.onLineSaveEvent(this, new StockEventArgs(s.StockHeaderId, s.StockLineId, EventModeConstants.Add), 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; PrepareViewBag(svm); return(PartialView("_Create", svm)); } try { StockIssueDocEvents.afterLineSaveEvent(this, new StockEventArgs(s.StockHeaderId, s.StockLineId, EventModeConstants.Add), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = temp.StockHeaderId, DocLineId = s.StockLineId, ActivityType = (int)ActivityTypeContants.Added, DocNo = temp.DocNo, DocDate = temp.DocDate, DocStatus = temp.Status, })); return(RedirectToAction("_Create", new { id = svm.StockHeaderId })); } else { List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); int status = temp.Status; StockLine templine = _StockLineService.Find(s.StockLineId); StockLine ExRec = new StockLine(); ExRec = Mapper.Map <StockLine>(templine); templine.ProductId = s.ProductId; templine.ProductUidId = s.ProductUidId; templine.RequisitionLineId = s.RequisitionLineId; templine.Specification = s.Specification; templine.Dimension1Id = s.Dimension1Id; templine.Dimension2Id = s.Dimension2Id; templine.Dimension3Id = s.Dimension3Id; templine.Dimension4Id = s.Dimension4Id; templine.CostCenterId = s.CostCenterId; templine.DocNature = StockNatureConstants.Issue; templine.Rate = s.Rate; templine.Amount = s.Amount; templine.LotNo = s.LotNo; templine.FromProcessId = s.FromProcessId; templine.Remark = s.Remark; templine.Qty = s.Qty; templine.Remark = s.Remark; templine.ReferenceDocId = s.ReferenceDocId; templine.ReferenceDocTypeId = s.ReferenceDocTypeId; templine.ModifiedDate = DateTime.Now; templine.ModifiedBy = User.Identity.Name; templine.ObjectState = Model.ObjectState.Modified; db.StockLine.Add(templine); //if (templine.RequisitionLineId.HasValue) // new RequisitionLineStatusService(_unitOfWork).UpdateRequisitionQtyOnIssue(templine.RequisitionLineId.Value, templine.StockLineId, temp.DocDate, templine.Qty, ref db, true); 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); LogList.Add(new LogTypeViewModel { ExObj = ExRec, Obj = templine, }); XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { StockIssueDocEvents.onLineSaveEvent(this, new StockEventArgs(s.StockHeaderId, templine.StockLineId, EventModeConstants.Edit), 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; PrepareViewBag(svm); return(PartialView("_Create", svm)); } try { StockIssueDocEvents.afterLineSaveEvent(this, new StockEventArgs(s.StockHeaderId, templine.StockLineId, EventModeConstants.Edit), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } //Saving the Activity Log LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = templine.StockHeaderId, DocLineId = templine.StockLineId, ActivityType = (int)ActivityTypeContants.Modified, DocNo = temp.DocNo, xEModifications = Modifications, DocDate = temp.DocDate, DocStatus = temp.Status, })); //End of Saving the Activity Log return(Json(new { success = true })); } } PrepareViewBag(svm); return(PartialView("_Create", svm)); }