public ActionResult Delete(ReasonViewModel vm)
        {
            if (ModelState.IsValid)
            {
                List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();



                //string temp = (Request["Redirect"].ToString());
                //first find the Purchase Order Object based on the ID. (sience this object need to marked to be deleted IE. ObjectState.Deleted)
                var SaleOrderHeader = _SaleOrderHeaderService.GetSaleOrderHeader(vm.id);


                //For Updating Enquiry Header and Lines so that it can be edited and deleted as needed.
                if (SaleOrderHeader.ReferenceDocId != null && SaleOrderHeader.ReferenceDocId != 0)
                {
                    var SaleEnquiryHeader = (from H in context.SaleEnquiryHeader where H.SaleEnquiryHeaderId == SaleOrderHeader.ReferenceDocId && H.DocTypeId == SaleOrderHeader.ReferenceDocTypeId select H).FirstOrDefault();
                    if (SaleEnquiryHeader != null)
                    {
                        SaleEnquiryHeader Header = new SaleEnquiryHeaderService(_unitOfWork).Find(SaleEnquiryHeader.SaleEnquiryHeaderId);
                        Header.LockReason = null;
                        new SaleEnquiryHeaderService(_unitOfWork).Update(Header);

                        IEnumerable <SaleEnquiryLine> LineList = new SaleEnquiryLineService(_unitOfWork).GetSaleEnquiryLineListForHeader(SaleEnquiryHeader.SaleEnquiryHeaderId);
                        foreach (SaleEnquiryLine Line in LineList)
                        {
                            Line.LockReason = null;
                            new SaleEnquiryLineService(_unitOfWork).Update(Line);
                        }
                    }
                }



                LogList.Add(new LogTypeViewModel
                {
                    ExObj = SaleOrderHeader,
                });

                //Then find all the Purchase Order Header Line associated with the above ProductType.
                var SaleOrderLine = new SaleOrderLineService(_unitOfWork).GetSaleOrderLineList(vm.id);



                List <int> StockIdList = new List <int>();

                //Mark ObjectState.Delete to all the Purchase Order Lines.
                foreach (var item in SaleOrderLine)
                {
                    if (item.StockId != null)
                    {
                        StockIdList.Add((int)item.StockId);
                    }

                    LogList.Add(new LogTypeViewModel
                    {
                        ExObj = item,
                    });

                    new SaleOrderLineStatusService(_unitOfWork).Delete(item.SaleOrderLineId);

                    new SaleOrderLineService(_unitOfWork).Delete(item.SaleOrderLineId);
                }

                foreach (var item in StockIdList)
                {
                    if (item != null)
                    {
                        new StockService(_unitOfWork).DeleteStock((int)item);
                    }
                }

                int?StockHeaderId = null;
                StockHeaderId = SaleOrderHeader.StockHeaderId;

                int LedgerHeaderId = SaleOrderHeader.LedgerHeaderId ?? 0;


                // Now delete the Sale Order Header
                new SaleOrderHeaderService(_unitOfWork).Delete(vm.id);

                // Now delete the Ledger & Ledger Header
                if (LedgerHeaderId != 0)
                {
                    var LedgerList = new LedgerService(_unitOfWork).FindForLedgerHeader(LedgerHeaderId).ToList();
                    foreach (var item in LedgerList)
                    {
                        new LedgerService(_unitOfWork).Delete(item.LedgerId);
                    }
                    new LedgerHeaderService(_unitOfWork).Delete(LedgerHeaderId);
                }



                if (StockHeaderId != null)
                {
                    new StockHeaderService(_unitOfWork).Delete((int)StockHeaderId);
                }

                XElement Modifications = new ModificationsCheckService().CheckChanges(LogList);
                //Commit the DB
                try
                {
                    _unitOfWork.Save();
                }

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

                //Logging Activity

                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId       = SaleOrderHeader.DocTypeId,
                    DocId           = SaleOrderHeader.SaleOrderHeaderId,
                    ActivityType    = (int)ActivityTypeContants.Deleted,
                    UserRemark      = vm.Reason,
                    DocNo           = SaleOrderHeader.DocNo,
                    xEModifications = Modifications,
                    DocDate         = SaleOrderHeader.DocDate,
                    DocStatus       = SaleOrderHeader.Status,
                }));

                return(Json(new { success = true }));
            }
            return(PartialView("_Reason", vm));
        }
Exemple #2
0
        public JsonResult GetSaleOrderDocNoOnLoad(int SaleOrderLineId)
        {
            var temp = new SaleOrderLineService(_unitOfWork).GetSaleOrderLineVM(SaleOrderLineId);

            return(Json(temp));
        }