public string DeleteFiniChemConsumptionMD(vmCmnParameters objcmnParam)
        {
            string result = string.Empty;

            using (TransactionScope transaction = new TransactionScope())
            {
                GenericFactory_EF_PrdFinishingConsumptionMaster = new PrdFinishingConsumptionMaster_EF();
                GenericFactory_EF_PrdFinishingConsumptionDetail = new PrdFinishingConsumptionDetail_EF();
                string BWSNos   = string.Empty;
                var    FiniConM = new PrdFinishingConsumptionMaster();
                var    FiniConD = new PrdFinishingConsumptionDetail();
                try
                {
                    FiniConM           = GenericFactory_EF_PrdFinishingConsumptionMaster.GetAll().Where(x => x.FinishingConsumptionID == objcmnParam.id).FirstOrDefault();
                    FiniConM.IsDeleted = true;
                    FiniConM.CompanyID = objcmnParam.loggedCompany;
                    FiniConM.DeleteBy  = objcmnParam.loggeduser;
                    FiniConM.DeleteOn  = DateTime.Now;
                    FiniConM.DeletePc  = HostService.GetIP();

                    FiniConD           = GenericFactory_EF_PrdFinishingConsumptionDetail.GetAll().Where(x => x.FinishingConsumptionID == objcmnParam.id).FirstOrDefault();
                    FiniConD.IsDeleted = true;
                    FiniConD.CompanyID = objcmnParam.loggedCompany;
                    FiniConD.DeleteBy  = objcmnParam.loggeduser;
                    FiniConD.DeleteOn  = DateTime.Now;
                    FiniConD.DeletePc  = HostService.GetIP();

                    GenericFactory_EF_PrdFinishingConsumptionMaster.Update(FiniConM);
                    GenericFactory_EF_PrdFinishingConsumptionMaster.Save();

                    transaction.Complete();
                    result = FiniConM.FinishingConsumptionNo;
                }
                catch (Exception e)
                {
                    e.ToString();
                    result = "";
                }
            }
            return(result);
        }
        //public IEnumerable<vmChemicalSetupMasterDetail> GetChecmicalByID(vmCmnParameters objcmnParam)
        //{
        //    IEnumerable<vmChemicalSetupMasterDetail> objChemicalSetup = null;
        //    using (ERP_Entities _ctxCmn = new ERP_Entities())
        //    {
        //        try
        //        {
        //            objChemicalSetup = (from master in _ctxCmn.PrdFinishingChemicalSetups
        //                                join detail in _ctxCmn.PrdFinishingChemicalSetupDetails on master.FinChemicalStupID equals detail.FinChemicalStupID// into leftColorGroup
        //                                join FT in _ctxCmn.PrdFinishingTypes on master.FinishingProcessID equals FT.FinishingProcessID
        //                                join item in _ctxCmn.CmnItemMasters on detail.ChemicalID equals item.ItemID// into leftColorGroup
        //                                join uom in _ctxCmn.CmnUOMs on detail.UnitID equals uom.UOMID
        //                                where (FT.FInishTypeID == objcmnParam.id && master.IsDeleted == false)
        //                                select new vmChemicalSetupMasterDetail
        //                                {
        //                                    FinChemicalStupID = master.FinChemicalStupID,
        //                                    ChemicalID = detail.ChemicalID,
        //                                    MaxQty = detail.MaxQty,
        //                                    MinQty = detail.MinQty,
        //                                    ItemName = item.ItemName,
        //                                    UnitID = uom.UOMID,
        //                                    UOMName = uom.UOMName
        //                                }).Distinct().ToList();
        //        }
        //        catch (Exception e)
        //        {
        //            e.ToString();
        //        }
        //    }
        //    return objChemicalSetup;
        //}

        public string SaveUpdateChemConsumptionInfo(vmChemicalSetupMasterDetail ChemConsumptionInfo, List <vmChemicalSetupMasterDetail> DCDetailList, vmCmnParameters objcmnParam)
        {
            string result = string.Empty;

            using (TransactionScope transaction = new TransactionScope())
            {
                GenericFactory_EF_PrdFinishingConsumptionMaster = new PrdFinishingConsumptionMaster_EF();
                GenericFactory_EF_PrdFinishingConsumptionDetail = new PrdFinishingConsumptionDetail_EF();
                long MasterId = 0, DetailId = 0, FirstDigit = 0, OtherDigits = 0; string CustomNo = string.Empty, FinishingConsumptionNo = string.Empty;
                //PrdFinishingConsumptionMaster Master = new PrdFinishingConsumptionMaster();
                //List<PrdFinishingConsumptionDetail> Detail = new List<PrdFinishingConsumptionDetail>();
                PrdFinishingConsumptionMaster        Master = new PrdFinishingConsumptionMaster();
                List <PrdFinishingConsumptionDetail> Detail = new List <PrdFinishingConsumptionDetail>();
                vmChemicalSetupMasterDetail          item = new vmChemicalSetupMasterDetail();
                try
                {
                    if (ChemConsumptionInfo.FinishingConsumptionID == 0)
                    {
                        MasterId    = Convert.ToInt64(GenericFactory_EF_PrdFinishingConsumptionMaster.getMaxID("PrdFinishingConsumptionMaster"));
                        DetailId    = Convert.ToInt64(GenericFactory_EF_PrdFinishingConsumptionDetail.getMaxID("PrdFinishingConsumptionDetail"));
                        FirstDigit  = Convert.ToInt64(DetailId.ToString().Substring(0, 1));
                        OtherDigits = Convert.ToInt64(DetailId.ToString().Substring(1, DetailId.ToString().Length - 1));

                        CustomNo = GenericFactory_EF_PrdFinishingConsumptionMaster.getCustomCode(objcmnParam.menuId, DateTime.Now, objcmnParam.loggedCompany, objcmnParam.loggeduser, 1); // 1 for DB ID
                        if (CustomNo != null && CustomNo != "")
                        {
                            FinishingConsumptionNo = CustomNo;
                        }
                        else
                        {
                            FinishingConsumptionNo = MasterId.ToString();
                        }

                        Master = new PrdFinishingConsumptionMaster()
                        {
                            FinishingConsumptionID = MasterId,
                            FinishingConsumptionNo = FinishingConsumptionNo,
                            WeavingMRRID           = ChemConsumptionInfo.WeavingMRRID,
                            ItemID          = ChemConsumptionInfo.ItemID,
                            FinishingTypeID = ChemConsumptionInfo.FinishingTypeID,
                            Volume          = ChemConsumptionInfo.Volume,
                            ConsumptionDate = ChemConsumptionInfo.ConsumptionDate,
                            Remarks         = ChemConsumptionInfo.Remarks,
                            UnitID          = (int)ChemConsumptionInfo.UnitID,

                            IsDeleted         = false,
                            IsReleased        = false,
                            TransactionTypeID = objcmnParam.tTypeId,
                            CompanyID         = objcmnParam.loggedCompany,
                            CreateOn          = DateTime.Now,
                            CreateBy          = objcmnParam.loggeduser,
                            CreatePc          = HostService.GetIP(),
                        };

                        foreach (vmChemicalSetupMasterDetail sdtl in DCDetailList)
                        {
                            PrdFinishingConsumptionDetail objConsmuptionDetail = new PrdFinishingConsumptionDetail();
                            objConsmuptionDetail.FinishingConsumptionDetailID = Convert.ToInt64(FirstDigit + "" + OtherDigits);
                            objConsmuptionDetail.FinishingConsumptionID       = MasterId;
                            objConsmuptionDetail.ChemicalID      = sdtl.ChemicalID;
                            objConsmuptionDetail.UnitID          = sdtl.UnitID;
                            objConsmuptionDetail.RequiredQty     = sdtl.RequiredQty;
                            objConsmuptionDetail.AccQty          = sdtl.AccQty;
                            objConsmuptionDetail.Amount          = sdtl.Amount;
                            objConsmuptionDetail.BatchID         = sdtl.BatchID;
                            objConsmuptionDetail.SupplierID      = sdtl.SupplierID;
                            objConsmuptionDetail.ConsumptionDate = Master.ConsumptionDate;
                            objConsmuptionDetail.UnitPrice       = sdtl.UnitPrice;

                            objConsmuptionDetail.IsDeleted  = false;
                            objConsmuptionDetail.IsReleased = false;

                            objConsmuptionDetail.DepartmentID      = objcmnParam.DepartmentID;
                            objConsmuptionDetail.TransactionTypeID = objcmnParam.tTypeId;
                            objConsmuptionDetail.CompanyID         = objcmnParam.loggedCompany;
                            objConsmuptionDetail.CreateOn          = DateTime.Now;
                            objConsmuptionDetail.CreateBy          = objcmnParam.loggeduser;
                            objConsmuptionDetail.CreatePc          = HostService.GetIP();
                            Detail.Add(objConsmuptionDetail);

                            OtherDigits++;
                        }
                    }
                    else
                    {
                        Master = GenericFactory_EF_PrdFinishingConsumptionMaster.FindBy(m => m.FinishingConsumptionID == ChemConsumptionInfo.FinishingConsumptionID).FirstOrDefault();
                        Master.WeavingMRRID    = ChemConsumptionInfo.WeavingMRRID;
                        Master.ItemID          = ChemConsumptionInfo.ItemID;
                        Master.FinishingTypeID = ChemConsumptionInfo.FinishingTypeID;
                        Master.Volume          = ChemConsumptionInfo.Volume;;
                        Master.ConsumptionDate = ChemConsumptionInfo.ConsumptionDate;
                        Master.Remarks         = ChemConsumptionInfo.Remarks;
                        Master.UnitID          = (int)ChemConsumptionInfo.UnitID;

                        Master.TransactionTypeID = objcmnParam.tTypeId;
                        Master.CompanyID         = objcmnParam.loggedCompany;
                        Master.UpdateOn          = DateTime.Now;
                        Master.UpdateBy          = objcmnParam.loggeduser;
                        Master.UpdatePc          = HostService.GetIP();

                        foreach (vmChemicalSetupMasterDetail lcd in DCDetailList)
                        {
                            PrdFinishingConsumptionDetail FiniConDe = GenericFactory_EF_PrdFinishingConsumptionDetail.FindBy(m => m.FinishingConsumptionDetailID == lcd.FinishingConsumptionDetailID).FirstOrDefault();
                            FiniConDe.ChemicalID      = lcd.ChemicalID;
                            FiniConDe.UnitID          = lcd.UnitID;
                            FiniConDe.RequiredQty     = lcd.RequiredQty;
                            FiniConDe.AccQty          = lcd.AccQty;
                            FiniConDe.Amount          = lcd.Amount;
                            FiniConDe.BatchID         = lcd.BatchID;
                            FiniConDe.SupplierID      = lcd.SupplierID;
                            FiniConDe.ConsumptionDate = Master.ConsumptionDate;
                            FiniConDe.UnitPrice       = lcd.UnitPrice;

                            FiniConDe.DepartmentID      = objcmnParam.DepartmentID;
                            FiniConDe.TransactionTypeID = objcmnParam.tTypeId;
                            FiniConDe.CompanyID         = objcmnParam.loggedCompany;
                            FiniConDe.UpdateOn          = DateTime.Now;
                            FiniConDe.UpdateBy          = objcmnParam.loggeduser;
                            FiniConDe.UpdatePc          = HostService.GetIP();
                            Detail.Add(FiniConDe);
                        }
                    }

                    if (ChemConsumptionInfo.FinishingConsumptionID > 0)
                    {
                        GenericFactory_EF_PrdFinishingConsumptionMaster.Update(Master);
                        GenericFactory_EF_PrdFinishingConsumptionMaster.Save();

                        GenericFactory_EF_PrdFinishingConsumptionDetail.UpdateList(Detail);
                        GenericFactory_EF_PrdFinishingConsumptionDetail.Save();
                    }
                    else
                    {
                        GenericFactory_EF_PrdFinishingConsumptionMaster.Insert(Master);
                        GenericFactory_EF_PrdFinishingConsumptionMaster.Save();
                        GenericFactory_EF_PrdFinishingConsumptionMaster.updateMaxID("PrdFinishingConsumptionMaster", Convert.ToInt64(MasterId));
                        GenericFactory_EF_PrdFinishingConsumptionMaster.updateCustomCode(objcmnParam.menuId, DateTime.Now, objcmnParam.loggedCompany, 1, 1);

                        GenericFactory_EF_PrdFinishingConsumptionDetail.InsertList(Detail);
                        GenericFactory_EF_PrdFinishingConsumptionDetail.Save();
                        GenericFactory_EF_PrdFinishingConsumptionDetail.updateMaxID("PrdFinishingConsumptionDetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1)));
                    }
                    transaction.Complete();
                    result = Master.FinishingConsumptionNo;
                }
                catch (Exception e)
                {
                    result = "";
                    e.ToString();
                }
            }
            return(result);
        }