Пример #1
0
        public ActionResult Submit(int id, string IndexType, string TransactionType)
        {
            #region DocTypeTimeLineValidation
            JobOrderHeader s = _RecipeHeaderService.Find(id);

            try
            {
                TimePlanValidation = _documentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(s), DocumentTimePlanTypeConstants.Submit, User.Identity.Name, out ExceptionMsg, out Continue);
                TempData["CSEXC"] += ExceptionMsg;
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                TimePlanValidation = false;
            }

            if (!TimePlanValidation && !Continue)
            {
                return(RedirectToAction("Index", new { id = s.DocTypeId, IndexType = IndexType }));
            }
            #endregion

            return(RedirectToAction("Detail", new { id = id, IndexType = IndexType, transactionType = string.IsNullOrEmpty(TransactionType) ? "submit" : TransactionType }));
        }
Пример #2
0
        public ActionResult _FilterPost(JobOrderLineFilterViewModel vm)
        {
            if (vm.JobOrderSettings.isVisibleRate && vm.JobOrderSettings.isMandatoryRate && (vm.Rate == null || vm.Rate == 0))
            {
                ModelState.AddModelError("", "Rate is mandatory");
                PrepareViewBag(null);
                return(PartialView("_Filters", vm));
            }


            List <JobOrderLineViewModel> temp = _JobOrderLineService.GetProdOrdersForFilters(vm).ToList();

            bool UnitConvetsionException = (from p in temp
                                            where p.UnitConversionException == true
                                            select p).Any();

            if (UnitConvetsionException)
            {
                ModelState.AddModelError("", "Unit Conversion are missing for few Products");
            }

            JobOrderMasterDetailModel svm = new JobOrderMasterDetailModel();

            svm.JobOrderLineViewModel = temp;

            JobOrderHeader Header = _jobOrderHeaderService.Find(vm.JobOrderHeaderId);

            JobOrderSettings Settings = _jobOrderSettingsService.GetJobOrderSettingsForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId);

            svm.JobOrderSettings = Mapper.Map <JobOrderSettings, JobOrderSettingsViewModel>(Settings);

            return(PartialView("_Results", svm));
        }
        public ActionResult Reviewed(int Id, string IndexType, string UserRemark, string IsContinue)
        {
            JobOrderHeader pd = _JobOrderHeaderService.Find(Id);

            if (ModelState.IsValid)
            {
                _JobOrderHeaderService.Review(Id, User.Identity.Name, UserRemark);

                string ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;
                //if (!string.IsNullOrEmpty(IsContinue) && IsContinue == "True")
                //{

                //    int nextId = new NextPrevIdService(_unitOfWork).GetNextPrevId(Id, pd.DocTypeId, User.Identity.Name, ForActionConstants.PendingToReview, "Web.JobOrderHeaders", "JobOrderHeaderId", PrevNextConstants.Next);

                //    if (nextId == 0)
                //    {
                //        var PendingtoSubmitCount = _JobOrderHeaderService.GetJobOrderHeaderListPendingToSubmit(pd.DocTypeId, User.Identity.Name).Count();
                //        if (PendingtoSubmitCount > 0)
                //            ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index_PendingToReview" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;
                //        else
                //            ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;
                //    }
                //    else
                //        ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Review" + "/" + nextId + "?TransactionType=ReviewContinue&IndexType=" + IndexType;
                //}


                return(Redirect(ReturnUrl));
            }

            return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Warning("Error in Reviewing."));
        }
Пример #4
0
        public ActionResult Submitted(int Id, string IndexType, string UserRemark, string IsContinue, string GenGatePass)
        {
            JobOrderHeader pd = _RecipeHeaderService.Find(Id);


            if (ModelState.IsValid)
            {
                if (User.Identity.Name == pd.ModifiedBy || UserRoles.Contains("Admin"))
                {
                    try
                    {
                        _RecipeHeaderService.Submit(Id, User.Identity.Name, GenGatePass, UserRemark);
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                        return(RedirectToAction("Index", new { id = pd.DocTypeId }));
                    }
                }
                else
                {
                    return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Warning("Record can be submitted by user " + pd.ModifiedBy + " only."));
                }
            }

            return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }));
        }
        public void UpdateProdUidJobWorkers(ref ApplicationDbContext context, JobOrderHeader Header)
        {
            var Lines = (from p in context.JobOrderLine
                         where p.JobOrderHeaderId == Header.JobOrderHeaderId
                         select p).ToList();

            if (Lines.Count() > 0)
            {
                if (Lines.Where(m => m.ProductUidId != null).Count() > 0)
                {
                    var ProductUids = Lines.Select(m => m.ProductUidId).ToArray();

                    var ProductUidRecords = (from p in context.ProductUid
                                             where ProductUids.Contains(p.ProductUIDId) &&
                                             p.LastTransactionDocId == Header.JobOrderHeaderId
                                             select p).ToList();

                    foreach (var item in ProductUidRecords)
                    {
                        item.LastTransactionPersonId = Header.JobWorkerId;
                        item.LastTransactionDocNo    = Header.DocNo;
                        item.LastTransactionDocDate  = Header.DocDate;
                        item.ObjectState             = Model.ObjectState.Modified;

                        context.ProductUid.Add(item);
                    }
                }
            }
        }
        public ActionResult BarcodePrint(int id)
        {
            string GenDocId = "";

            JobOrderHeader header = _JobOrderHeaderService.Find(id);

            GenDocId = header.DocTypeId.ToString() + '-' + header.DocNo;
            return(Redirect((string)System.Configuration.ConfigurationManager.AppSettings["CustomizeDomain"] + "/Report_BarcodePrint/PrintBarCode/?GenHeaderId=" + GenDocId + "&queryString=" + GenDocId));
        }
Пример #7
0
        private ActionResult _Modify(int id)
        {
            JobOrderLineViewModel temp = _JobOrderLineService.GetJobOrderLine(id);

            JobOrderHeader H = _jobOrderHeaderService.Find(temp.JobOrderHeaderId);

            //Getting Settings
            var settings = _jobOrderSettingsService.GetJobOrderSettingsForDocument(H.DocTypeId, H.DivisionId, H.SiteId);

            temp.JobOrderSettings = Mapper.Map <JobOrderSettings, JobOrderSettingsViewModel>(settings);

            //ViewBag.DocNo = H.DocNo;
            temp.GodownId = H.GodownId;
            if (temp == null)
            {
                return(HttpNotFound());
            }
            PrepareViewBag(temp);

            #region DocTypeTimeLineValidation
            try
            {
                TimePlanValidation = _validator.ValidateDocumentLine(new DocumentUniqueId {
                    LockReason = temp.LockReason
                }, User.Identity.Name, out ExceptionMsg, out Continue);
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXCL"] += message;
                TimePlanValidation  = false;
            }

            if (!TimePlanValidation)
            {
                TempData["CSEXCL"] += ExceptionMsg;
            }
            #endregion

            if ((TimePlanValidation || Continue))
            {
                ViewBag.LineMode = "Edit";
            }


            if (temp.ProdOrderLineId != null)
            {
                return(PartialView("_CreateForProdOrder", temp));
            }
            else
            {
                return(PartialView("_Create", temp));
            }
        }
        public ActionResult ModifyAfter_Submit(int id, string IndexType)
        {
            JobOrderHeader header = _JobOrderHeaderService.Find(id);

            if (header.Status == (int)StatusConstants.Submitted || header.Status == (int)StatusConstants.Modified)
            {
                return(Edit(id, IndexType));
            }
            else
            {
                return(HttpNotFound());
            }
        }
