Ejemplo n.º 1
0
 public void Update(JobReceiveLine s)
 {
     s.ObjectState = ObjectState.Modified;
     _JobReceiveLineRepository.Update(s);
 }
Ejemplo n.º 2
0
        public ActionResult ConfirmedJobReceives(List <JobReceiveQAWizardViewModel> ConfirmedList, int DocTypeId, string UserRemark, int QAById)
        {
            //System.Web.HttpContext.Current.Session["BalanceQtyAmendmentWizardOrders"] = ConfirmedList;
            //return Json(new { Success = "URL", Data = "/JobReceiveQAWizard/Create/" + DocTypeId }, JsonRequestBehavior.AllowGet);

            if (ConfirmedList.Count() > 0 && ConfirmedList.GroupBy(m => m.JobWorkerId).Count() > 1)
            {
                return(Json(new { Success = false, Data = " Multiple Headers are selected. " }, JsonRequestBehavior.AllowGet));
            }
            else if (ConfirmedList.Count() == 0)
            {
                return(Json(new { Success = false, Data = " No Records are selected. " }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                int DivisionId = (int)System.Web.HttpContext.Current.Session["DivisionId"];
                int SiteId     = (int)System.Web.HttpContext.Current.Session["SiteId"];

                bool BeforeSave = true;
                int  Serial     = 1;
                List <JobReceiveQALineViewModel> LineStatus = new List <JobReceiveQALineViewModel>();

                try
                {
                    BeforeSave = JobReceiveQADocEvents.beforeWizardSaveEvent(this, new JobEventArgs(0), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    return(Json(new { Success = false, Data = message }, JsonRequestBehavior.AllowGet));
                }


                if (!BeforeSave)
                {
                    TempData["CSEXC"] += "Failed validation before save";
                }


                int Cnt = 0;
                int Sr  = 0;


                JobReceiveQASettings Settings = new JobReceiveQASettingsService(db).GetJobReceiveQASettingsForDocument(DocTypeId, DivisionId, SiteId);

                int?MaxLineId = 0;

                if (ModelState.IsValid && BeforeSave && !EventException)
                {
                    JobReceiveQAHeader pt = new JobReceiveQAHeader();

                    //Getting Settings
                    pt.SiteId       = SiteId;
                    pt.JobWorkerId  = ConfirmedList.FirstOrDefault().JobWorkerId;
                    pt.DivisionId   = DivisionId;
                    pt.QAById       = QAById;
                    pt.ProcessId    = Settings.ProcessId;
                    pt.Remark       = UserRemark;
                    pt.DocTypeId    = DocTypeId;
                    pt.DocDate      = DateTime.Now;
                    pt.DocNo        = new DocumentTypeService(_unitOfWork).FGetNewDocNo("DocNo", ConfigurationManager.AppSettings["DataBaseSchema"] + ".JobReceiveQAHeaders", pt.DocTypeId, pt.DocDate, pt.DivisionId, pt.SiteId);
                    pt.ModifiedBy   = User.Identity.Name;
                    pt.ModifiedDate = DateTime.Now;
                    pt.CreatedBy    = User.Identity.Name;
                    pt.CreatedDate  = DateTime.Now;

                    pt.Status      = (int)StatusConstants.Drafted;
                    pt.ObjectState = Model.ObjectState.Added;

                    db.JobReceiveQAHeader.Add(pt);

                    var SelectedJobReceives = ConfirmedList;

                    var JobReceiveLineIds = SelectedJobReceives.Select(m => m.JobReceiveLineId).ToArray();

                    var JobReceiveBalanceRecords = (from p in db.ViewJobReceiveBalanceForQA
                                                    where JobReceiveLineIds.Contains(p.JobReceiveLineId)
                                                    select p).AsNoTracking().ToList();

                    var JobReceiveRecords = (from p in db.JobReceiveLine.Include(m => m.JobOrderLine)
                                             where JobReceiveLineIds.Contains(p.JobReceiveLineId)
                                             select p).AsNoTracking().ToList();

                    foreach (var item in SelectedJobReceives)
                    {
                        JobReceiveLine Recline    = JobReceiveRecords.Where(m => m.JobReceiveLineId == item.JobReceiveLineId).FirstOrDefault();
                        var            balRecline = JobReceiveBalanceRecords.Where(m => m.JobReceiveLineId == item.JobReceiveLineId).FirstOrDefault();

                        if (item.InspectionQty <= JobReceiveBalanceRecords.Where(m => m.JobReceiveLineId == item.JobReceiveLineId).FirstOrDefault().BalanceQty)
                        {
                            JobReceiveQALine line = new JobReceiveQALine();

                            line.JobReceiveQAHeaderId = pt.JobReceiveQAHeaderId;
                            line.JobReceiveLineId     = item.JobReceiveLineId;
                            line.QAQty = balRecline.BalanceQty;
                            line.UnitConversionMultiplier = Recline.JobOrderLine.UnitConversionMultiplier;
                            line.Qty                = item.Qty;
                            line.DealQty            = line.Qty * line.UnitConversionMultiplier;
                            line.FailQty            = line.QAQty - line.Qty;
                            line.FailDealQty        = line.FailQty * line.UnitConversionMultiplier;
                            line.InspectedQty       = item.InspectionQty;
                            line.PenaltyAmt         = item.PenaltyAmount;
                            line.Remark             = item.Remark;
                            line.ProductUidId       = Recline.ProductUidId;
                            line.Sr                 = Serial++;
                            line.JobReceiveQALineId = Cnt;
                            line.CreatedDate        = DateTime.Now;
                            line.ModifiedDate       = DateTime.Now;
                            line.CreatedBy          = User.Identity.Name;
                            line.ModifiedBy         = User.Identity.Name;
                            LineStatus.Add(Mapper.Map <JobReceiveQALineViewModel>(line));

                            line.ObjectState = Model.ObjectState.Added;
                            db.JobReceiveQALine.Add(line);
                            Cnt = Cnt + 1;
                        }
                    }

                    new JobReceiveLineStatusService(_unitOfWork).UpdateJobReceiveQtyQAMultiple(LineStatus, pt.DocDate, ref db);

                    try
                    {
                        JobReceiveQADocEvents.onWizardSaveEvent(this, new JobEventArgs(pt.JobReceiveQAHeaderId, EventModeConstants.Add), ref db);
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                        EventException     = true;
                    }

                    try
                    {
                        if (EventException)
                        {
                            throw new Exception();
                        }
                        db.SaveChanges();
                        //_unitOfWork.Save();
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        return(Json(new { Success = false, Data = message }, JsonRequestBehavior.AllowGet));
                    }

                    try
                    {
                        JobReceiveQADocEvents.afterWizardSaveEvent(this, new JobEventArgs(pt.JobReceiveQAHeaderId, EventModeConstants.Add), ref db);
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                    }

                    LogActivity.LogActivityDetail(new ActiivtyLogViewModel
                    {
                        DocTypeId    = pt.DocTypeId,
                        DocId        = pt.JobReceiveQAHeaderId,
                        ActivityType = (int)ActivityTypeContants.Added,
                        User         = User.Identity.Name,
                        DocNo        = pt.DocNo,
                        DocDate      = pt.DocDate
                    });

                    return(Json(new { Success = "URL", Data = "/JobReceiveQAHeader/Submit/" + pt.JobReceiveQAHeaderId }, JsonRequestBehavior.AllowGet));
                }

                else
                {
                    return(Json(new { Success = false, Data = "ModelState is Invalid" }, JsonRequestBehavior.AllowGet));
                }
            }
        }
Ejemplo n.º 3
0
 public JobReceiveLine Create(JobReceiveLine S)
 {
     S.ObjectState = ObjectState.Added;
     _JobReceiveLineRepository.Add(S);
     return(S);
 }
Ejemplo n.º 4
0
 public void Delete(JobReceiveLine s)
 {
     _JobReceiveLineRepository.Delete(s);
 }
Ejemplo n.º 5
0
        public void Update(DyeingViewModel vmDyeing, string UserName)
        {
            List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

            JobReceiveHeader temp = Find(vmDyeing.JobReceiveHeaderId);
            JobReceiveLine   line = _JobReceiveLineService.GetJobReceiveLineListForHeader(vmDyeing.JobReceiveHeaderId).FirstOrDefault();

            JobReceiveHeader ExRec = Mapper.Map <JobReceiveHeader>(temp);

            int?PersonId = (from L in _unitOfWork.Repository <JobOrderLine>().Instance
                            join He in _unitOfWork.Repository <JobOrderHeaderExtended>().Instance on L.JobOrderHeaderId equals He.JobOrderHeaderId
                            where L.JobOrderLineId == vmDyeing.JobOrderLineId
                            select He).FirstOrDefault().PersonId;

            int status = temp.Status;

            if (temp.Status != (int)StatusConstants.Drafted && temp.Status != (int)StatusConstants.Import)
            {
                temp.Status = (int)StatusConstants.Modified;
            }


            temp.DocDate        = vmDyeing.DocDate;
            temp.ProcessId      = vmDyeing.ProcessId;
            temp.JobWorkerId    = vmDyeing.JobWorkerId;
            temp.MachineId      = vmDyeing.MachineId;
            temp.JobReceiveById = vmDyeing.JobReceiveById;
            temp.DocNo          = vmDyeing.DocNo;
            temp.Remark         = vmDyeing.Remark;
            temp.ModifiedDate   = DateTime.Now;
            temp.ModifiedBy     = UserName;
            temp.ObjectState    = Model.ObjectState.Modified;
            Update(temp);



            StockViewModel StockViewModel = new StockViewModel();

            //Posting in Stock
            StockViewModel.StockHeaderId      = temp.StockHeaderId ?? 0;
            StockViewModel.StockId            = line.StockId ?? 0;
            StockViewModel.DocHeaderId        = temp.JobReceiveHeaderId;
            StockViewModel.DocLineId          = null;
            StockViewModel.DocTypeId          = temp.DocTypeId;
            StockViewModel.StockHeaderDocDate = temp.DocDate;
            StockViewModel.StockDocDate       = temp.DocDate;
            StockViewModel.DocNo              = temp.DocNo;
            StockViewModel.DivisionId         = temp.DivisionId;
            StockViewModel.SiteId             = temp.SiteId;
            StockViewModel.CurrencyId         = null;
            StockViewModel.HeaderProcessId    = null;
            StockViewModel.PersonId           = PersonId;
            StockViewModel.ProductId          = vmDyeing.ProductId;
            StockViewModel.HeaderFromGodownId = null;
            StockViewModel.HeaderGodownId     = null;
            StockViewModel.GodownId           = vmDyeing.GodownId;
            StockViewModel.ProcessId          = null;
            StockViewModel.LotNo              = vmDyeing.LotNo;
            StockViewModel.CostCenterId       = null;
            StockViewModel.Qty_Iss            = 0;
            StockViewModel.Qty_Rec            = vmDyeing.Qty;
            StockViewModel.Rate          = 0;
            StockViewModel.ExpiryDate    = null;
            StockViewModel.Specification = null;
            StockViewModel.Dimension1Id  = vmDyeing.Dimension1Id;
            StockViewModel.Dimension2Id  = vmDyeing.Dimension2Id;
            StockViewModel.Remark        = temp.Remark;
            StockViewModel.ProductUidId  = null;
            StockViewModel.Status        = 0;
            StockViewModel.CreatedBy     = UserName;
            StockViewModel.CreatedDate   = DateTime.Now;
            StockViewModel.ModifiedBy    = UserName;
            StockViewModel.ModifiedDate  = DateTime.Now;

            string StockPostingError = "";

            StockPostingError = _stockService.StockPostDB(ref StockViewModel);

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

            if (temp.StockHeaderId != null && temp.StockHeaderId != 0)
            {
                StockHeader StockHeader = new StockHeaderService(_unitOfWork).Find((int)temp.StockHeaderId);
                StockHeader.DocDate = temp.DocDate;
                StockHeader.DocNo   = temp.DocNo;
                new StockHeaderService(_unitOfWork).Update(StockHeader);
            }



            line.JobReceiveHeaderId = temp.JobReceiveHeaderId;
            line.JobOrderLineId     = vmDyeing.JobOrderLineId;
            line.JobOrderLineId     = vmDyeing.JobOrderLineId;
            line.Qty        = vmDyeing.Qty;
            line.Sr         = 1;
            line.LossQty    = 0;
            line.DealQty    = vmDyeing.Qty;
            line.DealUnitId = vmDyeing.UnitId;
            line.UnitConversionMultiplier = 1;
            line.CreatedDate  = DateTime.Now;
            line.ModifiedDate = DateTime.Now;
            line.CreatedBy    = UserName;
            line.ModifiedBy   = UserName;
            line.ObjectState  = Model.ObjectState.Modified;

            _JobReceiveLineService.Update(line);


            JobReceiveHeaderExtended HeaderExtended = _JobReceiveHeaderExtendedService.Find(temp.JobReceiveHeaderId);

            HeaderExtended.JobReceiveHeaderId = temp.JobReceiveHeaderId;
            HeaderExtended.StartDateTime      = vmDyeing.StartDateTime.Value.AddHours(vmDyeing.StartDateTimeHour).AddMinutes(vmDyeing.StartDateTimeMinute);
            if (vmDyeing.CompletedDateTime != null)
            {
                HeaderExtended.CompletedDateTime = vmDyeing.CompletedDateTime.Value.AddHours(vmDyeing.CompletedDateTimeHour).AddMinutes(vmDyeing.CompletedDateTimeMinute);
            }
            HeaderExtended.LoadingTime  = vmDyeing.LoadingTime;
            HeaderExtended.IsQCRequired = vmDyeing.IsQCRequired;
            HeaderExtended.DyeingType   = vmDyeing.DyeingType;
            HeaderExtended.ObjectState  = Model.ObjectState.Modified;
            _JobReceiveHeaderExtendedService.Update(HeaderExtended);

            XElement Modifications = _modificationCheck.CheckChanges(LogList);

            _unitOfWork.Save();

            _logger.LogActivityDetail(logVm.Map(new ActiivtyLogViewModel
            {
                DocTypeId       = temp.DocTypeId,
                DocId           = temp.JobReceiveHeaderId,
                ActivityType    = (int)ActivityTypeContants.Modified,
                DocNo           = temp.DocNo,
                xEModifications = Modifications,
                DocDate         = temp.DocDate,
                DocStatus       = temp.Status,
            }));
        }
Ejemplo n.º 6
0
        public DyeingViewModel Create(DyeingViewModel vmDyeing, string UserName)
        {
            JobReceiveHeader s = Mapper.Map <DyeingViewModel, JobReceiveHeader>(vmDyeing);

            int?PersonId = (from L in _unitOfWork.Repository <JobOrderLine>().Instance
                            join He in _unitOfWork.Repository <JobOrderHeaderExtended>().Instance on L.JobOrderHeaderId equals He.JobOrderHeaderId
                            where L.JobOrderLineId == vmDyeing.JobOrderLineId
                            select He).FirstOrDefault().PersonId;



            s.CreatedDate  = DateTime.Now;
            s.ModifiedDate = DateTime.Now;
            s.CreatedBy    = UserName;
            s.ModifiedBy   = UserName;
            s.Status       = (int)StatusConstants.Drafted;



            StockViewModel StockViewModel = new StockViewModel();

            //Posting in Stock
            StockViewModel.StockHeaderId      = s.StockHeaderId ?? 0;
            StockViewModel.DocHeaderId        = s.JobReceiveHeaderId;
            StockViewModel.DocLineId          = null;
            StockViewModel.DocTypeId          = s.DocTypeId;
            StockViewModel.StockHeaderDocDate = s.DocDate;
            StockViewModel.StockDocDate       = DateTime.Now.Date;
            StockViewModel.DocNo              = s.DocNo;
            StockViewModel.DivisionId         = s.DivisionId;
            StockViewModel.SiteId             = s.SiteId;
            StockViewModel.CurrencyId         = null;
            StockViewModel.HeaderProcessId    = null;
            StockViewModel.PersonId           = PersonId;
            StockViewModel.ProductId          = vmDyeing.ProductId;
            StockViewModel.HeaderFromGodownId = null;
            StockViewModel.HeaderGodownId     = null;
            StockViewModel.GodownId           = vmDyeing.GodownId;
            StockViewModel.ProcessId          = null;
            StockViewModel.LotNo              = vmDyeing.LotNo;
            StockViewModel.CostCenterId       = null;
            StockViewModel.Qty_Iss            = 0;
            StockViewModel.Qty_Rec            = vmDyeing.Qty;
            StockViewModel.Rate          = 0;
            StockViewModel.ExpiryDate    = null;
            StockViewModel.Specification = null;
            StockViewModel.Dimension1Id  = vmDyeing.Dimension1Id;
            StockViewModel.Dimension2Id  = vmDyeing.Dimension2Id;
            StockViewModel.Remark        = s.Remark;
            StockViewModel.ProductUidId  = null;
            StockViewModel.Status        = 0;
            StockViewModel.CreatedBy     = UserName;
            StockViewModel.CreatedDate   = DateTime.Now;
            StockViewModel.ModifiedBy    = UserName;
            StockViewModel.ModifiedDate  = DateTime.Now;

            string StockPostingError = "";

            StockPostingError = _stockService.StockPostDB(ref StockViewModel);



            if (s.StockHeaderId == null)
            {
                s.StockHeaderId = StockViewModel.StockHeaderId;
            }


            s.ObjectState = Model.ObjectState.Added;
            Create(s);
            //Line Save


            JobReceiveLine line = new JobReceiveLine();

            line.JobReceiveHeaderId = s.JobReceiveHeaderId;
            line.JobOrderLineId     = vmDyeing.JobOrderLineId;
            line.Qty        = vmDyeing.Qty;
            line.PassQty    = vmDyeing.Qty;
            line.Sr         = 1;
            line.LotNo      = vmDyeing.LotNo;
            line.LossQty    = 0;
            line.DealQty    = vmDyeing.Qty;
            line.DealUnitId = vmDyeing.UnitId;
            line.UnitConversionMultiplier = 1;
            line.CreatedDate  = DateTime.Now;
            line.ModifiedDate = DateTime.Now;
            line.CreatedBy    = UserName;
            line.ModifiedBy   = UserName;
            line.StockId      = StockViewModel.StockId;
            line.ObjectState  = Model.ObjectState.Added;

            _JobReceiveLineService.Create(line);



            _JobReceiveLineStatusService.CreateLineStatus(line.JobReceiveLineId);

            JobReceiveHeaderExtended HeaderExtended = new JobReceiveHeaderExtended();

            HeaderExtended.JobReceiveHeaderId = s.JobReceiveHeaderId;
            HeaderExtended.StartDateTime      = vmDyeing.StartDateTime.Value.AddHours(vmDyeing.StartDateTimeHour).AddMinutes(vmDyeing.StartDateTimeMinute);
            if (vmDyeing.CompletedDateTime != null)
            {
                HeaderExtended.CompletedDateTime = vmDyeing.CompletedDateTime.Value.AddHours(vmDyeing.CompletedDateTimeHour).AddMinutes(vmDyeing.CompletedDateTimeMinute);
            }
            HeaderExtended.LoadingTime  = vmDyeing.LoadingTime;
            HeaderExtended.IsQCRequired = vmDyeing.IsQCRequired;
            HeaderExtended.DyeingType   = vmDyeing.DyeingType;
            HeaderExtended.ObjectState  = Model.ObjectState.Added;
            _JobReceiveHeaderExtendedService.Create(HeaderExtended);


            //End Line Save


            _unitOfWork.Save();

            vmDyeing.JobReceiveHeaderId = s.JobReceiveHeaderId;

            _logger.LogActivityDetail(logVm.Map(new ActiivtyLogViewModel
            {
                DocTypeId    = s.DocTypeId,
                DocId        = s.JobReceiveHeaderId,
                ActivityType = (int)ActivityTypeContants.Added,
                DocNo        = s.DocNo,
                DocDate      = s.DocDate,
                DocStatus    = s.Status,
            }));



            return(vmDyeing);
        }
Ejemplo n.º 7
0
        public ActionResult PostIAPSummary(JobReceiveIAPSummaryDetailViewModel vm)
        {
            List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();
            bool Modified = false;

            int Id = vm.JobReceiveHeaderId;

            var Header = _JobReceiveHeaderService.Find(Id);

            int[] BarCodes = vm.JobReceiveIAPSummaryViewModel.Select(m => m.ProductUidId).ToArray();

            var ReceiveLines = (from p in db.JobReceiveLine
                                where p.JobReceiveHeaderId == Id && p.ProductUidId != null && BarCodes.Contains(p.ProductUidId.Value)
                                select p);

            foreach (var item in vm.JobReceiveIAPSummaryViewModel)
            {
                var ReceiveLine = ReceiveLines.Where(m => m.ProductUidId == item.ProductUidId).FirstOrDefault();

                if (ReceiveLine.PenaltyAmt != item.PenalityAmt || (ReceiveLine.IncentiveAmt != item.IncentiveAmt) || ReceiveLine.Remark != item.Remark)
                {
                    JobReceiveLine ExRec = new JobReceiveLine();
                    ExRec = Mapper.Map <JobReceiveLine>(ReceiveLine);
                    ReceiveLine.PenaltyAmt   = item.PenalityAmt;
                    ReceiveLine.IncentiveAmt = item.IncentiveAmt;
                    ReceiveLine.Remark       = item.Remark;
                    ReceiveLine.ModifiedBy   = User.Identity.Name;
                    ReceiveLine.ModifiedDate = DateTime.Now;
                    ReceiveLine.ObjectState  = Model.ObjectState.Modified;

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

                    _JobReceiveLineService.Update(ReceiveLine);
                    Modified = true;
                }
            }


            if ((Header.Status != (int)StatusConstants.Drafted && Header.Status != (int)StatusConstants.Import) && Modified)
            {
                Header.Status     = (int)StatusConstants.Modified;
                Header.ModifiedBy = User.Identity.Name;
            }

            Header.ObjectState = Model.ObjectState.Modified;
            new JobReceiveHeaderService(_unitOfWork).Update(Header);

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

            try
            {
                _unitOfWork.Save();
            }

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

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

            string RetUrl = "";

            if (Header.Status == (int)StatusConstants.Drafted || Header.Status == (int)StatusConstants.Import)
            {
                RetUrl = (System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/Modify/" + Header.JobReceiveHeaderId);
            }
            else if (Header.Status == (int)StatusConstants.Submitted || Header.Status == (int)StatusConstants.ModificationSubmitted || Header.Status == (int)StatusConstants.Modified)
            {
                RetUrl = (System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/ModifyAfter_Submit/" + Header.JobReceiveHeaderId);
            }
            else if (Header.Status == (int)StatusConstants.Approved || Header.Status == (int)StatusConstants.Closed)
            {
                RetUrl = (System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/ModifyAfter_Approve/" + Header.JobReceiveHeaderId);
            }
            else
            {
                RetUrl = (System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/Index/" + Header.DocTypeId);
            }

            return(Json(new { Success = true, Url = RetUrl }));
        }
Ejemplo n.º 8
0
        public ActionResult PostSummary(JobReceiveSummaryDetailViewModel vm)
        {
            //TempData["CSEXC"] = "Customize Test Exception";

            List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();
            bool Modified = false;
            int  Id       = vm.JobReceiveHeaderId;

            var Header = _JobReceiveHeaderService.Find(Id);

            var JobReceives = (from p in db.JobReceiveLine
                               join t in db.JobOrderLine on p.JobOrderLineId equals t.JobOrderLineId
                               where p.JobReceiveHeaderId == Id
                               group t by new { t.ProductId, t.JobOrderHeaderId } into g
                               select g.Key).ToList();

            foreach (var item in vm.JobReceiveSummaryViewModel)
            {
                // Receive Line which has return also and return has no weight then receive weight should be 0.
                //var ReceiveWithReturnLines = from p in db.JobReceiveLine
                //                    join t in db.JobOrderLine on p.JobOrderLineId equals t.JobOrderLineId
                //                    join t2 in db.JobReceiveLineStatus on p.JobReceiveLineId equals t2.JobReceiveLineId into table
                //                    from tab in table.DefaultIfEmpty()
                //                    where t.JobOrderHeaderId == item.JobOrderHeaderId && p.PassQty > 0 && p.JobReceiveHeaderId == Id && t.ProductId == item.ProductId
                //                    && (p.PassQty - (tab.ReturnQty ?? 0)) == 0
                //                    select p;


                //foreach (var item3 in ReceiveWithReturnLines)
                //{

                //    item3.Weight = 0;
                //    item3.ObjectState = Model.ObjectState.Modified;
                //    _JobReceiveLineService.Update(item3);
                //}



                var ReceiveLines = (from p in db.JobReceiveLine
                                    join t in db.JobOrderLine on p.JobOrderLineId equals t.JobOrderLineId
                                    join t2 in db.JobReceiveLineStatus on p.JobReceiveLineId equals t2.JobReceiveLineId into table
                                    from tab in table.DefaultIfEmpty()
                                    where t.JobOrderHeaderId == item.JobOrderHeaderId && p.PassQty > 0 && p.JobReceiveHeaderId == Id && t.ProductId == item.ProductId &&
                                    (p.PassQty - (tab.ReturnQty ?? 0)) > 0
                                    select p).ToList();

                bool ValidationError = ReceiveLines.Where(m => m.Weight > 0).Any() && ReceiveLines.Where(m => m.Weight == 0).Any();

                if (ReceiveLines != null && ReceiveLines.Count > 0)
                {
                    decimal Weight = item.Weight;

                    decimal XWeight = ReceiveLines.Sum(m => m.Weight);

                    decimal PassQty = ReceiveLines.Sum(m => m.PassQty);


                    if (Weight != XWeight)
                    {
                        int     i = 0;
                        decimal WeightShortage   = 0;
                        decimal IndividualWeight = Math.Round((Weight / PassQty), 2);
                        if (i == 0 && IndividualWeight * PassQty != Weight)
                        {
                            WeightShortage = (Weight - (IndividualWeight * PassQty));
                        }

                        foreach (var item2 in ReceiveLines)
                        {
                            JobReceiveLine ExRec = new JobReceiveLine();
                            ExRec = Mapper.Map <JobReceiveLine>(item2);

                            item2.Weight       = IndividualWeight * item2.PassQty + (i == 0 ? WeightShortage : 0);
                            item2.ModifiedBy   = User.Identity.Name;
                            item2.ModifiedDate = DateTime.Now;
                            item2.ObjectState  = Model.ObjectState.Modified;

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

                            _JobReceiveLineService.Update(item2);
                            i++;

                            Modified = true;
                        }
                    }
                }
            }

            if ((Header.Status != (int)StatusConstants.Drafted && Header.Status != (int)StatusConstants.Import) && Modified)
            {
                Header.Status     = (int)StatusConstants.Modified;
                Header.ModifiedBy = User.Identity.Name;
            }

            Header.ModifiedDate = DateTime.Now;
            Header.ObjectState  = Model.ObjectState.Modified;
            new JobReceiveHeaderService(_unitOfWork).Update(Header);

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

            try
            {
                _unitOfWork.Save();
            }

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

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

            string RetUrl = "";


            if (Header.Status == (int)StatusConstants.Drafted || Header.Status == (int)StatusConstants.Import)
            {
                RetUrl = System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/Modify/" + Header.JobReceiveHeaderId;
            }
            else if (Header.Status == (int)StatusConstants.Submitted || Header.Status == (int)StatusConstants.ModificationSubmitted || Header.Status == (int)StatusConstants.Modified)
            {
                RetUrl = System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/ModifyAfter_Submit/" + Header.JobReceiveHeaderId;
            }
            else if (Header.Status == (int)StatusConstants.Approved || Header.Status == (int)StatusConstants.Closed)
            {
                RetUrl = System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/ModifyAfter_Approve/" + Header.JobReceiveHeaderId;
            }
            else
            {
                RetUrl = System.Configuration.ConfigurationManager.AppSettings["JobsDomain"] + "/JobReceiveHeader/Index/" + Header.DocTypeId;
            }

            return(Json(new { Success = true, Url = RetUrl }));
        }
        public ActionResult Post(JobReceiveHeaderViewModel svm)
        {
            bool   TimePlanValidation = true;
            string ExceptionMsg       = "";
            bool   Continue           = true;

            JobReceiveHeader s = Mapper.Map <JobReceiveHeaderViewModel, JobReceiveHeader>(svm);
            List <WeavingReceiveWizardViewModel> JobOrdersAndQtys = (List <WeavingReceiveWizardViewModel>)System.Web.HttpContext.Current.Session["BarCodesWeavingWizardJobOrder"];



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

            int JobWorkerCnt = (from l in JobOrdersAndQtys
                                group l by l.JobWorkerId into g
                                select new
            {
                JobWorkerId = g.Key,
            }).Distinct().Count();

            if (JobWorkerCnt > 1)
            {
                ModelState.AddModelError("", "Select any one Job Worker Orders.");
            }



            s.JobWorkerId   = JobOrdersAndQtys.FirstOrDefault().JobWorkerId;
            svm.JobWorkerId = JobOrdersAndQtys.FirstOrDefault().JobWorkerId;


            #region DocTypeTimeLineValidation

            try
            {
                if (svm.JobReceiveHeaderId <= 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.JobReceiveHeaderId <= 0)
                {
                    if (JobOrdersAndQtys.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;
                        _JobReceiveHeaderService.Create(s);


                        int Cnt = 0;
                        int Sr  = 0;


                        JobReceiveSettings Settings = new JobReceiveSettingsService(_unitOfWork).GetJobReceiveSettingsForDocument(s.DocTypeId, s.DivisionId, s.SiteId);

                        int ProductUidCountForJobOrderLine = 0;
                        int pk = 0;

                        var JobOrderLineIds = JobOrdersAndQtys.Select(m => m.JobOrderLineId).ToArray();

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

                        if (ModelState.IsValid)
                        {
                            foreach (var SelectedJobOrderLine in JobOrdersAndQtys)
                            {
                                if (SelectedJobOrderLine.JobOrderLineId > 0)
                                {
                                    if (SelectedJobOrderLine.ToProductUidName != "" && SelectedJobOrderLine.ToProductUidName != null && SelectedJobOrderLine.FromProductUidName != "" && SelectedJobOrderLine.FromProductUidName != null)
                                    {
                                        if (SelectedJobOrderLine.Qty != (Convert.ToInt32(SelectedJobOrderLine.ToProductUidName) - Convert.ToInt32(SelectedJobOrderLine.FromProductUidName) + 1))
                                        {
                                            string Msg = "";
                                            Msg = "Qty and Barcode series does not match.";
                                            ModelState.AddModelError("", Msg);
                                            PrepareViewBag();
                                            ViewBag.Mode = "Add";
                                            return(View("Create", svm));
                                        }
                                    }



                                    ProductUidCountForJobOrderLine = 0;
                                    var JobOrderLine = new JobOrderLineService(_unitOfWork).Find((SelectedJobOrderLine.JobOrderLineId));
                                    var Product      = new ProductService(_unitOfWork).Find(JobOrderLine.ProductId);

                                    var bal = BalQtyandUnits.Where(m => m.JobOrderLineId == SelectedJobOrderLine.JobOrderLineId).FirstOrDefault();

                                    if (SelectedJobOrderLine.Qty <= bal.BalQty)
                                    {
                                        for (int i = 0; i <= SelectedJobOrderLine.Qty - 1; i++)
                                        {
                                            int?ProductUidHeaderId = null;
                                            int?ProductUidId       = null;


                                            var SisterSite = (from S in db.Site where S.PersonId == s.JobWorkerId select S).FirstOrDefault();

                                            //if (!string.IsNullOrEmpty(Settings.SqlProcGenProductUID))
                                            if (SisterSite == null)
                                            {
                                                ProductUidHeader ProdUidHeader = new ProductUidHeader();

                                                ProdUidHeader.ProductUidHeaderId = Cnt;
                                                ProdUidHeader.ProductId          = JobOrderLine.ProductId;
                                                ProdUidHeader.Dimension1Id       = JobOrderLine.Dimension1Id;
                                                ProdUidHeader.Dimension2Id       = JobOrderLine.Dimension2Id;
                                                ProdUidHeader.GenDocId           = s.JobReceiveHeaderId;
                                                ProdUidHeader.GenDocNo           = s.DocNo;
                                                ProdUidHeader.GenDocTypeId       = s.DocTypeId;
                                                ProdUidHeader.GenDocDate         = s.DocDate;
                                                ProdUidHeader.GenPersonId        = s.JobWorkerId;
                                                ProdUidHeader.CreatedBy          = User.Identity.Name;
                                                ProdUidHeader.CreatedDate        = DateTime.Now;
                                                ProdUidHeader.ModifiedBy         = User.Identity.Name;
                                                ProdUidHeader.ModifiedDate       = DateTime.Now;
                                                ProdUidHeader.ObjectState        = Model.ObjectState.Added;
                                                new ProductUidHeaderService(_unitOfWork).Create(ProdUidHeader);
                                                ProductUidHeaderId = ProdUidHeader.ProductUidHeaderId;


                                                string ProductUidName = (Convert.ToInt32(SelectedJobOrderLine.FromProductUidName) + ProductUidCountForJobOrderLine).ToString();

                                                ProductUid ProdUid = new ProductUid();
                                                ProdUid.ProductUidHeaderId       = ProdUidHeader.ProductUidHeaderId;
                                                ProdUid.ProductUidName           = ProductUidName;
                                                ProdUid.ProductId                = JobOrderLine.ProductId;
                                                ProdUid.IsActive                 = true;
                                                ProdUid.CreatedBy                = User.Identity.Name;
                                                ProdUid.CreatedDate              = DateTime.Now;
                                                ProdUid.ModifiedBy               = User.Identity.Name;
                                                ProdUid.ModifiedDate             = DateTime.Now;
                                                ProdUid.GenLineId                = null;
                                                ProdUid.GenDocId                 = s.JobReceiveHeaderId;
                                                ProdUid.GenDocNo                 = s.DocNo;
                                                ProdUid.GenDocTypeId             = s.DocTypeId;
                                                ProdUid.GenDocDate               = s.DocDate;
                                                ProdUid.GenPersonId              = s.JobWorkerId;
                                                ProdUid.Dimension1Id             = JobOrderLine.Dimension1Id;
                                                ProdUid.Dimension2Id             = JobOrderLine.Dimension2Id;
                                                ProdUid.CurrenctProcessId        = s.ProcessId;
                                                ProdUid.CurrenctGodownId         = s.GodownId;
                                                ProdUid.Status                   = "Receive";
                                                ProdUid.LastTransactionDocId     = s.JobReceiveHeaderId;
                                                ProdUid.LastTransactionDocNo     = s.DocNo;
                                                ProdUid.LastTransactionDocTypeId = s.DocTypeId;
                                                ProdUid.LastTransactionDocDate   = s.DocDate;
                                                ProdUid.LastTransactionPersonId  = s.JobWorkerId;
                                                ProdUid.LastTransactionLineId    = null;
                                                ProdUid.ProductUIDId             = pk;
                                                new ProductUidService(_unitOfWork).Create(ProdUid);
                                                ProductUidId = ProdUid.ProductUIDId;
                                            }

                                            if (ProductUidId == null)
                                            {
                                                string ProductUidName = (Convert.ToInt32(SelectedJobOrderLine.FromProductUidName) + ProductUidCountForJobOrderLine).ToString();
                                                var    temp           = new ProductUidService(_unitOfWork).Find(ProductUidName);
                                                if (temp != null)
                                                {
                                                    ProductUidId = temp.ProductUIDId;
                                                }
                                                else
                                                {
                                                    string Msg = ProductUidName + " is not a valid barcode.";
                                                    ModelState.AddModelError("", Msg);
                                                    PrepareViewBag();
                                                    ViewBag.Mode = "Add";
                                                    return(View("Create", svm));
                                                }

                                                if (temp.CurrenctGodownId != null)
                                                {
                                                    string Msg = ProductUidName + " is already in Stock at Godown " + new GodownService(_unitOfWork).Find(temp.CurrenctGodownId ?? 0).GodownName;
                                                    ModelState.AddModelError("", Msg);
                                                    PrepareViewBag();
                                                    ViewBag.Mode = "Add";
                                                    return(View("Create", svm));
                                                }

                                                if (temp.LastTransactionPersonId != s.JobWorkerId)
                                                {
                                                    string Msg = ProductUidName + ProductUidName + " does not belong to this Job Worker";
                                                    ModelState.AddModelError("", Msg);
                                                    PrepareViewBag();
                                                    ViewBag.Mode = "Add";
                                                    return(View("Create", svm));
                                                }
                                            }


                                            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.JobReceiveHeaderId;
                                            StockViewModel.DocLineId          = null;
                                            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  = JobOrderLine.ProductId;
                                            //StockViewModel.ProductUidId = ProdUid.ProductUIDId;
                                            StockViewModel.ProductUidId       = ProductUidId;
                                            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  = SelectedJobOrderLine.CostCenterId;
                                            StockViewModel.Qty_Iss       = 0;
                                            StockViewModel.Qty_Rec       = 1;
                                            StockViewModel.Rate          = SelectedJobOrderLine.Rate;
                                            StockViewModel.ExpiryDate    = null;
                                            StockViewModel.Specification = JobOrderLine.Specification;
                                            StockViewModel.Dimension1Id  = JobOrderLine.Dimension1Id;
                                            StockViewModel.Dimension2Id  = JobOrderLine.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;
                                            }


                                            JobReceiveLine line = new JobReceiveLine();
                                            line.StockId = StockViewModel.StockId;
                                            //line.ProductUidHeaderId = ProdUidHeader.ProductUidHeaderId;
                                            line.ProductUidHeaderId = ProductUidHeaderId;
                                            //line.ProductUidId = ProdUid.ProductUIDId;
                                            line.ProductUidId       = ProductUidId;
                                            line.JobReceiveHeaderId = s.JobReceiveHeaderId;
                                            line.JobOrderLineId     = JobOrderLine.JobOrderLineId;
                                            line.Qty     = 1;
                                            line.PassQty = 1;
                                            line.LossQty = 0;
                                            line.UnitConversionMultiplier = JobOrderLine.UnitConversionMultiplier;
                                            line.DealQty          = 1 * JobOrderLine.UnitConversionMultiplier;
                                            line.DealUnitId       = JobOrderLine.DealUnitId;
                                            line.Sr               = Sr++;
                                            line.CreatedDate      = DateTime.Now;
                                            line.ModifiedDate     = DateTime.Now;
                                            line.CreatedBy        = User.Identity.Name;
                                            line.ModifiedBy       = User.Identity.Name;
                                            line.JobReceiveLineId = pk;
                                            line.ObjectState      = Model.ObjectState.Added;
                                            new JobReceiveLineService(_unitOfWork).Create(line);

                                            new JobReceiveLineStatusService(_unitOfWork).CreateLineStatus(line.JobReceiveLineId, ref db, false);


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

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



                        IEnumerable <JobReceiveLine> JobReceiveLineList = new JobReceiveLineService(_unitOfWork).GetJobReceiveLineList(s.JobReceiveHeaderId);

                        foreach (JobReceiveLine Line in JobReceiveLineList)
                        {
                            if (Line.ProductUidId != null)
                            {
                                ProductUid ProductUid = new ProductUidService(_unitOfWork).Find((int)Line.ProductUidId);
                                ProductUid.GenDocId              = Line.JobReceiveHeaderId;
                                ProductUid.LastTransactionDocId  = Line.JobReceiveHeaderId;
                                ProductUid.GenLineId             = Line.JobReceiveLineId;
                                ProductUid.LastTransactionLineId = Line.JobReceiveLineId;
                                new ProductUidService(_unitOfWork).Update(ProductUid);
                            }
                        }

                        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.JobReceiveHeaderId,
                            ActivityType = (int)ActivityTypeContants.WizardCreate,
                            DocNo        = s.DocNo,
                            DocDate      = s.DocDate,
                            DocStatus    = s.Status,
                        }));

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

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