예제 #1
0
        public ActionResult _ResultsPost(PurchaseIndentCancelMasterDetailModel vm)
        {
            int Serial = _PurchaseIndentCancelLineService.GetMaxSr(vm.PurchaseIndentCancelViewModels.FirstOrDefault().PurchaseIndentCancelHeaderId);

            bool BeforeSave = true;

            try
            {
                BeforeSave = PurchaseIndentCancelDocEvents.beforeLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentCancelViewModels.FirstOrDefault().PurchaseIndentCancelHeaderId), 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.PurchaseIndentCancelViewModels)
                {
                    decimal balqty = (from p in db.ViewPurchaseIndentBalance
                                      where p.PurchaseIndentLineId == item.PurchaseIndentLineId
                                      select p.BalanceQty).FirstOrDefault();
                    if (balqty < item.Qty)
                    {
                        ModelState.AddModelError("", "Qty Exceeding Balance Qty");
                        return(PartialView("_Results", vm));
                    }
                    if (item.Qty > 0)
                    {
                        PurchaseIndentCancelLine line = new PurchaseIndentCancelLine();

                        line.PurchaseIndentCancelHeaderId = item.PurchaseIndentCancelHeaderId;
                        line.PurchaseIndentLineId         = item.PurchaseIndentLineId;
                        line.Qty          = item.Qty;
                        line.CreatedDate  = DateTime.Now;
                        line.ModifiedDate = DateTime.Now;
                        line.CreatedBy    = User.Identity.Name;
                        line.ModifiedBy   = User.Identity.Name;
                        line.ObjectState  = Model.ObjectState.Added;
                        db.PurchaseIndentCancelLine.Add(line);

                        //_PurchaseIndentCancelLineService.Create(line);
                    }
                }

                PurchaseIndentCancelHeader Header = db.PurchaseIndentCancelHeader.Find(vm.PurchaseIndentCancelViewModels.FirstOrDefault().PurchaseIndentCancelHeaderId);

                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.PurchaseIndentCancelHeader.Add(Header);
                }

                try
                {
                    PurchaseIndentCancelDocEvents.onLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentCancelViewModels.FirstOrDefault().PurchaseIndentCancelHeaderId), 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
                {
                    PurchaseIndentCancelDocEvents.afterLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentCancelViewModels.FirstOrDefault().PurchaseIndentCancelHeaderId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXC"] += message;
                }

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

                return(Json(new { success = true }));
            }
            return(PartialView("_Results", vm));
        }