Пример #9
0
        public ActionResult ModifyAfter_Approve(int id, string IndexType)
        {
            JobOrderHeader header = _RecipeHeaderService.Find(id);

            if (header.Status == (int)StatusConstants.Approved)
            {
                return(Edit(id, IndexType));
            }
            else
            {
                return(HttpNotFound());
            }
        }
Пример #10
0
        public ActionResult DeleteAfter_Approve(int id)
        {
            JobOrderHeader header = _RecipeHeaderService.Find(id);

            if (header.Status == (int)StatusConstants.Approved)
            {
                return(Remove(id));
            }
            else
            {
                return(HttpNotFound());
            }
        }
        public ActionResult DeleteAfter_Submit(int id)
        {
            JobOrderHeader header = _JobOrderHeaderService.Find(id);

            if (header.Status == (int)StatusConstants.Submitted || header.Status == (int)StatusConstants.Modified)
            {
                return(Remove(id));
            }
            else
            {
                return(HttpNotFound());
            }
        }
        public ActionResult Delete(int id)
        {
            JobOrderHeader header = _JobOrderHeaderService.Find(id);

            if (header.Status == (int)StatusConstants.Drafted || header.Status == (int)StatusConstants.Import)
            {
                return(Remove(id));
            }
            else
            {
                return(HttpNotFound());
            }
        }
        //[ValidateAntiForgeryToken]
        public ActionResult PriorityUpdate(int Id, string Priority)
        {
            if (ModelState.IsValid)
            {
                List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

                JobOrderHeader Head = db.JobOrderHeader.Find(Id);

                JobOrderHeader ExRec = Mapper.Map <JobOrderHeader>(Head);
                //Head.DueDate = NewDueDate;
                int t = (int)Enum.Parse(typeof(SaleOrderPriority), Priority);
                Head.Priority     = t;
                Head.ModifiedBy   = User.Identity.Name;
                Head.ModifiedDate = DateTime.Now;

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

                Head.ObjectState = Model.ObjectState.Modified;
                db.JobOrderHeader.Add(Head);

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

                try
                {
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    return(Json(new { Success = false }));
                }

                LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                {
                    DocTypeId       = Head.DocTypeId,
                    DocId           = Head.JobOrderHeaderId,
                    ActivityType    = (int)ActivityTypeContants.Modified,
                    DocNo           = Head.DocNo,
                    DocDate         = Head.DocDate,
                    DocStatus       = Head.Status,
                    xEModifications = Modifications,
                }));

                return(Json(new { Success = true }));
            }

            return(Json(new { Success = false }));
        }
        public ActionResult Submitted(int Id, string IndexType, string UserRemark, string IsContinue, string GenGatePass)
        {
            JobOrderHeader pd = _JobOrderHeaderService.Find(Id);


            if (ModelState.IsValid)
            {
                if (User.Identity.Name == pd.ModifiedBy || UserRoles.Contains("Admin"))
                {
                    try
                    {
                        _JobOrderHeaderService.Submit(Id, User.Identity.Name, GenGatePass, UserRemark);
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                        return(RedirectToAction("Index", new { id = pd.DocTypeId }));
                    }


                    //string ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;

                    //if (!string.IsNullOrEmpty(IsContinue) && IsContinue == "True")
                    //{

                    //    int nextId = new NextPrevIdService(_unitOfWork).GetNextPrevId(Id, pd.DocTypeId, User.Identity.Name, ForActionConstants.PendingToSubmit, "Web.JobOrderHeaders", "JobOrderHeaderId", PrevNextConstants.Next);

                    //    if (nextId == 0)
                    //    {
                    //        var PendingtoSubmitCount = _JobOrderHeaderService.GetJobOrderHeaderListPendingToSubmit(pd.DocTypeId, User.Identity.Name).Count();
                    //        if (PendingtoSubmitCount > 0)
                    //            ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index_PendingToSubmit" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;
                    //        else
                    //            ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Index" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;
                    //    }
                    //    else
                    //        ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "JobOrderHeader" + "/" + "Submit" + "/" + nextId + "?TransactionType=submitContinue&IndexType=" + IndexType;
                    //}
                }
                else
                {
                    return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Warning("Record can be submitted by user " + pd.ModifiedBy + " only."));
                }
            }

            return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }));
        }
Пример #15
0
        public ActionResult _Create(int Id, DateTime?date, bool?IsProdBased)   //Id ==>Sale Order Header Id
        {
            JobOrderHeader        H = _jobOrderHeaderService.Find(Id);
            JobOrderLineViewModel s = new JobOrderLineViewModel();

            //Getting Settings
            var settings = _jobOrderSettingsService.GetJobOrderSettingsForDocument(H.DocTypeId, H.DivisionId, H.SiteId);

            s.JobOrderSettings = Mapper.Map <JobOrderSettings, JobOrderSettingsViewModel>(settings);

            var count = _JobOrderLineService.GetJobOrderLineListForIndex(Id).Count();

            if (count > 0)
            {
                s.NonCountedQty = _JobOrderLineService.GetJobOrderLineListForIndex(Id).OrderByDescending(m => m.JobOrderLineId).FirstOrDefault().NonCountedQty;
                s.LossQty       = _JobOrderLineService.GetJobOrderLineListForIndex(Id).OrderByDescending(m => m.JobOrderLineId).FirstOrDefault().LossQty;
                s.DealUnitId    = _JobOrderLineService.GetJobOrderLineListForIndex(Id).OrderByDescending(m => m.JobOrderLineId).FirstOrDefault().DealUnitId;
            }
            else
            {
                s.NonCountedQty = settings.NonCountedQty;
                s.LossQty       = settings.LossQty;
                s.DealUnitId    = settings.DealUnitId;
            }
            s.GodownId           = H.GodownId;
            s.AllowRepeatProcess = false;
            s.JobOrderHeaderId   = H.JobOrderHeaderId;
            ViewBag.Status       = H.Status;
            s.IsProdOrderBased   = IsProdBased ?? true;
            s.DocTypeId          = H.DocTypeId;
            s.SiteId             = H.SiteId;
            s.DivisionId         = H.DivisionId;
            //if (date != null) s.DueDate = date??DateTime.Today;
            PrepareViewBag(s);
            ViewBag.LineMode = "Create";
            //if (!string.IsNullOrEmpty((string)TempData["CSEXCL"]))
            //{
            //    ViewBag.CSEXCL = TempData["CSEXCL"];
            //    TempData["CSEXCL"] = null;
            //}
            if (IsProdBased == true)
            {
                return(PartialView("_CreateForProdOrder", s));
            }
            else
            {
                return(PartialView("_Create", s));
            }
        }
Пример #16
0
        public ActionResult Reviewed(int Id, string IndexType, string UserRemark, string IsContinue)
        {
            JobOrderHeader pd = _RecipeHeaderService.Find(Id);

            if (ModelState.IsValid)
            {
                _RecipeHeaderService.Review(Id, User.Identity.Name, UserRemark);

                string ReturnUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentDomain"] + "/" + "RecipeHeader" + "/" + "Index" + "/" + pd.DocTypeId + "?IndexType=" + IndexType;

                return(Redirect(ReturnUrl));
            }

            return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Warning("Error in Reviewing."));
        }
Пример #17
0
        private ActionResult _Delete(int id)
        {
            RecipeLineViewModel temp = _RecipeLineService.GetStockLine(id);

            JobOrderHeader H = _RecipeHeaderService.Find(temp.JobOrderHeaderId);

            //Getting Settings

            if (temp == null)
            {
                return(HttpNotFound());
            }
            PrepareViewBag(temp);
            //ViewBag.LineMode = "Delete";

            #region DocTypeTimeLineValidation
            try
            {
                TimePlanValidation = _validator.ValidateDocumentLine(new DocumentUniqueId {
                    LockReason = temp.LockReason
                }, User.Identity.Name, out ExceptionMsg, out Continue);
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXCL"] += message;
                TimePlanValidation  = false;
            }

            if (!TimePlanValidation)
            {
                TempData["CSEXCL"] += ExceptionMsg;
            }
            #endregion

            if ((TimePlanValidation || Continue))
            {
                ViewBag.LineMode = "Delete";
            }

            return(PartialView("_Create", temp));
        }
Пример #18
0
        public void _ResultsPost(int JobOrderHeaderId, int StockLineId, int ProductId, Decimal DyeingRatio, Decimal TestingQty, Decimal DocQty, Decimal?ExcessQty, Decimal Qty, Decimal Rate, Decimal Amount)
        {
            RecipeLineViewModel svm            = new RecipeLineViewModel();
            JobOrderHeader      JobOrderHeader = _RecipeHeaderService.Find(JobOrderHeaderId);
            RecipeLineViewModel RecipeLine     = _RecipeLineService.GetStockLine(StockLineId);



            svm.JobOrderHeaderId = JobOrderHeaderId;
            svm.StockHeaderId    = (int)JobOrderHeader.StockHeaderId;
            svm.ProductId        = ProductId;
            svm.DyeingRatio      = DyeingRatio;
            svm.TestingQty       = TestingQty;
            svm.DocQty           = DocQty;
            svm.ExcessQty        = ExcessQty;
            svm.Qty    = Qty;
            svm.Rate   = Rate;
            svm.Amount = Amount;

            try
            {
                if (JobOrderHeader.StockHeaderId == RecipeLine.StockHeaderId)
                {
                    svm.StockLineId = RecipeLine.StockLineId;
                    _RecipeLineService.Update(svm, User.Identity.Name);
                }
                else
                {
                    _RecipeLineService.Create(svm, User.Identity.Name);
                }
            }

            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXCL"] += message;
                PrepareViewBag(svm);
            }
        }
Пример #19
0
        private ActionResult Remove(int id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            JobOrderHeader JobOrderHeader = _RecipeHeaderService.Find(id);

            if (JobOrderHeader == null)
            {
                return(HttpNotFound());
            }

            #region DocTypeTimeLineValidation

            try
            {
                TimePlanValidation = _documentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(JobOrderHeader), DocumentTimePlanTypeConstants.Delete, User.Identity.Name, out ExceptionMsg, out Continue);
                TempData["CSEXC"] += ExceptionMsg;
            }
            catch (Exception ex)
            {
                string message = _exception.HandleException(ex);
                TempData["CSEXC"] += message;
                TimePlanValidation = false;
            }

            if (!TimePlanValidation && !Continue)
            {
                return(PartialView("AjaxError"));
            }
            #endregion

            ReasonViewModel rvm = new ReasonViewModel()
            {
                id = id,
            };
            return(PartialView("_Reason", rvm));
        }
Пример #20
0
        public SubRecipeViewModel Create(SubRecipeViewModel vmSubRecipe, string UserName)
        {
            _RecipeHeaderService.CreateProdOrder(vmSubRecipe.JobOrderHeaderId, UserName, vmSubRecipe.Qty);

            _unitOfWork.Save();

            JobOrderHeader Header = _RecipeHeaderService.Find(vmSubRecipe.JobOrderHeaderId);



            _logger.LogActivityDetail(logVm.Map(new ActiivtyLogViewModel
            {
                DocTypeId    = Header.DocTypeId,
                DocId        = Header.JobOrderHeaderId,
                ActivityType = (int)ActivityTypeContants.Modified,
                DocNo        = Header.DocNo,
                DocDate      = Header.DocDate,
                DocStatus    = Header.Status,
            }));



            return(vmSubRecipe);
        }
Пример #21
0
        //[ValidateAntiForgeryToken]
        public ActionResult _CreatePost(RecipeLineViewModel svm, string BulkMode)
        {
            bool           BeforeSave = true;
            JobOrderHeader temp       = _RecipeHeaderService.Find(svm.JobOrderHeaderId);


            if (svm.Qty <= 0)
            {
                ModelState.AddModelError("Qty", "The Qty is required");
            }

            if (_RecipeLineService.IsDuplicateLine(svm.StockHeaderId, svm.ProductId, svm.DyeingRatio, svm.StockLineId))
            {
                ModelState.AddModelError("ProductId", "Product is already entered in recipe.");
            }

            ViewBag.Status = temp.Status;


            if (svm.StockLineId <= 0)
            {
                ViewBag.LineMode = "Create";
            }
            else
            {
                ViewBag.LineMode = "Edit";
            }

            if (ModelState.IsValid && BeforeSave)
            {
                if (svm.StockLineId <= 0)
                {
                    try
                    {
                        _RecipeLineService.Create(svm, User.Identity.Name);
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXCL"] += message;
                        PrepareViewBag(svm);

                        return(PartialView("_Create", svm));
                    }

                    return(RedirectToAction("_Create", new { id = svm.JobOrderHeaderId }));
                }


                else
                {
                    try
                    {
                        _RecipeLineService.Update(svm, User.Identity.Name);
                    }

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

                    return(Json(new { success = true }));
                }
            }
            PrepareViewBag(svm);
            return(PartialView("_Create", svm));
        }
Пример #22
0
 public JobOrderHeader Create(JobOrderHeader s)
 {
     s.ObjectState = ObjectState.Added;
     _unitOfWork.Repository <JobOrderHeader>().Insert(s);
     return(s);
 }
Пример #23
0
 public void Delete(JobOrderHeader s)
 {
     _unitOfWork.Repository <JobOrderHeader>().Delete(s);
 }