예제 #2
0
        public ActionResult _CreatePost(PurchaseIndentCancelLineViewModel svm)
        {
            if (svm.PurchaseIndentCancelLineId <= 0)
            {
                ViewBag.LineMode = "Create";
            }
            else
            {
                ViewBag.LineMode = "Edit";
            }

            bool BeforeSave = true;

            try
            {
                if (svm.PurchaseIndentLineId <= 0)
                {
                    BeforeSave = PurchaseIndentCancelDocEvents.beforeLineSaveEvent(this, new PurchaseEventArgs(svm.PurchaseIndentCancelHeaderId, EventModeConstants.Add), ref db);
                }
                else
                {
                    BeforeSave = PurchaseIndentCancelDocEvents.beforeLineSaveEvent(this, new PurchaseEventArgs(svm.PurchaseIndentCancelHeaderId, 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.PurchaseIndentCancelLineId <= 0)
            {
                PurchaseIndentCancelLine s = new PurchaseIndentCancelLine();
                decimal balqty             = (from p in db.ViewPurchaseIndentBalance
                                              where p.PurchaseIndentLineId == svm.PurchaseIndentLineId
                                              select p.BalanceQty).FirstOrDefault();
                if (balqty < svm.Qty)
                {
                    ModelState.AddModelError("Qty", "Qty Exceeding Balance Qty");
                }
                if (svm.Qty == 0)
                {
                    ModelState.AddModelError("Qty", "Please Check Qty");
                }
                if (svm.PurchaseIndentLineId <= 0)
                {
                    ModelState.AddModelError("PurchaseIndentLineId", "The Purchase Indent field is required");
                }
                if (ModelState.IsValid && BeforeSave && !EventException)
                {
                    s.PurchaseIndentCancelHeaderId = svm.PurchaseIndentCancelHeaderId;
                    s.PurchaseIndentLineId         = svm.PurchaseIndentLineId;
                    s.Qty          = svm.Qty;
                    s.CreatedDate  = DateTime.Now;
                    s.ModifiedDate = DateTime.Now;
                    s.Sr           = _PurchaseIndentCancelLineService.GetMaxSr(s.PurchaseIndentCancelHeaderId);
                    s.CreatedBy    = User.Identity.Name;
                    s.ModifiedBy   = User.Identity.Name;
                    //_PurchaseIndentCancelLineService.Create(s);
                    s.ObjectState = Model.ObjectState.Added;
                    db.PurchaseIndentCancelLine.Add(s);

                    PurchaseIndentCancelHeader temp2 = new PurchaseIndentCancelHeaderService(_unitOfWork).Find(s.PurchaseIndentCancelHeaderId);
                    if (temp2.Status != (int)StatusConstants.Drafted && temp2.Status != (int)StatusConstants.Import)
                    {
                        temp2.Status       = (int)StatusConstants.Modified;
                        temp2.ModifiedBy   = User.Identity.Name;
                        temp2.ModifiedDate = DateTime.Now;
                        temp2.ObjectState  = Model.ObjectState.Modified;
                        db.PurchaseIndentCancelHeader.Add(temp2);
                        //new PurchaseIndentCancelHeaderService(_unitOfWork).Update(temp2);
                    }

                    try
                    {
                        PurchaseIndentCancelDocEvents.onLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentCancelHeaderId, s.PurchaseIndentCancelLineId, 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();
                        //_unitOfWork.Save();
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXCL"] += message;
                        return(PartialView("_Create", svm));
                    }

                    try
                    {
                        PurchaseIndentCancelDocEvents.afterLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentCancelHeaderId, s.PurchaseIndentCancelLineId, EventModeConstants.Add), ref db);
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXCL"] += message;
                    }


                    LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                    {
                        DocTypeId    = temp2.DocTypeId,
                        DocId        = temp2.PurchaseIndentCancelHeaderId,
                        DocLineId    = s.PurchaseIndentCancelLineId,
                        ActivityType = (int)ActivityTypeContants.Added,
                        DocNo        = temp2.DocNo,
                        DocDate      = temp2.DocDate,
                        DocStatus    = temp2.Status,
                    }));


                    return(RedirectToAction("_Create", new { id = s.PurchaseIndentCancelHeaderId }));
                }
                return(PartialView("_Create", svm));
            }
            else
            {
                List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

                PurchaseIndentCancelHeader temp = new PurchaseIndentCancelHeaderService(_unitOfWork).Find(svm.PurchaseIndentCancelHeaderId);


                int           status    = temp.Status;
                StringBuilder logstring = new StringBuilder();

                PurchaseIndentCancelLine s = _PurchaseIndentCancelLineService.Find(svm.PurchaseIndentCancelLineId);

                PurchaseIndentCancelLine ExRec = new PurchaseIndentCancelLine();
                ExRec = Mapper.Map <PurchaseIndentCancelLine>(s);

                decimal balqty = (from p in db.ViewPurchaseIndentBalance
                                  where p.PurchaseIndentLineId == svm.PurchaseIndentLineId
                                  select p.BalanceQty).FirstOrDefault();
                if (balqty + s.Qty < svm.Qty)
                {
                    ModelState.AddModelError("Qty", "Qty Exceeding Balance Qty");
                }


                if (ModelState.IsValid && BeforeSave && !EventException)
                {
                    if (svm.Qty > 0)
                    {
                        s.Qty          = svm.Qty;
                        s.ModifiedBy   = User.Identity.Name;
                        s.ModifiedDate = DateTime.Now;
                    }

                    s.ObjectState = Model.ObjectState.Modified;
                    db.PurchaseIndentCancelLine.Add(s);

                    //_PurchaseIndentCancelLineService.Update(s);

                    if (temp.Status != (int)StatusConstants.Drafted && temp.Status != (int)StatusConstants.Import)
                    {
                        temp.Status = (int)StatusConstants.Modified;
                        //new PurchaseIndentCancelHeaderService(_unitOfWork).Update(temp);
                        temp.ModifiedDate = DateTime.Now;
                        temp.ModifiedBy   = User.Identity.Name;
                        temp.ObjectState  = Model.ObjectState.Modified;
                        db.PurchaseIndentCancelHeader.Add(temp);
                    }

                    LogList.Add(new LogTypeViewModel
                    {
                        ExObj = ExRec,
                        Obj   = s,
                    });

                    XElement Modifications = new ModificationsCheckService().CheckChanges(LogList);

                    try
                    {
                        PurchaseIndentCancelDocEvents.onLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentCancelHeaderId, s.PurchaseIndentCancelLineId, 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();
                        //_unitOfWork.Save();
                    }

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

                    try
                    {
                        PurchaseIndentCancelDocEvents.afterLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentCancelHeaderId, s.PurchaseIndentCancelLineId, 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           = s.PurchaseIndentCancelHeaderId,
                        DocLineId       = s.PurchaseIndentCancelLineId,
                        ActivityType    = (int)ActivityTypeContants.Modified,
                        DocNo           = temp.DocNo,
                        xEModifications = Modifications,
                        DocDate         = temp.DocDate,
                        DocStatus       = temp.Status,
                    }));

                    return(Json(new { success = true }));
                }
                return(PartialView("_Create", svm));
            }
        }