Пример #24
0
 public void Update(JobOrderHeader s)
 {
     s.ObjectState = ObjectState.Modified;
     _unitOfWork.Repository <JobOrderHeader>().Update(s);
 }
        public ActionResult PostCostCenters(List <int> CostCenterId, DateTime CloseDate)
        {
            List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

            int[] CostCenterIds = CostCenterId.Select(m => m).ToArray();



            if (ModelState.IsValid)
            {
                var CostCenters = (from p in db.CostCenter
                                   join t in db.CostCenterStatus on p.CostCenterId equals t.CostCenterId into CostCenterStatusTable
                                   from CostCenterStatusTab in CostCenterStatusTable.DefaultIfEmpty()
                                   join jos in db.JobOrderSettings on new { A = p.ReferenceDocTypeId ?? 0, B = p.SiteId ?? 0, C = p.DivisionId ?? 0 } equals new { A = jos.DocTypeId, B = jos.SiteId, C = jos.DivisionId } into josTable
                                   from josTab in josTable.DefaultIfEmpty()
                                   where CostCenterIds.Contains(p.CostCenterId)
                                   select new
                {
                    p.CostCenterId,
                    p.LedgerAccountId,
                    p.DivisionId,
                    p.SiteId,
                    p.ReferenceDocId,
                    p.ReferenceDocTypeId,
                    AmountDr = CostCenterStatusTab.AmountDr ?? 0,
                    AmountCr = CostCenterStatusTab.AmountCr ?? 0,
                    p.DocTypeId,
                    p.StartDate,
                    p.Status,
                    p.CloseDate,
                    p.ModifiedBy,
                    p.ModifiedDate,
                    josTab.RetensionCostCenter,
                }).ToList();

                int?ProcessId = null;
                var Process   = db.Process.Where(m => m.ProcessName == ProcessConstants.Weaving).FirstOrDefault();
                if (Process != null)
                {
                    ProcessId = Process.ProcessId;
                }

                int    itemcount   = 0;
                int    ROitemcount = 0;
                string DocNo       = "";
                string TempDocNo   = "";


                foreach (var item in CostCenters)
                {
                    itemcount = itemcount + 1;
                    int          PurjaAmountTransferDocTypeId = 717;
                    int          LedgerAccountId = (int)item.LedgerAccountId;
                    LedgerHeader Header          = new LedgerHeader();



                    Header.CreatedBy   = User.Identity.Name;
                    Header.CreatedDate = DateTime.Now;
                    Header.DivisionId  = (int)item.DivisionId;
                    Header.SiteId      = (int)item.SiteId;
                    Header.DivisionId  = (int)item.DivisionId;
                    Header.DocDate     = CloseDate;
                    Header.PaymentFor  = CloseDate;
                    Header.ProcessId   = ProcessId;
                    //Header.DocDate = (DateTime)item.CloseDate;
                    //Header.PaymentFor = item.CloseDate;
                    Header.DocTypeId    = PurjaAmountTransferDocTypeId;
                    Header.CostCenterId = item.CostCenterId;
                    // Header.DocHeaderId = StokHeader.StockHeaderId;
                    DocNo = new DocumentTypeService(_unitOfWork).FGetNewDocNo("DocNo", ConfigurationManager.AppSettings["DataBaseSchema"] + ".LedgerHeaders", Header.DocTypeId, Header.DocDate, Header.DivisionId, Header.SiteId);


                    TempDocNo = DocNo.Substring(0, 2) + "-" + (Convert.ToInt32(DocNo.Substring(DocNo.IndexOf("-") + 1)) + itemcount - 1).ToString().PadLeft(4, '0').ToString();
                    DocNo     = TempDocNo;



                    Header.LedgerHeaderId  = -itemcount;
                    Header.DocNo           = DocNo;
                    Header.LedgerAccountId = LedgerAccountId;
                    Header.ModifiedBy      = User.Identity.Name;
                    Header.ModifiedDate    = DateTime.Now;
                    //Header.Remark = StokHeader.Remark;
                    Header.Status      = (int)StatusConstants.Locked;
                    Header.ObjectState = Model.ObjectState.Added;
                    db.LedgerHeader.Add(Header);


                    decimal Amount         = Math.Round((decimal)item.AmountDr - (decimal)item.AmountCr, 0, MidpointRounding.AwayFromZero);
                    decimal RoundOffAmount = Amount - ((decimal)item.AmountDr - (decimal)item.AmountCr);

                    if (Amount != 0)
                    {
                        //Postingcontra LedgerRecord;;
                        LedgerLine Ledgerline = new LedgerLine();
                        Ledgerline.LedgerHeaderId  = Header.LedgerHeaderId;
                        Ledgerline.LedgerAccountId = LedgerAccountId;
                        Ledgerline.Amount          = Amount;
                        Ledgerline.CostCenterId    = item.RetensionCostCenter;
                        Ledgerline.CreatedDate     = DateTime.Now;
                        Ledgerline.ModifiedDate    = DateTime.Now;
                        Ledgerline.CreatedBy       = User.Identity.Name;
                        //Ledgerline.Remark = svm.Remark;
                        Ledgerline.ModifiedBy  = User.Identity.Name;
                        Ledgerline.ObjectState = Model.ObjectState.Added;


                        db.LedgerLine.Add(Ledgerline);


                        //Postingcontra LedgerRecord;;
                        Ledger Ledger = new Ledger();

                        Ledger.AmtDr                 = Amount < 0 ? Math.Abs(Amount) : 0;
                        Ledger.AmtCr                 = Amount < 0 ? 0 : Math.Abs(Amount);
                        Ledger.LedgerHeaderId        = Header.LedgerHeaderId;
                        Ledger.LedgerAccountId       = LedgerAccountId;
                        Ledger.CostCenterId          = item.CostCenterId;
                        Ledger.ContraLedgerAccountId = LedgerAccountId;
                        Ledger.ObjectState           = Model.ObjectState.Added;
                        db.Ledger.Add(Ledger);
                        //new LedgerService(_unitOfWork).Create(Ledger);



                        //Postingcontra LedgerRecord;;
                        Ledger ContraLedger = new Ledger();
                        ContraLedger.AmtCr                 = Amount;
                        ContraLedger.AmtDr                 = Amount < 0 ? 0 : Math.Abs(Amount);
                        ContraLedger.AmtCr                 = Amount < 0 ? Math.Abs(Amount) : 0;
                        ContraLedger.LedgerHeaderId        = Header.LedgerHeaderId;
                        ContraLedger.LedgerAccountId       = LedgerAccountId;
                        ContraLedger.CostCenterId          = item.RetensionCostCenter;
                        ContraLedger.ContraLedgerAccountId = LedgerAccountId;
                        ContraLedger.ObjectState           = Model.ObjectState.Added;
                        //new LedgerService(_unitOfWork).Create(ContraLedger);
                        db.Ledger.Add(ContraLedger);
                    }



                    if (RoundOffAmount != 0)
                    {
                        ROitemcount = ROitemcount + 1;

                        LedgerHeader ROLHeader = new LedgerHeader();

                        int RODocType         = 0;
                        int RoundOffAccountId = 6660;

                        if (RoundOffAmount > 0)
                        {
                            RODocType = 785;//dr
                        }
                        else
                        {
                            RODocType = 786;//cr
                        }
                        ROLHeader.CreatedBy    = User.Identity.Name;
                        ROLHeader.CreatedDate  = DateTime.Now;
                        ROLHeader.DivisionId   = (int)item.DivisionId;
                        ROLHeader.SiteId       = (int)item.SiteId;
                        ROLHeader.DivisionId   = (int)item.DivisionId;
                        ROLHeader.DocDate      = CloseDate;
                        ROLHeader.PaymentFor   = CloseDate;
                        ROLHeader.ProcessId    = ProcessId;
                        ROLHeader.DocTypeId    = RODocType;
                        ROLHeader.CostCenterId = item.CostCenterId;
                        DocNo = new DocumentTypeService(_unitOfWork).FGetNewDocNo("DocNo", ConfigurationManager.AppSettings["DataBaseSchema"] + ".LedgerHeaders", ROLHeader.DocTypeId, ROLHeader.DocDate, ROLHeader.DivisionId, ROLHeader.SiteId);;


                        TempDocNo = DocNo.Substring(0, 2) + "-" + (Convert.ToInt32(DocNo.Substring(DocNo.IndexOf("-") + 1)) + ROitemcount - 1).ToString().PadLeft(4, '0').ToString();
                        DocNo     = TempDocNo;

                        ROLHeader.LedgerHeaderId  = +ROitemcount;
                        ROLHeader.DocNo           = DocNo;
                        ROLHeader.LedgerAccountId = RoundOffAccountId;
                        ROLHeader.ModifiedBy      = User.Identity.Name;
                        ROLHeader.ModifiedDate    = DateTime.Now;
                        ROLHeader.Remark          = "On Cost Center Closing";
                        ROLHeader.Status          = (int)StatusConstants.Locked;
                        ROLHeader.ObjectState     = Model.ObjectState.Added;

                        db.LedgerHeader.Add(ROLHeader);



                        //Postingcontra LedgerRecord;;
                        LedgerLine Ledgerline1 = new LedgerLine();
                        Ledgerline1.LedgerHeaderId  = ROLHeader.LedgerHeaderId;
                        Ledgerline1.LedgerAccountId = LedgerAccountId;
                        Ledgerline1.Amount          = Math.Abs(RoundOffAmount);
                        Ledgerline1.CostCenterId    = item.CostCenterId;
                        Ledgerline1.CreatedDate     = DateTime.Now;
                        Ledgerline1.ModifiedDate    = DateTime.Now;
                        Ledgerline1.CreatedBy       = User.Identity.Name;
                        //Ledgerline.Remark = svm.Remark;
                        Ledgerline1.ModifiedBy  = User.Identity.Name;
                        Ledgerline1.ObjectState = Model.ObjectState.Added;


                        db.LedgerLine.Add(Ledgerline1);


                        #region CSEUpdate
                        var CSE = db.CostCenterStatusExtended.Find(item.CostCenterId);

                        if (RODocType == 785)
                        {
                            CSE.DebitAmount = (CSE.DebitAmount ?? 0) + Math.Abs(RoundOffAmount);
                        }
                        else if (RODocType == 786)
                        {
                            CSE.CreditAmount = (CSE.CreditAmount ?? 0) + Math.Abs(RoundOffAmount);
                        }

                        CSE.ObjectState = Model.ObjectState.Modified;
                        db.CostCenterStatusExtended.Add(CSE);
                        #endregion



                        //Postingcontra LedgerRecord;;
                        Ledger Ledger1 = new Ledger();



                        Ledger1.AmtDr                 = RoundOffAmount > 0 ? Math.Abs(RoundOffAmount) : 0;
                        Ledger1.AmtCr                 = RoundOffAmount < 0 ? Math.Abs(RoundOffAmount) : 0;
                        Ledger1.LedgerHeaderId        = ROLHeader.LedgerHeaderId;
                        Ledger1.LedgerAccountId       = LedgerAccountId;
                        Ledger1.CostCenterId          = item.CostCenterId;
                        Ledger1.ContraLedgerAccountId = RoundOffAccountId;
                        Ledger1.ObjectState           = Model.ObjectState.Added;
                        db.Ledger.Add(Ledger1);
                        //new LedgerService(_unitOfWork).Create(Ledger);



                        //Postingcontra LedgerRecord;;
                        Ledger ContraLedger1 = new Ledger();
                        ContraLedger1.AmtDr                 = RoundOffAmount < 0 ? Math.Abs(RoundOffAmount) : 0;
                        ContraLedger1.AmtCr                 = RoundOffAmount > 0 ? Math.Abs(RoundOffAmount) : 0;
                        ContraLedger1.LedgerHeaderId        = ROLHeader.LedgerHeaderId;
                        ContraLedger1.LedgerAccountId       = RoundOffAccountId;
                        ContraLedger1.ContraLedgerAccountId = LedgerAccountId;
                        ContraLedger1.ObjectState           = Model.ObjectState.Added;
                        //new LedgerService(_unitOfWork).Create(ContraLedger);
                        db.Ledger.Add(ContraLedger1);
                    }
                }



                // Start For Old RetentionTrf
                foreach (var item in CostCenters)
                {
                    IQueryable <JobOrderHeaderViewModel> p = _JobOrderHeaderService.GetJobOrderHeaderListByCostCenter(item.CostCenterId);

                    foreach (var V1 in p)
                    {
                        JobOrderHeader joborder = db.JobOrderHeader.Find(V1.JobOrderHeaderId);
                        joborder.Status       = (int)StatusConstants.Closed;
                        joborder.ModifiedBy   = User.Identity.Name;
                        joborder.ModifiedDate = DateTime.Now;
                        joborder.ObjectState  = Model.ObjectState.Modified;
                        db.JobOrderHeader.Add(joborder);


                        #region CSEUpdate
                        var JOHS = db.JobOrderHeaderStatus.Find(V1.JobOrderHeaderId);
                        JOHS.Status      = (int)StatusConstants.Closed;
                        JOHS.ObjectState = Model.ObjectState.Modified;
                        db.JobOrderHeaderStatus.Add(JOHS);
                        #endregion
                    }

                    CostCenter costcenter = db.CostCenter.Find(item.CostCenterId);

                    costcenter.Status       = (int)StatusConstants.Closed;
                    costcenter.CloseDate    = CloseDate;
                    costcenter.IsActive     = false;
                    costcenter.ModifiedBy   = User.Identity.Name;
                    costcenter.ModifiedDate = DateTime.Now;
                    costcenter.ObjectState  = Model.ObjectState.Modified;
                    db.CostCenter.Add(costcenter);


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

                    XElement    Modifications = new ModificationsCheckService().CheckChanges(LogList);
                    ActivityLog Log           = new ActivityLog()
                    {
                        ActivityType  = (int)ActivityTypeContants.Closed,
                        CreatedBy     = User.Identity.Name,
                        CreatedDate   = DateTime.Now,
                        DocId         = item.CostCenterId,
                        DocTypeId     = item.DocTypeId,
                        Modifications = Modifications.ToString(),
                        Narration     = "",
                    };

                    Log.ObjectState = Model.ObjectState.Added;
                    db.ActivityLog.Add(Log);
                }

                // End  For Old RetentionTrf
                try
                {
                    db.SaveChanges();
                }

                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    ModelState.AddModelError("", message);
                    return(Json(new { Success = false }));
                }


                return(Json(new { Success = true }));
            }

            //PrepareViewBag(svm.DocTypeId);
            //ViewBag.Mode = "Add";
            //return View("Create", svm);
            return(View("CloseCostCenters"));
        }
Пример #26
0
        public ActionResult Post(JobOrderHeaderViewModel svm)
        {
            JobOrderHeader        s       = Mapper.Map <JobOrderHeaderViewModel, JobOrderHeader>(svm);
            ProdOrderCancelHeader cHeader = new ProdOrderCancelHeader();

            if (svm.JobOrderSettings != null)
            {
                if (svm.JobOrderSettings.isMandatoryCostCenter == true && (svm.CostCenterId <= 0 || svm.CostCenterId == null))
                {
                    ModelState.AddModelError("CostCenterId", "The CostCenter field is required");
                }
                if (svm.JobOrderSettings.isMandatoryMachine == true && (svm.MachineId <= 0 || svm.MachineId == null))
                {
                    ModelState.AddModelError("MachineId", "The Machine field is required");
                }
                if (svm.JobOrderSettings.isPostedInStock == true && !svm.GodownId.HasValue)
                {
                    ModelState.AddModelError("GodownId", "The Godown field is required");
                }
            }

            #region DocTypeTimeLineValidation

            try
            {
                TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(svm), DocumentTimePlanTypeConstants.Create, 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))
            {
                List <ProdOrderHeaderListViewModel> ProdOrderIds = (List <ProdOrderHeaderListViewModel>)System.Web.HttpContext.Current.Session["ConfirmProdOrderIds"];
                bool CancelBalProdOrders = (bool)System.Web.HttpContext.Current.Session["CancelBalProdOrdrs"];
                bool CreateDyeingOrder   = ProdOrderIds.Any(m => m.Qty > 0);

                var ProdOrderLineIds = ProdOrderIds.Select(m => m.ProdOrderLineId).ToArray();

                var BalProdOrders = (from p in db.ViewProdOrderBalance.AsNoTracking()
                                     where ProdOrderLineIds.Contains(p.ProdOrderLineId)
                                     select p).ToList();

                var ProdOrderLines = (from p in db.ProdOrderLine.AsNoTracking()
                                      where ProdOrderLineIds.Contains(p.ProdOrderLineId)
                                      select p).ToList();

                var ProductIds = BalProdOrders.Select(m => m.ProductId).ToList();

                var Products = (from p in db.Product.AsNoTracking()
                                where ProductIds.Contains(p.ProductId)
                                select p).ToList();

                bool CancelQty = (from p in ProdOrderIds
                                  join t in BalProdOrders
                                  on p.ProdOrderLineId equals t.ProdOrderLineId
                                  where (t.BalanceQty - p.Qty) > 0
                                  select p).Any();
                CancelBalProdOrders = (CancelBalProdOrders && CancelQty);

                if (CreateDyeingOrder)
                {
                    s.CreatedDate   = DateTime.Now;
                    s.ModifiedDate  = DateTime.Now;
                    s.ActualDueDate = s.DueDate;
                    s.ActualDocDate = s.DocDate;
                    s.CreatedBy     = User.Identity.Name;
                    s.ModifiedBy    = User.Identity.Name;
                    s.Status        = (int)StatusConstants.Drafted;
                    _JobOrderHeaderService.Create(s);

                    new JobOrderHeaderStatusService(_unitOfWork).CreateHeaderStatus(s.JobOrderHeaderId, ref db, false);

                    if (svm.PerkViewModel != null)
                    {
                        foreach (PerkViewModel item in svm.PerkViewModel)
                        {
                            JobOrderPerk perk = Mapper.Map <PerkViewModel, JobOrderPerk>(item);
                            perk.CreatedBy        = User.Identity.Name;
                            perk.CreatedDate      = DateTime.Now;
                            perk.ModifiedBy       = User.Identity.Name;
                            perk.ModifiedDate     = DateTime.Now;
                            perk.JobOrderHeaderId = s.JobOrderHeaderId;
                            new JobOrderPerkService(_unitOfWork).Create(perk);
                        }
                    }
                }

                if (CancelBalProdOrders)
                {
                    cHeader.DocNo              = s.DocNo;
                    cHeader.DocDate            = s.DocDate;
                    cHeader.DocTypeId          = new DocumentTypeService(_unitOfWork).FindByName(TransactionDoctypeConstants.DyeingPlanCancel).DocumentTypeId;
                    cHeader.DivisionId         = s.DivisionId;
                    cHeader.SiteId             = s.SiteId;
                    cHeader.CreatedBy          = User.Identity.Name;
                    cHeader.CreatedDate        = DateTime.Now;
                    cHeader.ModifiedBy         = User.Identity.Name;
                    cHeader.ModifiedDate       = DateTime.Now;
                    cHeader.ReferenceDocId     = s.JobOrderHeaderId;
                    cHeader.ReferenceDocTypeId = s.DocTypeId;
                    cHeader.Remark             = s.Remark;
                    cHeader.ObjectState        = Model.ObjectState.Added;
                    new ProdOrderCancelHeaderService(_unitOfWork).Create(cHeader);
                }

                int Cnt = 0;

                List <HeaderChargeViewModel> HeaderCharges = new List <HeaderChargeViewModel>();
                List <LineChargeViewModel>   LineCharges   = new List <LineChargeViewModel>();
                int  pk = 0;
                bool HeaderChargeEdit = false;



                JobOrderSettings Settings = new JobOrderSettingsService(_unitOfWork).GetJobOrderSettingsForDocument(s.DocTypeId, s.DivisionId, s.SiteId);

                int?MaxLineId = new JobOrderLineChargeService(_unitOfWork).GetMaxProductCharge(s.JobOrderHeaderId, "Web.JobOrderLines", "JobOrderHeaderId", "JobOrderLineId");

                int PersonCount = 0;
                //if (!Settings.CalculationId.HasValue)
                //{
                //    throw new Exception("Calculation not configured in Job order settings");
                //}

                int CalculationId = Settings.CalculationId ?? 0;

                List <LineDetailListViewModel> LineList = new List <LineDetailListViewModel>();

                foreach (var ProdORderLineId in ProdOrderIds)
                {
                    var BalProdOrderLine = BalProdOrders.Where(m => m.ProdOrderLineId == ProdORderLineId.ProdOrderLineId).FirstOrDefault();
                    var Product          = Products.Where(m => m.ProductId == BalProdOrderLine.ProductId).FirstOrDefault();


                    if (ProdORderLineId.Qty <= BalProdOrderLine.BalanceQty && ProdORderLineId.Qty > 0)
                    {
                        if (((Settings.isVisibleRate == false || Settings.isVisibleRate == true)))
                        {
                            JobOrderLine line = new JobOrderLine();

                            if (Settings.isPostedInStock ?? false)
                            {
                                StockViewModel StockViewModel = new StockViewModel();

                                if (Cnt == 0)
                                {
                                    StockViewModel.StockHeaderId = s.StockHeaderId ?? 0;
                                }
                                else
                                {
                                    if (s.StockHeaderId != null && s.StockHeaderId != 0)
                                    {
                                        StockViewModel.StockHeaderId = (int)s.StockHeaderId;
                                    }
                                    else
                                    {
                                        StockViewModel.StockHeaderId = -1;
                                    }
                                }

                                StockViewModel.StockId            = -Cnt;
                                StockViewModel.DocHeaderId        = s.JobOrderHeaderId;
                                StockViewModel.DocLineId          = line.JobOrderLineId;
                                StockViewModel.DocTypeId          = s.DocTypeId;
                                StockViewModel.StockHeaderDocDate = s.DocDate;
                                StockViewModel.StockDocDate       = s.DocDate;
                                StockViewModel.DocNo              = s.DocNo;
                                StockViewModel.DivisionId         = s.DivisionId;
                                StockViewModel.SiteId             = s.SiteId;
                                StockViewModel.CurrencyId         = null;
                                StockViewModel.PersonId           = s.JobWorkerId;
                                StockViewModel.ProductId          = BalProdOrderLine.ProductId;
                                StockViewModel.HeaderFromGodownId = null;
                                StockViewModel.HeaderGodownId     = s.GodownId;
                                StockViewModel.HeaderProcessId    = s.ProcessId;
                                StockViewModel.GodownId           = (int)s.GodownId;
                                StockViewModel.Remark             = s.Remark;
                                StockViewModel.Status             = s.Status;
                                StockViewModel.ProcessId          = s.ProcessId;
                                StockViewModel.LotNo              = null;
                                StockViewModel.CostCenterId       = s.CostCenterId;
                                StockViewModel.Qty_Iss            = ProdORderLineId.Qty;
                                StockViewModel.Qty_Rec            = 0;
                                StockViewModel.Rate          = 0;
                                StockViewModel.ExpiryDate    = null;
                                StockViewModel.Specification = ProdOrderLines.Where(m => m.ProdOrderLineId == ProdORderLineId.ProdOrderLineId).FirstOrDefault().Specification;
                                StockViewModel.Dimension1Id  = BalProdOrderLine.Dimension1Id;
                                StockViewModel.Dimension2Id  = BalProdOrderLine.Dimension2Id;
                                StockViewModel.CreatedBy     = User.Identity.Name;
                                StockViewModel.CreatedDate   = DateTime.Now;
                                StockViewModel.ModifiedBy    = User.Identity.Name;
                                StockViewModel.ModifiedDate  = DateTime.Now;

                                string StockPostingError = "";
                                StockPostingError = new StockService(_unitOfWork).StockPost(ref StockViewModel);

                                if (StockPostingError != "")
                                {
                                    string message = StockPostingError;
                                    ModelState.AddModelError("", message);
                                    return(View("Create", svm));
                                }

                                if (Cnt == 0)
                                {
                                    s.StockHeaderId = StockViewModel.StockHeaderId;
                                }
                                line.StockId = StockViewModel.StockId;
                            }



                            if (Settings.isPostedInStockProcess ?? false)
                            {
                                StockProcessViewModel StockProcessViewModel = new StockProcessViewModel();

                                if (s.StockHeaderId != null && s.StockHeaderId != 0)//If Transaction Header Table Has Stock Header Id Then It will Save Here.
                                {
                                    StockProcessViewModel.StockHeaderId = (int)s.StockHeaderId;
                                }
                                else if (Settings.isPostedInStock ?? false)//If Stok Header is already posted during stock posting then this statement will Execute.So theat Stock Header will not generate again.
                                {
                                    StockProcessViewModel.StockHeaderId = -1;
                                }
                                else if (Cnt > 0)//If function will only post in stock process then after first iteration of loop the stock header id will go -1
                                {
                                    StockProcessViewModel.StockHeaderId = -1;
                                }
                                else//If function will only post in stock process then this statement will execute.For Example Job consumption.
                                {
                                    StockProcessViewModel.StockHeaderId = 0;
                                }
                                StockProcessViewModel.StockProcessId      = -Cnt;
                                StockProcessViewModel.DocHeaderId         = s.JobOrderHeaderId;
                                StockProcessViewModel.DocLineId           = line.JobOrderLineId;
                                StockProcessViewModel.DocTypeId           = s.DocTypeId;
                                StockProcessViewModel.StockHeaderDocDate  = s.DocDate;
                                StockProcessViewModel.StockProcessDocDate = s.DocDate;
                                StockProcessViewModel.DocNo              = s.DocNo;
                                StockProcessViewModel.DivisionId         = s.DivisionId;
                                StockProcessViewModel.SiteId             = s.SiteId;
                                StockProcessViewModel.CurrencyId         = null;
                                StockProcessViewModel.PersonId           = s.JobWorkerId;
                                StockProcessViewModel.ProductId          = BalProdOrderLine.ProductId;
                                StockProcessViewModel.HeaderFromGodownId = null;
                                StockProcessViewModel.HeaderGodownId     = s.GodownId;
                                StockProcessViewModel.HeaderProcessId    = s.ProcessId;
                                StockProcessViewModel.GodownId           = s.GodownId;
                                StockProcessViewModel.Remark             = s.Remark;
                                StockProcessViewModel.Status             = s.Status;
                                StockProcessViewModel.ProcessId          = s.ProcessId;
                                StockProcessViewModel.LotNo              = null;
                                StockProcessViewModel.CostCenterId       = s.CostCenterId;
                                StockProcessViewModel.Qty_Iss            = 0;
                                StockProcessViewModel.Qty_Rec            = ProdORderLineId.Qty;
                                StockProcessViewModel.Rate          = 0;
                                StockProcessViewModel.ExpiryDate    = null;
                                StockProcessViewModel.Specification = ProdOrderLines.Where(m => m.ProdOrderLineId == ProdORderLineId.ProdOrderLineId).FirstOrDefault().Specification;
                                StockProcessViewModel.Dimension1Id  = BalProdOrderLine.Dimension1Id;
                                StockProcessViewModel.Dimension2Id  = BalProdOrderLine.Dimension2Id;
                                StockProcessViewModel.CreatedBy     = User.Identity.Name;
                                StockProcessViewModel.CreatedDate   = DateTime.Now;
                                StockProcessViewModel.ModifiedBy    = User.Identity.Name;
                                StockProcessViewModel.ModifiedDate  = DateTime.Now;

                                string StockProcessPostingError = "";
                                StockProcessPostingError = new StockProcessService(_unitOfWork).StockProcessPost(ref StockProcessViewModel);

                                if (StockProcessPostingError != "")
                                {
                                    string message = StockProcessPostingError;
                                    ModelState.AddModelError("", message);
                                    return(PartialView("_Results", svm));
                                }


                                if ((Settings.isPostedInStock ?? false) == false)
                                {
                                    if (Cnt == 0)
                                    {
                                        s.StockHeaderId = StockProcessViewModel.StockHeaderId;
                                    }
                                }

                                line.StockProcessId = StockProcessViewModel.StockProcessId;
                            }



                            line.JobOrderHeaderId = s.JobOrderHeaderId;
                            line.ProdOrderLineId  = BalProdOrderLine.ProdOrderLineId;
                            line.ProductId        = BalProdOrderLine.ProductId;
                            line.Dimension1Id     = BalProdOrderLine.Dimension1Id;
                            line.Dimension2Id     = BalProdOrderLine.Dimension2Id;
                            line.Specification    = ProdOrderLines.Where(m => m.ProdOrderLineId == ProdORderLineId.ProdOrderLineId).FirstOrDefault().Specification;
                            line.Qty        = ProdORderLineId.Qty;
                            line.Rate       = ProdORderLineId.Rate;
                            line.DealQty    = ProdORderLineId.Qty;
                            line.UnitId     = Product.UnitId;
                            line.DealUnitId = Product.UnitId;
                            line.Amount     = (line.DealQty * line.Rate);
                            line.UnitConversionMultiplier = 1;
                            line.CreatedDate    = DateTime.Now;
                            line.ModifiedDate   = DateTime.Now;
                            line.CreatedBy      = User.Identity.Name;
                            line.ModifiedBy     = User.Identity.Name;
                            line.JobOrderLineId = pk;
                            line.Sr             = pk;
                            line.ObjectState    = Model.ObjectState.Added;
                            new JobOrderLineService(_unitOfWork).Create(line);

                            new JobOrderLineStatusService(_unitOfWork).CreateLineStatus(line.JobOrderLineId, ref db, false);

                            LineList.Add(new LineDetailListViewModel {
                                Amount = line.Amount, Rate = line.Rate, LineTableId = line.JobOrderLineId, HeaderTableId = s.JobOrderHeaderId, PersonID = s.JobWorkerId, DealQty = line.DealQty
                            });

                            pk++;
                            Cnt++;
                        }
                    }


                    if (CancelBalProdOrders && (BalProdOrderLine.BalanceQty - ProdORderLineId.Qty > 0))
                    {
                        ProdOrderCancelLine cLine = new ProdOrderCancelLine();
                        cLine.CreatedBy               = User.Identity.Name;
                        cLine.CreatedDate             = DateTime.Now;
                        cLine.ModifiedBy              = User.Identity.Name;
                        cLine.ModifiedDate            = DateTime.Now;
                        cLine.ProdOrderCancelHeaderId = cHeader.ProdOrderCancelHeaderId;
                        cLine.ProdOrderLineId         = ProdORderLineId.ProdOrderLineId;
                        cLine.Qty = (BalProdOrderLine.BalanceQty - ProdORderLineId.Qty);
                        cLine.ReferenceDocTypeId = cHeader.ReferenceDocTypeId;
                        cLine.ObjectState        = Model.ObjectState.Added;
                        new ProdOrderCancelLineService(_unitOfWork).Create(cLine);
                    }
                }

                //new JobOrderHeaderService(_unitOfWork).Update(s);

                new ChargesCalculationService(_unitOfWork).CalculateCharges(LineList, s.JobOrderHeaderId, CalculationId, MaxLineId, out LineCharges, out HeaderChargeEdit, out HeaderCharges, "Web.JobOrderHeaderCharges", "Web.JobOrderLineCharges", out PersonCount, s.DocTypeId, s.SiteId, s.DivisionId);

                //Saving Charges
                foreach (var item in LineCharges)
                {
                    JobOrderLineCharge PoLineCharge = Mapper.Map <LineChargeViewModel, JobOrderLineCharge>(item);
                    PoLineCharge.ObjectState = Model.ObjectState.Added;
                    new JobOrderLineChargeService(_unitOfWork).Create(PoLineCharge);
                }


                //Saving Header charges
                for (int i = 0; i < HeaderCharges.Count(); i++)
                {
                    if (!HeaderChargeEdit)
                    {
                        JobOrderHeaderCharge POHeaderCharge = Mapper.Map <HeaderChargeViewModel, JobOrderHeaderCharge>(HeaderCharges[i]);
                        POHeaderCharge.HeaderTableId = s.JobOrderHeaderId;
                        POHeaderCharge.PersonID      = s.JobWorkerId;
                        POHeaderCharge.ObjectState   = Model.ObjectState.Added;
                        new JobOrderHeaderChargeService(_unitOfWork).Create(POHeaderCharge);
                    }
                    else
                    {
                        var footercharge = new JobOrderHeaderChargeService(_unitOfWork).Find(HeaderCharges[i].Id);
                        footercharge.Rate   = HeaderCharges[i].Rate;
                        footercharge.Amount = HeaderCharges[i].Amount;
                        new JobOrderHeaderChargeService(_unitOfWork).Update(footercharge);
                    }
                }



                try
                {
                    _unitOfWork.Save();
                }

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

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

                System.Web.HttpContext.Current.Session.Remove("ConfirmProdOrderIds");
                System.Web.HttpContext.Current.Session.Remove("CancelBalProdOrdrs");

                if (CreateDyeingOrder)
                {
                    return(Redirect(System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobOrderHeader/Submit/" + s.JobOrderHeaderId));
                }
                else
                {
                    return(Redirect(System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobOrderHeader/Index/" + s.DocTypeId));
                }
            }

            PrepareViewBag();
            ViewBag.Mode = "Add";
            return(View("Create", svm));
        }
Пример #27
0
        //[ValidateAntiForgeryToken]
        public ActionResult _CreatePost(JobOrderLineViewModel svm)
        {
            bool           BeforeSave = true;
            JobOrderHeader temp       = _jobOrderHeaderService.Find(svm.JobOrderHeaderId);

            var settings = _jobOrderSettingsService.GetJobOrderSettingsForDocument(temp.DocTypeId, temp.DivisionId, temp.SiteId);

            if (settings != null)
            {
                if (settings.isVisibleProcessLine == true && settings.isMandatoryProcessLine == true && (svm.FromProcessId <= 0 || svm.FromProcessId == null))
                {
                    ModelState.AddModelError("FromProcessId", "The Process field is required");
                }
                if (settings.isVisibleRate == true && settings.isMandatoryRate == true && svm.Rate <= 0)
                {
                    ModelState.AddModelError("Rate", "The Rate field is required");
                }
                if (settings.isVisibleProductUID == true && settings.isMandatoryProductUID == true && !svm.ProductUidId.HasValue)
                {
                    ModelState.AddModelError("ProductUidIdName", "The ProductUid field is required");
                }
            }


            if (svm.Qty <= 0)
            {
                ModelState.AddModelError("Qty", "The Qty is required");
            }

            if (svm.DealQty <= 0)
            {
                ModelState.AddModelError("DealQty", "DealQty field is required");
            }



            ViewBag.Status = temp.Status;


            if (svm.DueDate != null && temp.DocDate > svm.DueDate)
            {
                ModelState.AddModelError("DueDate", "Duedate should be greater than Docdate");
            }

            if (svm.JobOrderLineId <= 0)
            {
                ViewBag.LineMode = "Create";
            }
            else
            {
                ViewBag.LineMode = "Edit";
            }

            if (ModelState.IsValid && BeforeSave)
            {
                if (svm.JobOrderLineId <= 0)
                {
                    try
                    {
                        _JobOrderLineService.Create(svm, User.Identity.Name);
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXCL"] += message;
                        PrepareViewBag(svm);

                        if (svm.ProdOrderLineId != null)
                        {
                            return(PartialView("_CreateForProdOrder", svm));
                        }
                        else
                        {
                            return(PartialView("_Create", svm));
                        }
                    }

                    return(RedirectToAction("_Create", new { id = svm.JobOrderHeaderId, IsProdBased = (svm.ProdOrderLineId == null ? false : true) }));
                }


                else
                {
                    try
                    {
                        _JobOrderLineService.Update(svm, User.Identity.Name);
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXCL"] += message;
                        PrepareViewBag(svm);
                        if (svm.ProdOrderLineId != null)
                        {
                            return(PartialView("_CreateForProdOrder", svm));
                        }
                        else
                        {
                            return(PartialView("_Create", svm));
                        }
                    }

                    return(Json(new { success = true }));
                }
            }
            PrepareViewBag(svm);
            if (svm.ProdOrderLineId != null)
            {
                return(PartialView("_CreateForProdOrder", svm));
            }
            else
            {
                return(PartialView("_Create", svm));
            }
        }