예제 #3
0
        public ActionResult DeletePost(PurchaseIndentCancelLineViewModel vm)
        {
            bool BeforeSave = true;

            try
            {
                BeforeSave = PurchaseIndentCancelDocEvents.beforeLineDeleteEvent(this, new PurchaseEventArgs(vm.PurchaseIndentCancelHeaderId, vm.PurchaseIndentCancelLineId), 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)
            {
                List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

                PurchaseIndentCancelLine IndentCancelLine = db.PurchaseIndentCancelLine.Find(vm.PurchaseIndentCancelLineId);

                try
                {
                    PurchaseIndentCancelDocEvents.onLineDeleteEvent(this, new PurchaseEventArgs(IndentCancelLine.PurchaseIndentCancelHeaderId, IndentCancelLine.PurchaseIndentCancelLineId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXCL"] += message;
                    EventException      = true;
                }

                LogList.Add(new LogTypeViewModel
                {
                    ExObj = Mapper.Map <PurchaseIndentCancelLine>(IndentCancelLine),
                });

                IndentCancelLine.ObjectState = Model.ObjectState.Deleted;
                db.PurchaseIndentCancelLine.Remove(IndentCancelLine);

                //_PurchaseIndentCancelLineService.Delete(vm.PurchaseIndentCancelLineId);
                PurchaseIndentCancelHeader header = new PurchaseIndentCancelHeaderService(_unitOfWork).Find(IndentCancelLine.PurchaseIndentCancelHeaderId);
                if (header.Status != (int)StatusConstants.Drafted)
                {
                    header.Status = (int)StatusConstants.Modified;
                    //new PurchaseIndentCancelHeaderService(_unitOfWork).Update(header);
                    header.ModifiedBy   = User.Identity.Name;
                    header.ModifiedDate = DateTime.Now;
                    header.ObjectState  = Model.ObjectState.Modified;
                    db.PurchaseIndentCancelHeader.Add(header);
                }

                XElement Modifications = new ModificationsCheckService().CheckChanges(LogList);

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

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

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

                try
                {
                    PurchaseIndentCancelDocEvents.afterLineDeleteEvent(this, new PurchaseEventArgs(IndentCancelLine.PurchaseIndentCancelHeaderId, IndentCancelLine.PurchaseIndentCancelLineId), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    TempData["CSEXC"] += message;
                }


                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId       = header.DocTypeId,
                    DocId           = IndentCancelLine.PurchaseIndentCancelHeaderId,
                    DocLineId       = IndentCancelLine.PurchaseIndentLineId,
                    ActivityType    = (int)ActivityTypeContants.Deleted,
                    DocNo           = header.DocNo,
                    xEModifications = Modifications,
                    DocDate         = header.DocDate,
                    DocStatus       = header.Status,
                }));
            }

            return(Json(new { success = true }));
        }
        public ActionResult Post(SaleDeliveryHeaderViewModel svm)
        {
            bool   TimePlanValidation = true;
            string ExceptionMsg       = "";
            bool   Continue           = true;

            SaleDeliveryHeader s = Mapper.Map <SaleDeliveryHeaderViewModel, SaleDeliveryHeader>(svm);
            List <SaleDeliveryWizardViewModel> SaleInvoiceAndQtys = (List <SaleDeliveryWizardViewModel>)System.Web.HttpContext.Current.Session["PendingInvoiceForSaleDelivery"];

            if (svm.SaleDeliverySettings != null)
            {
                //if (svm.SaleDeliverySettings.isMandatoryCostCenter == true && (string.IsNullOrEmpty(svm.CostCenterName)))
                //{
                //    ModelState.AddModelError("CostCenterName", "The CostCenter field is required");
                //}
            }



            if (SaleInvoiceAndQtys.Count() <= 0)
            {
                ModelState.AddModelError("", "No Records Selected");
            }

            int SaleToBuyerCnt = (from l in SaleInvoiceAndQtys
                                  group l by l.SaleToBuyerId into g
                                  select new
            {
                SaleToBuyerId = g.Key,
            }).Distinct().Count();

            if (SaleToBuyerCnt > 1)
            {
                ModelState.AddModelError("", "Select any one Buyer Orders.");
            }

            List <SaleDeliveryLine> BarCodesToUpdate = new List <SaleDeliveryLine>();

            bool CostCenterGenerated = false;

            #region DocTypeTimeLineValidation

            try
            {
                if (svm.SaleDeliveryHeaderId <= 0)
                {
                    TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(svm), DocumentTimePlanTypeConstants.Create, User.Identity.Name, out ExceptionMsg, out Continue);
                }
                else
                {
                    TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(svm), DocumentTimePlanTypeConstants.Modify, User.Identity.Name, out ExceptionMsg, out Continue);
                }
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                TimePlanValidation = false;
            }

            if (!TimePlanValidation)
            {
                TempData["CSEXC"] += ExceptionMsg;
            }

            #endregion

            if (ModelState.IsValid && (TimePlanValidation || Continue))
            {
                if (svm.SaleDeliveryHeaderId <= 0)
                {
                    if (SaleInvoiceAndQtys.Count() > 0)
                    {
                        s.CreatedDate  = DateTime.Now;
                        s.ModifiedDate = DateTime.Now;
                        s.CreatedBy    = User.Identity.Name;
                        s.ModifiedBy   = User.Identity.Name;
                        s.Status       = (int)StatusConstants.Drafted;
                        _SaleDeliveryHeaderService.Create(s);


                        int Cnt = 0;
                        int Sr  = 0;

                        int pk = 0;

                        SaleDeliverySetting Settings = new SaleDeliverySettingService(_unitOfWork).GetSaleDeliverySettingForDocument(s.DocTypeId, s.DivisionId, s.SiteId);


                        var SaleInvoiceLineIds = SaleInvoiceAndQtys.Select(m => m.SaleInvoiceLineId).ToArray();

                        var BalQtyandUnits = (from p in db.ViewSaleInvoiceBalanceForDelivery
                                              join t in db.Product on p.ProductId equals t.ProductId
                                              where SaleInvoiceLineIds.Contains(p.SaleInvoiceLineId)
                                              select new
                        {
                            BalQty = p.BalanceQty,
                            SaleInvoiceLineId = p.SaleInvoiceLineId,
                            UnitId = t.UnitId,
                        }).ToList();

                        if (ModelState.IsValid)
                        {
                            foreach (var SelectedSaleInvoice in SaleInvoiceAndQtys)
                            {
                                if (SelectedSaleInvoice.SaleInvoiceLineId > 0)
                                {
                                    var SaleInvoiceLine = new SaleInvoiceLineService(_unitOfWork).Find((SelectedSaleInvoice.SaleInvoiceLineId));
                                    var Product         = new ProductService(_unitOfWork).Find(SaleInvoiceLine.ProductId);


                                    var bal = BalQtyandUnits.Where(m => m.SaleInvoiceLineId == SelectedSaleInvoice.SaleInvoiceLineId).FirstOrDefault();

                                    if (SelectedSaleInvoice.Qty <= bal.BalQty)
                                    {
                                        SaleDeliveryLine line = new SaleDeliveryLine();


                                        line.SaleDeliveryHeaderId = s.SaleDeliveryHeaderId;
                                        line.SaleInvoiceLineId    = SaleInvoiceLine.SaleInvoiceLineId;
                                        line.Qty = SelectedSaleInvoice.Qty;
                                        line.UnitConversionMultiplier = SaleInvoiceLine.UnitConversionMultiplier ?? 1;
                                        line.DealQty            = SelectedSaleInvoice.Qty * line.UnitConversionMultiplier;
                                        line.DealUnitId         = SaleInvoiceLine.DealUnitId;
                                        line.Sr                 = Sr++;
                                        line.CreatedDate        = DateTime.Now;
                                        line.ModifiedDate       = DateTime.Now;
                                        line.CreatedBy          = User.Identity.Name;
                                        line.ModifiedBy         = User.Identity.Name;
                                        line.SaleDeliveryLineId = pk;
                                        line.ObjectState        = Model.ObjectState.Added;
                                        new SaleDeliveryLineService(_unitOfWork).Create(line);


                                        pk++;
                                        Cnt = Cnt + 1;
                                    }
                                }
                            }
                        }
                        string Errormessage = "";
                        try
                        {
                            _unitOfWork.Save();
                        }

                        catch (Exception ex)
                        {
                            Errormessage = _exception.HandleException(ex);
                            ModelState.AddModelError("", Errormessage);
                            PrepareViewBag();
                            ViewBag.Mode = "Add";
                            return(View("Create", svm));
                        }


                        LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                        {
                            DocTypeId    = s.DocTypeId,
                            DocId        = s.SaleDeliveryHeaderId,
                            ActivityType = (int)ActivityTypeContants.WizardCreate,
                            DocNo        = s.DocNo,
                            DocDate      = s.DocDate,
                            DocStatus    = s.Status,
                        }));

                        System.Web.HttpContext.Current.Session.Remove("PendingInvoiceForSaleDelivery");

                        return(Redirect(System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/SaleDeliveryHeader/Submit/" + s.SaleDeliveryHeaderId));
                    }
                    else
                    {
                        return(Redirect(System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/SaleDeliveryHeader/Index/" + s.DocTypeId));
                    }
                }
                else
                {
                }
            }
            PrepareViewBag();
            ViewBag.Mode = "Add";
            return(View("Create", svm));
        }