public void SubmitStatus(string selectedIds, string status) { using (var context = new VnrHrmDataContext()) { string statuss = string.Empty; var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Hre_ContractRepository(unitOfWork); List <Guid> lstContractIds = selectedIds.Split(',').Select(x => Guid.Parse(x)).ToList(); var lstContracts = repo.FindBy(m => m.ID != null && lstContractIds.Contains(m.ID)).ToList(); foreach (var Contract in lstContracts) { Contract.Status = status; } repo.SaveChanges(); } }
public List<Hre_ReportSeniorityEntity> GetReportSeniority(DateTime? DateSeniority, List<Hre_ProfileEntity> lstProfiles) { List<Hre_ReportSeniorityEntity> lstReportSeniority = new List<Hre_ReportSeniorityEntity>(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); lstProfiles = lstProfiles.Where(s => s.DateHire != null && s.IsDelete == null && s.DateHire <= DateSeniority).ToList(); if (lstProfiles.Count == 0) { return lstReportSeniority; } var lstprofileids = lstProfiles.Select(s => s.ID).Distinct().ToList(); #region Lấy Sal_BasicSalary var repoBasicSalary = new Sal_BasicSalaryRepository(unitOfWork); var lstBasicSalary = new List<Sal_BasicSalary>().Select(s => new { s.ProfileID, s.ID, s.GrossAmount, s.DateOfEffect, s.CurrencyID1, s.CurrencyID2, s.CurrencyID3, s.CurrencyID4, s.CurrencyID5, s.CurrencyID6 }).ToList(); foreach (var item in lstprofileids.Chunk(1000)) { lstBasicSalary.AddRange(repoBasicSalary.FindBy(s => s.IsDelete == null && item.Contains(s.ProfileID)).Select(s => new { s.ProfileID, s.ID, s.GrossAmount, s.DateOfEffect, s.CurrencyID1, s.CurrencyID2, s.CurrencyID3, s.CurrencyID4, s.CurrencyID5, s.CurrencyID6 }).ToList()); } #endregion #region Lấy Sal_BasicSalary var ContractRepository = new Hre_ContractRepository(unitOfWork); var lstContract = new List<Hre_Contract>().Select(s => new { s.ID, s.ContractTypeID, ContractTypeName = s.Cat_ContractType.ContractTypeName, s.ProfileID, s.DateStart, s.DateEnd }).ToList(); foreach (var item in lstprofileids.Chunk(1000)) { lstContract.AddRange(ContractRepository.FindBy(s => s.IsDelete == null && item.Contains(s.ProfileID)).Select(s => new { s.ID, s.ContractTypeID, ContractTypeName = s.Cat_ContractType.ContractTypeName, s.ProfileID, s.DateStart, s.DateEnd }).ToList()); } #endregion #region Lấy Att_AnnualDetail var AnnualLeaveDetailRepository = new Att_AnnualDetailRepository(unitOfWork); var listAnnualDetail = new List<Att_AnnualDetail>().ToList(); foreach (var item in lstprofileids.Chunk(1000)) { listAnnualDetail.AddRange(AnnualLeaveDetailRepository.FindBy(s => s.IsDelete == null && item.Contains(s.ProfileID.Value)).ToList()); } #endregion foreach (var profileid in lstprofileids) { var Profile = lstProfiles.Where(s => s.ID == profileid).FirstOrDefault(); if (Profile != null) { Hre_ReportSeniorityEntity ReportSeniority = new Hre_ReportSeniorityEntity(); var contractByProfile = lstContract.Where(s => s.ProfileID != null && Profile.ID == s.ProfileID).FirstOrDefault(); var basicsalaryByProfile = lstBasicSalary.Where(x => x.ProfileID != null && x.ProfileID == Profile.ID).FirstOrDefault(); ReportSeniority.CodeEmp = Profile.CodeEmp; ReportSeniority.ProfileName = Profile.ProfileName; ReportSeniority.DateHire = Profile.DateHire; ReportSeniority.E_DEPARTMENT = Profile.E_DEPARTMENT; ReportSeniority.E_SECTION = Profile.E_SECTION; int Year = 0; int Month = 0; if (ReportSeniority.DateHire.HasValue) { if (ReportSeniority.DateHire.Value.Month < DateSeniority.Value.Month) { Month = DateSeniority.Value.Month - 1 - ReportSeniority.DateHire.Value.Month; if (DateSeniority.Value.Year > ReportSeniority.DateHire.Value.Year) Year = DateSeniority.Value.Year - ReportSeniority.DateHire.Value.Year; } else { Month = (DateSeniority.Value.Month - 1 - ReportSeniority.DateHire.Value.Month) + 12; if (DateSeniority.Value.Year > ReportSeniority.DateHire.Value.Year) Year = DateSeniority.Value.Year - 1 - ReportSeniority.DateHire.Value.Year; } } ReportSeniority.YearSeniority = Year; ReportSeniority.MonthSeniority = Month; ReportSeniority.JobTitleName = Profile.JobTitleName; ReportSeniority.PositionName = Profile.PositionName; if (contractByProfile != null) { ReportSeniority.ContractTypeName = contractByProfile.ContractTypeName; ReportSeniority.DateStart = contractByProfile.DateStart; ReportSeniority.DateStart = contractByProfile.DateEnd; } if (basicsalaryByProfile != null) { ReportSeniority.GrossAmount = !string.IsNullOrEmpty(basicsalaryByProfile.GrossAmount) ? basicsalaryByProfile.GrossAmount : "0.00"; } ReportSeniority.DateOfEffect = Profile.DateOfEffect; ReportSeniority.Notes = Profile.Notes; Att_AnnualDetail AnnualDetailByProfile = listAnnualDetail.Where(m => m.ProfileID == Profile.ID && m.Type == AnnualLeaveDetailType.E_ANNUAL_LEAVE.ToString()).FirstOrDefault(); if (AnnualDetailByProfile != null) { ReportSeniority.AnnualYearRest = AnnualDetailByProfile.Remain; } lstReportSeniority.Add(ReportSeniority); } } return lstReportSeniority; } }
public List<Hre_ReportExpiryContractEntity> GetReportExpiryContract(DateTime? DateFrom, DateTime? DateTo, List<Guid> lstProfileIDs) { List<Hre_ReportExpiryContractEntity> lstReportExpiryContract = new List<Hre_ReportExpiryContractEntity>(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoContract = new Hre_ContractRepository(unitOfWork); var lstContract = repoContract.FindBy(s => s.DateEnd != null && s.DateEnd >= DateFrom && s.DateEnd <= DateTo && lstProfileIDs.Contains(s.ProfileID)).ToList(); if (lstContract == null) { return lstReportExpiryContract; } List<Guid> lstProfileIDsbycontract = lstContract.Select(s => s.ProfileID).ToList(); var repoProfile = new Hre_ProfileRepository(unitOfWork); var lstAllprofile = repoProfile.FindBy(s => lstProfileIDsbycontract.Contains(s.ID)).Select(s => new { s.ID, s.ProfileName, s.CodeEmp, s.OrgStructureID, s.PositionID, s.JobTitleID }).ToList(); var repoOrgStructure = new Cat_OrgStructureRepository(unitOfWork); var lstOrgStructure = repoOrgStructure.FindBy(s => s.IsDelete == null).Select(s => new { s.ID, s.OrgStructureName }).ToList(); var repoPosition = new Cat_PositionRepository(unitOfWork); var lstPosition = repoPosition.FindBy(s => s.IsDelete == null).Select(s => new { s.ID, s.PositionName }).ToList(); var repoJobtitle = new Cat_JobTitleRepository(unitOfWork); var lstJobtitle = repoJobtitle.FindBy(s => s.IsDelete == null).Select(s => new { s.ID, s.JobTitleName }).ToList(); var repoContractType = new Cat_ContractTypeRepository(unitOfWork); var lstContractType = repoContractType.FindBy(s => s.IsDelete == null).Select(s => new { s.ID, s.ContractTypeName, s.ContractNextID }).ToList(); foreach (var contract in lstContract) { Hre_ReportExpiryContractEntity ReportExpiryContract = new Hre_ReportExpiryContractEntity(); var profileByContract = lstAllprofile.Where(s => contract.ProfileID == s.ID).FirstOrDefault(); if (profileByContract == null) continue; var orgByProfile = lstOrgStructure.Where(s => profileByContract.OrgStructureID == s.ID).FirstOrDefault(); var positionByProfile = lstPosition.Where(s => contract.PositionID == s.ID).FirstOrDefault(); var jobtitleByProfile = lstJobtitle.Where(s => contract.JobTitleID == s.ID).FirstOrDefault(); var contractTypeByContract = lstContractType.Where(s => s.ID == contract.ContractTypeID).FirstOrDefault(); ReportExpiryContract.CodeEmp = profileByContract.CodeEmp; ReportExpiryContract.ProfileName = profileByContract.ProfileName; ReportExpiryContract.OrgStructureName = orgByProfile != null ? orgByProfile.OrgStructureName : ""; ReportExpiryContract.JobTitleName = jobtitleByProfile != null ? jobtitleByProfile.JobTitleName : ""; ReportExpiryContract.PositionName = positionByProfile != null ? positionByProfile.PositionName : ""; ReportExpiryContract.ContractTypeName = contractTypeByContract != null ? contractTypeByContract.ContractTypeName : ""; ReportExpiryContract.DateSigned = contract.DateSigned; ReportExpiryContract.DateStart = contract.DateStart; ReportExpiryContract.DateEnd = contract.DateEnd; lstReportExpiryContract.Add(ReportExpiryContract); } return lstReportExpiryContract; } }
public void UpdateSalaryClassNameForProfile(string SalaryClassName, string ProfileIDs, DateTime DateEndProbation, DateTime DateHire, Guid OrgStructureID, Guid SalaryRankID, Guid WorkPlaceID, Guid ContractTypeID, string BasicSalary, string userLogin) { using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); string status = string.Empty; var repo = new Hre_ProfileRepository(unitOfWork); var profileSevices = new Hre_ProfileServices(); var repoWorkHistory = new CustomBaseRepository<Hre_WorkHistory>(unitOfWork); var workingHistoryServices = new Hre_WorkHistoryServices(); // var insuranceServices = new Sal_InsuranceSalaryServices(); var ObjProfile = new List<object>(); ObjProfile.AddRange(new object[17]); ObjProfile[15] = 1; ObjProfile[16] = int.MaxValue - 1; List<Guid> lstProfileIDs = ProfileIDs.Split(',').Select(x => Guid.Parse(x)).ToList(); var lstProfiles = profileSevices.GetData<Hre_ProfileEntity>(ObjProfile, ConstantSql.hrm_hr_sp_get_ProfileAll, userLogin, ref status).Where(s => lstProfileIDs.Contains(s.ID)).ToList(); var contractServices = new Hre_ContractServices(); var repoContract = new Hre_ContractRepository(unitOfWork); List<Hre_ContractEntity> lstContract = new List<Hre_ContractEntity>(); var salaryRankServices = new Cat_SalaryRankServices(); var lstObjRank = new List<object>(); lstObjRank.Add(null); lstObjRank.Add(null); lstObjRank.Add(1); lstObjRank.Add(int.MaxValue - 1); var lstRank = salaryRankServices.GetData<Cat_SalaryRankEntity>(lstObjRank, ConstantSql.hrm_cat_sp_get_SalaryRank, userLogin, ref status).ToList().Translate<Cat_SalaryRank>(); var rankEntity = lstRank.Where(s => s.ID == SalaryRankID).FirstOrDefault(); var salaryClassServices = new Cat_SalaryClassServices(); var lstObjClass = new List<object>(); lstObjClass.Add(null); lstObjClass.Add(1); lstObjClass.Add(int.MaxValue - 1); var salaryClass = salaryClassServices.GetData<Cat_SalaryClassEntity>(lstObjClass, ConstantSql.hrm_cat_sp_get_SalaryClass, userLogin, ref status).ToList().Translate<Cat_SalaryClass>(); var salaryClassEntity = salaryClass.Where(s => rankEntity.SalaryClassID == s.ID).FirstOrDefault(); var lstObjContractType = new List<object>(); lstObjContractType.AddRange(new object[6]); lstObjContractType[4] = 1; lstObjContractType[5] = int.MaxValue - 1; var lstContractType = GetData<Cat_ContractTypeEntity>(lstObjContractType, ConstantSql.hrm_cat_sp_get_ContractType, userLogin, ref status).ToList(); var candidateServices = new Hre_CandidateGeneralServices(); var objCan = new List<object>(); objCan.AddRange(new object[14]); objCan[12] = 1; objCan[13] = int.MaxValue - 1; var lstCan = candidateServices.GetData<Hre_CandidateGeneralEntity>(objCan, ConstantSql.hrm_hr_sp_get_CandidateGeneral, userLogin, ref status).ToList(); var lstProfile = new List<Hre_ProfileEntity>(); var workplaceServices = new Cat_WorkPlaceServices(); var workplace = workplaceServices.GetData<Cat_WorkPlaceEntity>(Common.DotNetToOracle(WorkPlaceID.ToString()), ConstantSql.hrm_cat_sp_get_WorkPlaceById, userLogin, ref status).FirstOrDefault(); foreach (var item in lstProfiles) { var canEntity = lstCan.Where(s => s.ProfileID.Value == item.ID).FirstOrDefault(); if (canEntity == null) { //Add new contract var objContract = new List<object>(); objContract.Add(item.ID); var lstContractByProfileID = contractServices.GetData<Hre_ContractEntity>(objContract, ConstantSql.hrm_hr_sp_get_ContractsByProfileId, userLogin, ref status); var listIdContract = string.Empty; if (lstContractByProfileID != null) { listIdContract = string.Join(",", lstContractByProfileID.Select(d => d.ContractTypeID)); } var contractType = lstContractType.Where(s => s.ID == ContractTypeID).FirstOrDefault(); DateTime dateEnd = DateHire; if (contractType != null) { if (contractType.ValueTime != null) { //month = (int)contractType.ValueTime.Value; //if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) //{ // month = month * 12; //} if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_MONTH.ToString()) { dateEnd = DateHire.AddMonths(int.Parse(contractType.ValueTime.Value.ToString())); } else if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) { dateEnd = DateHire.AddYears(int.Parse(contractType.ValueTime.Value.ToString())); } } } double Salary = 0; if (!string.IsNullOrEmpty(BasicSalary)) Salary = double.Parse(BasicSalary); Hre_ContractEntity Contract = new Hre_ContractEntity(); Contract.ProfileID = item.ID; Contract.Salary = Salary; Contract.ContractTypeID = ContractTypeID; Contract.DateStart = DateHire; Contract.DateSigned = DateHire; Contract.DateEnd = dateEnd; Contract.RankRateID = SalaryRankID; Contract.ClassRateID = salaryClassEntity.ID; if (!string.IsNullOrEmpty(contractType.Formula)) { Contract = SetNewDateEndContract(Contract, userLogin); } Contract = SetNewCodeContract(Contract, listIdContract, userLogin); contractServices.Add(Contract); //Edit Profile item.OrgStructureID = OrgStructureID; item.SalaryClassID = salaryClassEntity == null ? Guid.Empty : salaryClassEntity.ID; item.DateOfEffect = DateHire; item.DateHire = DateHire; item.DateEndProbation = Contract.DateEnd.Value; item.WorkPlaceID = WorkPlaceID; item.ContractTypeID = ContractTypeID; profileSevices.Edit(item); //// Add Insurance //if (contractType != null && contractType.NoneTypeInsuarance == true) //{ // var insuranceEntity = new Sal_InsuranceSalaryEntity // { // ProfileID = item.ID, // InsuranceAmount = model.InsuranceAmount, // DateEffect = DateHire, // IsSocialIns = contractType.IsSocialInsurance == null ? null : contractType.IsSocialInsurance, // IsUnimploymentIns = contractType.IsUnEmployInsurance == null ? null : contractType.IsUnEmployInsurance, // IsMedicalIns = contractType.IsHealthInsurance == null ? null : contractType.IsHealthInsurance, // CurrencyID = model.CurenncyID1 // }; // insuranceServices.Add(insuranceEntity); //} Hre_WorkHistoryEntity workHistory = new Hre_WorkHistoryEntity(); workHistory.ProfileID = item.ID; workHistory.DateEffective = DateHire; workHistory.SalaryClassID = salaryClassEntity == null ? Guid.Empty : salaryClassEntity.ID; workHistory.OrganizationStructureID = OrgStructureID; workHistory.WorkLocation = workplace != null ? workplace.WorkPlaceName : null; workingHistoryServices.Add(workHistory); } } } }
public void AddDataForContract(string BasicSalary, string ProfileIDs, Guid ContractTypeID, DateTime DateHire, Guid SalaryRankID, string userLogin) { using (var context = new VnrHrmDataContext()) { string status = string.Empty; var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoProfile = new Hre_ProfileRepository(unitOfWork); var repoContract = new Hre_ContractRepository(unitOfWork); List<Hre_ContractEntity> lstContract = new List<Hre_ContractEntity>(); var contractServices = new Hre_ContractServices(); List<Guid> lstProfileIDs = ProfileIDs.Split(',').Select(x => Guid.Parse(x)).ToList(); var repoSalaryRank = new CustomBaseRepository<Cat_SalaryRank>(unitOfWork); var repoSalaryClass = new CustomBaseRepository<Cat_SalaryClass>(unitOfWork); // var salaryRank = repoSalaryRank.FindBy(s => s.IsDelete == null && s.ID == SalaryRankID).FirstOrDefault(); // var salaryClass = repoSalaryClass.FindBy(s => s.IsDelete == null && s.ID == salaryRank.SalaryClassID).FirstOrDefault(); var lstObjContractType = new List<object>(); lstObjContractType.AddRange(new object[6]); lstObjContractType[4] = 1; lstObjContractType[5] = int.MaxValue - 1; var lstContractType = GetData<Cat_ContractTypeEntity>(lstObjContractType, ConstantSql.hrm_cat_sp_get_ContractType, userLogin, ref status).ToList(); var salaryRankServices = new Cat_SalaryRankServices(); var lstObjRank = new List<object>(); lstObjRank.Add(null); lstObjRank.Add(null); lstObjRank.Add(1); lstObjRank.Add(int.MaxValue - 1); var lstRank = salaryRankServices.GetData<Cat_SalaryRankEntity>(lstObjRank, ConstantSql.hrm_cat_sp_get_SalaryRank, userLogin, ref status).ToList().Translate<Cat_SalaryRank>(); var rankEntity = lstRank.Where(s => s.ID == SalaryRankID).FirstOrDefault(); var salaryClassServices = new Cat_SalaryClassServices(); var lstObjClass = new List<object>(); lstObjClass.Add(null); lstObjClass.Add(1); lstObjClass.Add(int.MaxValue - 1); var salaryClass = salaryClassServices.GetData<Cat_SalaryClassEntity>(lstObjClass, ConstantSql.hrm_cat_sp_get_SalaryClass, userLogin, ref status).ToList().Translate<Cat_SalaryClass>(); var salaryClassEntity = salaryClass.Where(s => rankEntity.SalaryClassID == s.ID).FirstOrDefault(); // var contractType = lstContractType.Where(s => s.ID == ContractTypeID).FirstOrDefault(); foreach (var item in lstProfileIDs) { //model.ProfileID = profile.ID; var objContract = new List<object>(); objContract.Add(item); var lstContractByProfileID = contractServices.GetData<Hre_ContractEntity>(objContract, ConstantSql.hrm_hr_sp_get_ContractsByProfileId, userLogin, ref status); var listIdContract = string.Empty; if (lstContractByProfileID != null) { listIdContract = string.Join(",", lstContractByProfileID.Select(d => d.ContractTypeID)); } var contractType = lstContractType.Where(s => s.ID == ContractTypeID).FirstOrDefault(); DateTime dateEnd = DateHire; if (contractType != null) { if (contractType.ValueTime != null) { //month = (int)contractType.ValueTime.Value; //if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) //{ // month = month * 12; //} if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_MONTH.ToString()) { dateEnd = DateHire.AddMonths(int.Parse(contractType.ValueTime.Value.ToString())); } else if (contractType.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) { dateEnd = DateHire.AddYears(int.Parse(contractType.ValueTime.Value.ToString())); } } } double Salary = 0; if (!string.IsNullOrEmpty(BasicSalary)) Salary = double.Parse(BasicSalary); Hre_ContractEntity Contract = new Hre_ContractEntity(); Contract.ProfileID = item; Contract.Salary = Salary; Contract.ContractTypeID = ContractTypeID; Contract.DateStart = DateHire; Contract.DateSigned = DateHire; Contract.DateEnd = dateEnd; Contract.RankRateID = SalaryRankID; Contract.ClassRateID = salaryClassEntity.ID; if (!string.IsNullOrEmpty(contractType.Formula)) { Contract = SetNewDateEndContract(Contract, userLogin); } Contract = SetNewCodeContract(Contract, listIdContract, userLogin); lstContract.Add(Contract); } contractServices.Add(lstContract); repoContract.SaveChanges(); } }
public string SaveContractAndNextSalaryApprovedEvaluation(Hre_ContractEntity contract, string userLogin) { using (var context = new VnrHrmDataContext()) { var contractServices = new Hre_ContractServices(); string message = string.Empty; var baseServices = new BaseService(); string status = string.Empty; var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); if (contract.DateEndNextContract == null) { return string.Empty; } #region Lấy WorkHistory var repoWorkhistory = new Hre_WorkHistoryRepository(unitOfWork); var lstWorkhistory = new List<Hre_WorkHistory>().Select(d => new { d.ProfileID, d.SalaryClassID }).ToList(); lstWorkhistory.AddRange(repoWorkhistory.FindBy(s => s.IsDelete == null).Select(d => new { d.ProfileID, d.SalaryClassID }).ToList()); #endregion // Lấy biến Dateend này gắn cho quá trình công tác khi cập nhật quá trinh công tác ở dưới DateTime? dateEnd = contract.DateEnd; var profile = baseServices.GetData<Hre_ProfileEntity>(contract.ProfileID, ConstantSql.hrm_hr_sp_get_ProfileById, userLogin, ref status).FirstOrDefault(); var lstObjSalaryRank = new List<object>(); lstObjSalaryRank.Add(null); lstObjSalaryRank.Add(null); lstObjSalaryRank.Add(1); lstObjSalaryRank.Add(int.MaxValue - 1); var lstSalaryRank = baseServices.GetData<Cat_SalaryRankEntity>(lstObjSalaryRank, ConstantSql.hrm_cat_sp_get_SalaryRank, userLogin, ref status).ToList(); #region Lấy Att_Grade var att_GradeRepository = new Att_GradeRepository(unitOfWork); var lstAttGrade = new List<Att_Grade>().Select(d => new { d.ProfileID, d.MonthEnd }).ToList(); lstAttGrade.AddRange(att_GradeRepository.FindBy(s => s.IsDelete == null).Select(d => new { d.ProfileID, d.MonthEnd }).ToList()); #endregion #region Lấy Sal_Grade var salGradeRepository = new Sal_GradeRepository(unitOfWork); var lstSalGrade = new List<Sal_Grade>().Select(d => new { d.ProfileID, d.MonthEnd }).ToList(); lstSalGrade.AddRange(salGradeRepository.FindBy(s => s.IsDelete == null).Select(d => new { d.ProfileID, d.MonthEnd }).ToList()); #endregion var lstObjGradePayroll = new List<object>(); lstObjGradePayroll.Add(null); lstObjGradePayroll.Add(null); lstObjGradePayroll.Add(1); lstObjGradePayroll.Add(int.MaxValue - 1); var lstGradePayroll = baseServices.GetData<Cat_GradePayrollEntity>(lstObjGradePayroll, ConstantSql.hrm_cat_sp_get_GradePayroll, userLogin, ref status).ToList(); var lstObjGradeAtt = new List<object>(); lstObjGradeAtt.AddRange(new object[10]); lstObjGradeAtt[8] = 1; lstObjGradeAtt[9] = int.MaxValue - 1; var lstGradeAtt = baseServices.GetData<Cat_GradeAttendanceEntity>(lstObjGradeAtt, ConstantSql.hrm_cat_sp_get_Cat_GradeAttendance, userLogin, ref status).ToList(); var lstObjCurrency = new List<object>(); lstObjCurrency.Add(null); lstObjCurrency.Add(null); lstObjCurrency.Add(1); lstObjCurrency.Add(int.MaxValue - 1); var lstCurrency = baseServices.GetData<Cat_CurrencyEntity>(lstObjCurrency, ConstantSql.hrm_cat_sp_get_Currency, userLogin, ref status).ToList(); var lstCurrencyNew = lstCurrency.Where(s => s.CurrencyName == "VND").FirstOrDefault(); var lstObjContractType = new List<object>(); lstObjContractType.Add(null); lstObjContractType.Add(null); lstObjContractType.Add(null); lstObjContractType.Add(null); lstObjContractType.Add(1); lstObjContractType.Add(int.MaxValue - 1); var lstContractType = baseServices.GetData<Cat_ContractTypeEntity>(lstObjContractType, ConstantSql.hrm_cat_sp_get_ContractType, userLogin, ref status).ToList(); var objInsuranceConfig = new List<object>(); objInsuranceConfig.Add(1); objInsuranceConfig.Add(int.MaxValue - 1); var lstInsuranceConfig = baseServices.GetData<Cat_InsuranceConfigEntity>(objInsuranceConfig, ConstantSql.hrm_cat_sp_get_InsuranceConfig, userLogin, ref status).ToList(); #region Lấy Sal_InsuranceSalary var objInsurance = new List<object>(); objInsurance.AddRange(new object[9]); objInsurance[7] = 1; objInsurance[8] = int.MaxValue - 1; var lstInsurance = baseServices.GetData<Sal_InsuranceSalaryEntity>(objInsurance, ConstantSql.hrm_sal_sp_get_InsuranceSalary, userLogin, ref status).ToList(); #endregion #region Lấy Hre_Contract var hreContractRepository = new Hre_ContractRepository(unitOfWork); var lstContractIdByProfileID = new List<Hre_Contract>().Select(d => new { d.ProfileID, d.ContractTypeID }).ToList(); lstContractIdByProfileID.AddRange(hreContractRepository.FindBy(s => s.IsDelete == null && s.ProfileID == contract.ProfileID).Select(d => new { d.ProfileID, d.ContractTypeID }).ToList()); #endregion var listIdContract = string.Empty; if (lstContractIdByProfileID != null) { listIdContract = string.Join(",", lstContractIdByProfileID.Select(d => d.ContractTypeID)); } var contractTypeEntity = new Cat_ContractTypeEntity(); if (contract.NextContractTypeID != null) { contractTypeEntity = lstContractType.Where(s => contract.NextContractTypeID.Value == s.ID).FirstOrDefault(); } else { message = ConstantMessages.WarningContractHaveNotNextContract.ToString().TranslateString(); return message; } if (contractTypeEntity != null) { if (contractTypeEntity.Type == EnumDropDown.TypeContract.E_NODURATION.ToString()) { return string.Empty; } } var workingHistoryEntity = lstWorkhistory.Where(s => s.ProfileID == contract.ProfileID).FirstOrDefault(); #region Lấy Sal_Grade by profileid var objSalGrade = new List<object>(); objSalGrade.Add(contract.ProfileID); objSalGrade.Add(null); objSalGrade.Add(1); objSalGrade.Add(int.MaxValue - 1); var salGradeByProfileIDEntity = baseServices.GetData<Sal_GradeEntity>(objSalGrade, ConstantSql.hrm_sal_sp_get_GradeAndAllownaceByProId, userLogin, ref status).FirstOrDefault(); #endregion #region Lấy Att_Grade by profileid var objAttGrade = new List<object>(); objAttGrade.Add(contract.ProfileID); objAttGrade.Add(null); objAttGrade.Add(1); objAttGrade.Add(int.MaxValue - 1); var attGradeByProfileIDEntity = baseServices.GetData<Att_GradeEntity>(objAttGrade, ConstantSql.hrm_att_sp_get_GradeAttendanceByProIdCutID, userLogin, ref status).FirstOrDefault(); #endregion if (contractTypeEntity == null) { return string.Empty; } // Theo task 0049932 - sinh ra lương với ngày hiệu lực = ngày bắt đầu hd. var dateEffect = DateTime.Now; var contracttypeByContract = lstContractType.Where(s => s.ID == contract.ContractTypeID).FirstOrDefault(); if (contract.ContractResult == EnumDropDown.ResultContract.PASS.ToString()) { if (contract.ContractEvaType == EnumDropDown.ContractEvaType.E_EXPIRED_APPRENTICE.ToString()) { //chưa tìm dc cách xử lý nên hard code var lstSalaryRankNew = new Cat_SalaryRankEntity(); if (contract.RankDetailForNextContract != null) { lstSalaryRankNew = lstSalaryRank.Where(s => contract.RankDetailForNextContract != null && s.ID == contract.RankDetailForNextContract.Value).FirstOrDefault(); } else { lstSalaryRankNew = lstSalaryRank.Where(s => contract.RankRateID != null && s.ID == contract.RankRateID.Value).FirstOrDefault(); } #region Xử lý Hre_Contract if (contract.TypeOfPass == EnumDropDown.TypeOfPass.E_SIGNED_NEXTCONTRACT.ToString()) { int month = 0; if (contractTypeEntity != null && contractTypeEntity.ValueTime != null) { month = (int)contractTypeEntity.ValueTime.Value; if (contractTypeEntity.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) { month = month * 12; } contractTypeEntity.DateStart = contract.DateEnd.Value.AddDays(1); //chưa tìm dc cách xử lý nên hard code // var nextContractTypeID = Common.ConvertToGuid(contractTypeEntity.ContractNextID).ToString(); var contractEntity = new Hre_ContractEntity { ProfileID = contract.ProfileID, ProfileName = contract.ProfileName, DateStart = contract.DateEnd.Value.AddDays(1), DateSigned = contract.DateEnd.Value.AddDays(1), JobTitleID = contract.JobTitleID, PositionID = contract.PositionID, DateEnd = contractTypeEntity.DateStart.Value.AddMonths(month), Salary = lstSalaryRankNew == null ? 0 : lstSalaryRankNew.SalaryStandard, RankRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.ID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, ClassRateName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryClassName, SalaryRankName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryRankName, ContractTypeID = contractTypeEntity.ID, DateEndNextContract = contract.DateEndNextContract, }; if (contract.DateEndNextContract != null) { contractEntity.DateEnd = contract.DateEndNextContract.Value; } contractEntity = SetNewCodeContract(contractEntity, listIdContract, userLogin); #region Nếu là loại hđ xác định thời hạn thì update lại cột TimesContract theo task 0049731 if (contracttypeByContract != null && contracttypeByContract.Type == HRM.Infrastructure.Utilities.EnumDropDown.TypeContract.E_DURATION.ToString()) { try { string times = contractEntity.ContractNo.Substring(contractEntity.ContractNo.Length - 1, 1); int Year = int.Parse(times); contractEntity.TimesContract = Year; } catch { } } #endregion contractEntity.Status = "E_APPROVED"; contractEntity.StatusEvaluation = "E_APPROVED"; contractEntity.DateExtend = contractEntity.DateEnd; if (!string.IsNullOrEmpty(contractEntity.ErrorMessage)) { return string.Empty; } message = contractServices.Add(contractEntity); dateEffect = contractEntity.DateStart; } else { contractTypeEntity.DateStart = contract.DateEnd.Value.AddDays(1); //chưa tìm dc cách xử lý nên hard code var contractEntity = new Hre_ContractEntity { ProfileID = contract.ProfileID, ProfileName = contract.ProfileName, DateStart = contract.DateEnd.Value.AddDays(1), DateSigned = contract.DateEnd.Value.AddDays(1), JobTitleID = contract.JobTitleID, PositionID = contract.PositionID, Salary = lstSalaryRankNew == null ? 0 : lstSalaryRankNew.SalaryStandard, RankRateID = lstSalaryRankNew == null ? contract.RankRateID : lstSalaryRankNew.ID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, ClassRateName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryClassName, SalaryRankName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryRankName, ContractTypeID = contractTypeEntity.ID }; if (contract.DateEndNextContract != null) { contractEntity.DateEnd = contract.DateEndNextContract.Value; } contractEntity.DateExtend = contract.DateEnd; contractEntity.StatusEvaluation = "E_APPROVED"; if (!string.IsNullOrEmpty(contractEntity.ErrorMessage)) { return string.Empty; } message = contractServices.Add(contractEntity); dateEffect = contractEntity.DateStart; } } //Edit lai StatusEvaluation contract.StatusEvaluation = "E_APPROVED"; message = contractServices.Edit(contract); #endregion #region Xử Lý Sal_BasicSalary var salaryEntity = new Sal_BasicSalaryEntity { ProfileID = contract.ProfileID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, RankRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.ID, GrossAmount = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryStandard.ToString(), DateOfEffect = dateEffect, CurrencyID = lstCurrencyNew.ID, Note = contract.Remark, Status = "E_APPROVED" }; message = baseServices.Add(salaryEntity); #endregion #region Xử Lý Hre_Profile var profileEntity = profile.CopyData<Hre_ProfileEntity>(); Guid? _AbilityTileID = null; profileEntity.SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID; if (profileEntity.SalaryClassID != null) { var abilityTitleBySalaryClass = baseServices.GetData<Cat_AbilityTileEntity>(Common.DotNetToOracle(profileEntity.SalaryClassID.ToString()), ConstantSql.hrm_cat_sp_get_AbilityTileBySalaryClassId, userLogin, ref status).FirstOrDefault(); if (abilityTitleBySalaryClass != null) { _AbilityTileID = abilityTitleBySalaryClass.ID; profileEntity.AbilityTileID = _AbilityTileID; } } baseServices.Edit(profileEntity); if (workingHistoryEntity != null) { if (workingHistoryEntity.SalaryClassID != lstSalaryRankNew.SalaryClassID) { var workhistoryEntity = new Hre_WorkHistoryEntity { ProfileID = contract.ProfileID, SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, DateEffective = dateEnd != null ? dateEnd.Value.AddDays(1) : DateTime.Now, AbilityTileID = _AbilityTileID, Status = "E_APPROVED" }; message = baseServices.Add(workhistoryEntity); } } else { var workhistoryEntity = new Hre_WorkHistoryEntity { ProfileID = contract.ProfileID, SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, DateEffective = dateEnd != null ? dateEnd.Value.AddDays(1) : DateTime.Now, Status = "E_APPROVED", }; message = baseServices.Add(workhistoryEntity); } #endregion #region Sal_Grade var lstGradeByProfileID = lstSalGrade.Where(s => contract.ProfileID == s.ProfileID).ToList().OrderByDescending(s => s.MonthEnd <= DateTime.Now).FirstOrDefault(); var lstGradePayrollByProfileID = lstGradePayroll.Where(s => s.Code == lstSalaryRankNew.Code).FirstOrDefault(); if (salGradeByProfileIDEntity != null) { if (salGradeByProfileIDEntity.GradePayrollID != lstGradePayrollByProfileID.ID) { var gradeEntity = new Sal_GradeEntity { ProfileID = contract.ProfileID, GradePayrollID = lstGradePayrollByProfileID == null ? Guid.Empty : lstGradePayrollByProfileID.ID, MonthStart = contract.DateSigned != null ? contract.DateSigned.Value : DateTime.Now, }; message = baseServices.Add(gradeEntity); } } else { var gradeEntity = new Sal_GradeEntity { // ID = lstGradeByProfileID == null ? Guid.Empty : lstGradeByProfileID.ID, ProfileID = contract.ProfileID, GradePayrollID = lstGradePayrollByProfileID == null ? Guid.Empty : lstGradePayrollByProfileID.ID, MonthStart = contract.DateSigned != null ? contract.DateSigned.Value : DateTime.Now, }; message = baseServices.Add(gradeEntity); } #endregion #region Att_Grade var lstAttGradeByProfileID = lstAttGrade.Where(s => contract.ProfileID == s.ProfileID).ToList().OrderByDescending(s => s.MonthEnd <= DateTime.Now).FirstOrDefault(); var lstGradeAttByProfileID = lstGradeAtt.Where(s => s.Code == lstSalaryRankNew.Code).FirstOrDefault(); if (attGradeByProfileIDEntity != null) { if (attGradeByProfileIDEntity.GradeAttendanceID != lstGradeAttByProfileID.ID) { var gradeAttEntity = new Att_GradeEntity { ProfileID = contract.ProfileID, GradeAttendanceID = lstAttGradeByProfileID == null ? Guid.Empty : lstGradeAttByProfileID.ID, MonthStart = contract.DateSigned != null ? contract.DateSigned.Value : DateTime.Now, }; message = baseServices.Add(gradeAttEntity); } } else { var gradeAttEntity = new Att_GradeEntity { // ID = lstGradeAttByProfileID == null ? Guid.Empty: lstAttGradeByProfileID.ID, ProfileID = contract.ProfileID, GradeAttendanceID = lstGradeAttByProfileID == null ? Guid.Empty : lstGradeAttByProfileID.ID, MonthStart = contract.DateSigned != null ? contract.DateSigned.Value : DateTime.Now, }; message = baseServices.Add(gradeAttEntity); } #endregion #region Xử Lý Lương BHXH if (contractTypeEntity.NoneTypeInsuarance == true) { var insuranceEntityByProfileID = lstInsurance.Where(s => s.ProfileID == contract.ProfileID && s.DateEffect == contract.DateEnd.Value.AddDays(1)).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); var insuranceEntity = new Sal_InsuranceSalaryEntity { ProfileID = contract.ProfileID, InsuranceAmount = lstSalaryRankNew.SalaryStandard, DateEffect = dateEffect, IsSocialIns = contractTypeEntity.IsSocialInsurance == null ? null : contractTypeEntity.IsSocialInsurance, IsMedicalIns = contractTypeEntity.IsHealthInsurance == null ? null : contractTypeEntity.IsHealthInsurance, IsUnimploymentIns = contractTypeEntity.IsUnEmployInsurance == null ? null : contractTypeEntity.IsUnEmployInsurance, CurrencyID = lstCurrencyNew.ID }; if (insuranceEntityByProfileID != null) { insuranceEntityByProfileID.InsuranceAmount = lstSalaryRankNew.SalaryStandard; insuranceEntityByProfileID.IsSocialIns = contractTypeEntity.IsSocialInsurance == null ? null : contractTypeEntity.IsSocialInsurance; insuranceEntityByProfileID.IsUnimploymentIns = contractTypeEntity.IsUnEmployInsurance == null ? null : contractTypeEntity.IsUnEmployInsurance; insuranceEntityByProfileID.IsMedicalIns = contractTypeEntity.IsHealthInsurance == null ? null : contractTypeEntity.IsHealthInsurance; message = baseServices.Edit(insuranceEntityByProfileID); } else { message = baseServices.Add(insuranceEntity); } } if (contractTypeEntity.NoneTypeInsuarance == false) { var insuranceConfigEntity = lstInsuranceConfig.Where(s => s.ContractTypeID != null && s.ContractTypeID.Value == contractTypeEntity.ID).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); if (insuranceConfigEntity != null) { var insuranceEntityByProfileID = lstInsurance.Where(s => s.ProfileID == contract.ProfileID && s.DateEffect == contract.DateEnd.Value.AddDays(1)).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); var insuranceEntity = new Sal_InsuranceSalaryEntity { ProfileID = contract.ProfileID, InsuranceAmount = lstSalaryRankNew.SalaryStandard, DateEffect = dateEffect, IsSocialIns = insuranceConfigEntity.IsSocial == null ? null : insuranceConfigEntity.IsSocial, IsUnimploymentIns = insuranceConfigEntity.IsUnEmploy == null ? null : insuranceConfigEntity.IsUnEmploy, IsMedicalIns = insuranceConfigEntity.IsHealth == null ? null : insuranceConfigEntity.IsHealth, CurrencyID = lstCurrencyNew.ID }; if (insuranceEntityByProfileID != null) { insuranceEntityByProfileID.InsuranceAmount = lstSalaryRankNew.SalaryStandard; insuranceEntityByProfileID.IsSocialIns = insuranceConfigEntity.IsSocial == null ? null : insuranceConfigEntity.IsSocial; insuranceEntityByProfileID.IsUnimploymentIns = insuranceConfigEntity.IsUnEmploy == null ? null : insuranceConfigEntity.IsUnEmploy; insuranceEntityByProfileID.IsMedicalIns = insuranceConfigEntity.IsHealth == null ? null : insuranceConfigEntity.IsHealth; message = baseServices.Edit(insuranceEntityByProfileID); } else { message = baseServices.Add(insuranceEntity); } } } #endregion } if (contract.ContractEvaType == EnumDropDown.ContractEvaType.E_ANNUAL_EVALUATION.ToString() && contract.ContractResult == EnumDropDown.ResultContract.PASS.ToString()) { var lstSalaryRankNew = new Cat_SalaryRankEntity(); if (contract.RankDetailForNextContract != null) { lstSalaryRankNew = lstSalaryRank.Where(s => contract.RankDetailForNextContract != null && s.ID == contract.RankDetailForNextContract.Value).FirstOrDefault(); } else { lstSalaryRankNew = lstSalaryRank.Where(s => contract.RankRateID != null && s.ID == contract.RankRateID.Value).FirstOrDefault(); } #region Xử lý Hre_Contract int month = 0; if (contractTypeEntity != null && contractTypeEntity.ValueTime != null) { month = (int)contractTypeEntity.ValueTime.Value; if (contractTypeEntity.UnitTime == HRM.Infrastructure.Utilities.EnumDropDown.UnitType.E_YEAR.ToString()) { month = month * 12; } contractTypeEntity.DateStart = contract.DateEnd.Value.AddDays(1); //chưa tìm dc cách xử lý nên hard code var contractEntity = new Hre_ContractEntity { ProfileID = contract.ProfileID, ProfileName = contract.ProfileName, DateStart = new DateTime(DateTime.Now.Year, 6, 1), DateSigned = new DateTime(DateTime.Now.Year, 6, 1), JobTitleID = contract.JobTitleID, PositionID = contract.PositionID, DateEnd = contractTypeEntity.DateStart.Value.AddMonths(month), Salary = lstSalaryRankNew == null ? 0 : lstSalaryRankNew.SalaryStandard, RankRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.ID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, ClassRateName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryClassName, SalaryRankName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryRankName, ContractTypeID = contractTypeEntity.ID }; if (contract.DateEndNextContract != null) { contractEntity.DateEnd = contract.DateEndNextContract.Value; } contractEntity = SetNewCodeContract(contractEntity, listIdContract, userLogin); #region Nếu là loại hđ xác định thời hạn thì update lại cột TimesContract theo task 0049731 if (contracttypeByContract != null && contracttypeByContract.Type == HRM.Infrastructure.Utilities.EnumDropDown.TypeContract.E_DURATION.ToString()) { try { string times = contractEntity.ContractNo.Substring(contractEntity.ContractNo.Length - 1, 1); int Year = int.Parse(times); contractEntity.TimesContract = Year; } catch { } } #endregion contractEntity.Status = "E_APPROVED"; contractEntity.DateExtend = contractEntity.DateEnd; contractEntity.StatusEvaluation = "E_APPROVED"; if (!string.IsNullOrEmpty(contractEntity.ErrorMessage)) { return string.Empty; } message = contractServices.Add(contractEntity); dateEffect = contractEntity.DateStart; } else { contractTypeEntity.DateStart = contract.DateEnd.Value.AddDays(1); //chưa tìm dc cách xử lý nên hard code var contractEntity = new Hre_ContractEntity { // ContractNo = getContractNo(item, item.DateSigned), ProfileID = contract.ProfileID, ProfileName = contract.ProfileName, DateStart = new DateTime(DateTime.Now.Year, 6, 1), DateSigned = new DateTime(DateTime.Now.Year, 6, 1), JobTitleID = contract.JobTitleID, PositionID = contract.PositionID, // DateEnd = null, Salary = lstSalaryRankNew == null ? 0 : lstSalaryRankNew.SalaryStandard, RankRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.ID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, ClassRateName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryClassName, SalaryRankName = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryRankName, ContractTypeID = contractTypeEntity.ID }; if (contract.DateEndNextContract != null) { contractEntity.DateEnd = contract.DateEndNextContract.Value; } contractEntity.DateExtend = contract.DateEnd; contractEntity.StatusEvaluation = "E_APPROVED"; if (!string.IsNullOrEmpty(contractEntity.ErrorMessage)) { return string.Empty; } message = contractServices.Add(contractEntity); dateEffect = contractEntity.DateStart; } //Edit lai StatusEvaluation contract.StatusEvaluation = "E_APPROVED"; message = contractServices.Edit(contract); #endregion #region Xử Lý Sal_BasicSalary var salaryEntity = new Sal_BasicSalaryEntity { ProfileID = contract.ProfileID, ClassRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, RankRateID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.ID, GrossAmount = lstSalaryRankNew == null ? string.Empty : lstSalaryRankNew.SalaryStandard.ToString(), DateOfEffect = new DateTime(DateTime.Now.Year, 6, 1), CurrencyID = lstCurrencyNew.ID, Note = contract.Remark, Status = "E_APPROVED" }; message = baseServices.Add(salaryEntity); #endregion #region Xử Lý Hre_Profile var profileEntity = profile.CopyData<Hre_ProfileEntity>(); profileEntity.SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID; Guid? _AbilityTileID = null; if (profileEntity.SalaryClassID != null) { var abilityTitleBySalaryClass = baseServices.GetData<Cat_AbilityTileEntity>(Common.DotNetToOracle(profileEntity.SalaryClassID.ToString()), ConstantSql.hrm_cat_sp_get_AbilityTileBySalaryClassId, userLogin, ref status).FirstOrDefault(); if (abilityTitleBySalaryClass != null) { _AbilityTileID = abilityTitleBySalaryClass.ID; profileEntity.AbilityTileID = _AbilityTileID; } } message = baseServices.Edit(profileEntity); if (workingHistoryEntity != null) { if (workingHistoryEntity.SalaryClassID != lstSalaryRankNew.SalaryClassID) { var workhistoryEntity = new Hre_WorkHistoryEntity { ProfileID = contract.ProfileID, SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, DateEffective = dateEnd != null ? dateEnd.Value.AddDays(1) : DateTime.Now, AbilityTileID = _AbilityTileID, Status = "E_APPROVED" }; message = baseServices.Add(workhistoryEntity); } } else { var workhistoryEntity = new Hre_WorkHistoryEntity { ProfileID = contract.ProfileID, SalaryClassID = lstSalaryRankNew == null ? Guid.Empty : lstSalaryRankNew.SalaryClassID, DateEffective = dateEnd != null ? dateEnd.Value.AddDays(1) : DateTime.Now, Status = "E_APPROVED" }; message = baseServices.Add(workhistoryEntity); } #endregion #region Sal_Grade var lstGradeByProfileID = lstSalGrade.Where(s => contract.ProfileID == s.ProfileID).ToList().OrderByDescending(s => s.MonthEnd <= DateTime.Now).FirstOrDefault(); var lstGradePayrollByProfileID = lstGradePayroll.Where(s => s.Code == lstSalaryRankNew.Code).FirstOrDefault(); if (salGradeByProfileIDEntity != null) { if (salGradeByProfileIDEntity.GradePayrollID != lstGradePayrollByProfileID.ID) { var gradeEntity = new Sal_GradeEntity { // ID = lstGradeByProfileID == null ? Guid.Empty : lstGradeByProfileID.ID, ProfileID = contract.ProfileID, GradePayrollID = lstGradePayrollByProfileID == null ? Guid.Empty : lstGradePayrollByProfileID.ID, MonthStart = new DateTime(DateTime.Now.Year, 6, 1), }; message = baseServices.Add(gradeEntity); } } else { var gradeEntity = new Sal_GradeEntity { // ID = lstGradeByProfileID == null ? Guid.Empty : lstGradeByProfileID.ID, ProfileID = contract.ProfileID, GradePayrollID = lstGradePayrollByProfileID == null ? Guid.Empty : lstGradePayrollByProfileID.ID, MonthStart = new DateTime(DateTime.Now.Year, 6, 1) }; message = baseServices.Add(gradeEntity); } #endregion #region Att_Grade var lstAttGradeByProfileID = lstAttGrade.Where(s => contract.ProfileID == s.ProfileID).ToList().OrderByDescending(s => s.MonthEnd <= DateTime.Now).FirstOrDefault(); var lstGradeAttByProfileID = lstGradeAtt.Where(s => s.Code == lstSalaryRankNew.Code).FirstOrDefault(); if (attGradeByProfileIDEntity != null) { if (attGradeByProfileIDEntity.GradeAttendanceID != lstGradeAttByProfileID.ID) { var gradeAttEntity = new Att_GradeEntity { //ID = lstAttGradeByProfileID == null ? Guid.Empty: lstAttGradeByProfileID.ID, ProfileID = contract.ProfileID, GradeAttendanceID = lstGradeAttByProfileID == null ? Guid.Empty : lstGradeAttByProfileID.ID, MonthStart = new DateTime(DateTime.Now.Year, 6, 1) }; message = baseServices.Add(gradeAttEntity); } } else { var gradeAttEntity = new Att_GradeEntity { //ID = lstAttGradeByProfileID == null ? Guid.Empty: lstAttGradeByProfileID.ID, ProfileID = contract.ProfileID, GradeAttendanceID = lstGradeAttByProfileID == null ? Guid.Empty : lstGradeAttByProfileID.ID, MonthStart = new DateTime(DateTime.Now.Year, 6, 1) }; message = baseServices.Add(gradeAttEntity); } #endregion #region Xử Lý Lương BHXH if (contractTypeEntity.NoneTypeInsuarance == true) { var insuranceEntityByProfileID = lstInsurance.Where(s => s.ProfileID == contract.ProfileID && s.DateEffect == contract.DateEnd.Value.AddDays(1)).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); var insuranceEntity = new Sal_InsuranceSalaryEntity { ProfileID = contract.ProfileID, InsuranceAmount = lstSalaryRankNew.SalaryStandard, DateEffect = dateEffect, IsSocialIns = contractTypeEntity.IsSocialInsurance == null ? null : contractTypeEntity.IsSocialInsurance, IsUnimploymentIns = contractTypeEntity.IsUnEmployInsurance == null ? null : contractTypeEntity.IsUnEmployInsurance, IsMedicalIns = contractTypeEntity.IsHealthInsurance == null ? null : contractTypeEntity.IsHealthInsurance, CurrencyID = lstCurrencyNew.ID, }; if (insuranceEntityByProfileID != null) { insuranceEntityByProfileID.InsuranceAmount = lstSalaryRankNew.SalaryStandard; insuranceEntityByProfileID.IsSocialIns = contractTypeEntity.IsSocialInsurance == null ? null : contractTypeEntity.IsSocialInsurance; insuranceEntityByProfileID.IsUnimploymentIns = contractTypeEntity.IsUnEmployInsurance == null ? null : contractTypeEntity.IsUnEmployInsurance; insuranceEntityByProfileID.IsMedicalIns = contractTypeEntity.IsHealthInsurance == null ? null : contractTypeEntity.IsHealthInsurance; message = baseServices.Edit(insuranceEntityByProfileID); } else { message = baseServices.Add(insuranceEntity); } } if (contractTypeEntity.NoneTypeInsuarance == false) { var insuranceConfigEntity = lstInsuranceConfig.Where(s => s.ContractTypeID != null && s.ContractTypeID.Value == contractTypeEntity.ID).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); if (insuranceConfigEntity != null) { var insuranceEntityByProfileID = lstInsurance.Where(s => s.ProfileID == contract.ProfileID && s.DateEffect == contract.DateEnd.Value.AddDays(1)).OrderByDescending(s => s.DateUpdate).FirstOrDefault(); var insuranceEntity = new Sal_InsuranceSalaryEntity { ProfileID = contract.ProfileID, InsuranceAmount = lstSalaryRankNew.SalaryStandard, DateEffect = dateEffect, IsSocialIns = insuranceConfigEntity.IsSocial == null ? null : insuranceConfigEntity.IsSocial, IsUnimploymentIns = insuranceConfigEntity.IsUnEmploy == null ? null : insuranceConfigEntity.IsUnEmploy, IsMedicalIns = insuranceConfigEntity.IsHealth == null ? null : insuranceConfigEntity.IsHealth, CurrencyID = lstCurrencyNew.ID }; if (insuranceEntityByProfileID != null) { insuranceEntityByProfileID.InsuranceAmount = lstSalaryRankNew.SalaryStandard; insuranceEntityByProfileID.IsSocialIns = insuranceConfigEntity.IsSocial == null ? null : insuranceConfigEntity.IsSocial; insuranceEntityByProfileID.IsUnimploymentIns = insuranceConfigEntity.IsUnEmploy == null ? null : insuranceConfigEntity.IsUnEmploy; insuranceEntityByProfileID.IsMedicalIns = insuranceConfigEntity.IsHealth == null ? null : insuranceConfigEntity.IsHealth; message = baseServices.Edit(insuranceEntityByProfileID); } else { message = baseServices.Add(insuranceEntity); } } } #endregion } } return message; } }
/// <summary> Compute D02 và xuat bao cao D02 </summary> /// <param name="all"></param> /// <param name="increase"></param> /// <param name="descrease"></param> /// <param name="dtMonthYear"></param> /// <param name="orgIds"></param> /// <returns></returns> public List<Ins_InsuranceReportD02Entity> LoadData(bool? all, bool? increase, bool? descrease, DateTime? dtMonthYear, string orgIds, string searchNoteType, string searchStatus, string codeEmp, List<Guid> socialInsPlaceIDs, string userLogin) { var monthYear = dtMonthYear ?? DateTime.Now; DateTime dateFrom = monthYear.AddMonths(-1); dateFrom = new DateTime(dateFrom.Year, dateFrom.Month, InsuranceServices.PeriodInsuranceDayPreMonthDefault); DateTime dateTo = new DateTime(monthYear.Year, monthYear.Month, InsuranceServices.PeriodInsuranceDayCurrentMonthDefault); var status = string.Empty; var allCheck = all ?? false; var inCreaseCheck = increase ?? false; var descreaseCheck = descrease ?? false; DateTime dateFromNewHONDA = new DateTime(dateFrom.Year, dateFrom.Month, PeriodInsuranceDayPreMonth);//18 DateTime dateToNewHONDA = new DateTime(dateTo.Year, dateTo.Month, PeriodInsuranceDayCurrentMonth);//17 // int? sociaInsCountPro = 0; double? sociaInsTotalSalary = 0; int? healthInsCountPro = 0; double? healthInsTotalSalary = 0; int? unEmpInsCountPro = 0; double? unEmpInsTotalSalary = 0; double? maxSalary = long.MinValue + 1; double? minSalary = long.MaxValue - 1; // //lay ds Ins_ProfileInsuranceMonthly //List<object> listInsMonthlyObj = new List<object>(); //listInsMonthlyObj.Add(orgs); //listInsMonthlyObj.Add(monthYear); //var profileInsMonthlys = GetData<Hre_ProfileEntity>(listInsMonthlyObj, ConstantSql.hrm_ins_sp_get_ProfileInsMonthly, ref status); Hashtable htbData = new Hashtable(); var d02Reports = new List<Ins_InsuranceReportD02Entity>(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var profileInsMonthly = new Ins_ProfileInsuranceMonthlyRepository(unitOfWork); var orgStructureRepo = new Cat_OrgStructureRepository(unitOfWork); var insInsuranceRecord = new Ins_InsuranceRecordRepository(unitOfWork); var hre_ContractRepo = new Hre_ContractRepository(unitOfWork); var cat_ContractTypeRepo = new Cat_ContractTypeRepository(unitOfWork); var att_LeaveDayRepo = new Att_LeavedayRepository(unitOfWork); #region Lấy DS Ins_ProfileInsuranceMonthly (lấy tất cả) var listInsMonthlyObj = new List<object> { orgIds, null, null, 1, int.MaxValue - 1 }; if (Common.UseDataBaseName == DATABASETYPE.SQLSERVER.ToString()) { listInsMonthlyObj.Add("id"); } var lstProfileInsuranceMonthlyInDb = GetData<Ins_ProfileInsuranceMonthlyEntity>(listInsMonthlyObj, ConstantSql.hrm_ins_sp_get_ProfileInsMonthly, userLogin, ref status); #endregion //get profiles trong Ins_ProfileInsuranceMonthly theo thang kiểm tra var lstProfile = lstProfileInsuranceMonthlyInDb.Where(s => (s.IsDelete == null || s.IsDelete.Value==false) && s.MonthYear.HasValue && (s.MonthYear.Value.Year == dateFrom.Year || s.MonthYear.Value.Year == dateTo.Year) && (s.MonthYear.Value.Month == dateFrom.Month || s.MonthYear.Value.Month == dateTo.Month) && s.MonthYearEffect.HasValue && s.MonthYear == s.MonthYearEffect).ToList().Translate<Ins_ProfileInsuranceMonthly>(); #region lay ins_ProfileInsuranceMonthly de tinh thai san 1 nam lien ke //Lấy Ds Ins_ProfileInsuranceMonthly 12 tháng trước so với tháng kiểm tra (de tinh thai san 1 nam lien ke) List<Ins_ProfileInsuranceMonthlyEntity> lstProfilePregnant = null; #endregion //var lstProfile = profileInsMonthly.FindBy(s => s.IsDelete == null && s.MonthYear.HasValue // && (s.MonthYear.Value.Year == dateFrom.Year || s.MonthYear.Value.Year == dateTo.Year) // && (s.MonthYear.Value.Month == dateFrom.Month || s.MonthYear.Value.Month == dateTo.Month)).ToList(); //get InsuranceRecord (Chứng từ bảo hiểm) var lstInsuranceRecord = insInsuranceRecord.GetAll().Where(p => p.IsDelete == null).ToList();// lay tat ca chứng từ bảo hiểm (sau nay sửa lai sau) #region Lay ds Phong Ban var orgs = GetDataNotParam<Cat_OrgStructure>(ConstantSql.hrm_cat_sp_get_AllOrg, userLogin, ref status).ToList(); List<Cat_OrgStructureEntity> orgStructures = orgs.Translate<Cat_OrgStructureEntity>(); #endregion #region Lấy profile theo phong ban List<object> listObj = new List<object>(); listObj.Add(orgIds); listObj.Add(string.Empty); listObj.Add(string.Empty); var profilebyOrgs = GetData<Hre_ProfileEntity>(listObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, userLogin, ref status); if (!string.IsNullOrEmpty(codeEmp)) { profilebyOrgs = profilebyOrgs.Where(p => p.CodeEmp == codeEmp).ToList(); } else if (profilebyOrgs != null) { profilebyOrgs = profilebyOrgs.Where(p => p.DateHire != null && (p.DateQuit == null || p.DateQuit > dateFrom) && p.DateHire <= monthYear).ToList(); } var profileIds = profilebyOrgs.Select(p => p.ID).ToList(); #endregion #region lay ds hop dong đã ký so với tháng chọn (Loại HD có đóng BH) var contractTypeObjs = cat_ContractTypeRepo.FindBy(p => p.IsDelete == null).ToList(); //Ds loại HĐ đóng BHXH var contractSocialTypeIDObjs = contractTypeObjs.Where(p => p.IsSocialInsurance.HasValue && p.IsSocialInsurance.Value).ToList(); //Ds loại HĐ đóng BHTN var contractUnEmpTypeIDObjs = contractTypeObjs.Where(p => p.IsUnEmployInsurance.HasValue && p.IsUnEmployInsurance.Value).ToList(); var contracts = new List<Hre_Contract>(); var contractSocials = new List<Hre_Contract>(); var contractUnEmps = new List<Hre_Contract>(); if (contractSocialTypeIDObjs.Any()) { var contractSocialTypeIds = contractSocialTypeIDObjs.Select(p => p.ID).ToList(); var contractUnEmpTypeIds = contractUnEmpTypeIDObjs.Select(p => p.ID).ToList(); //Ds Hop Đồng của cac NV contracts = hre_ContractRepo.FindBy(p => p.IsDelete == null && profileIds.Contains(p.ProfileID)).OrderBy(p => p.DateStart).ToList(); //Ds Hop đồng thuộc loại đóng BHXH contractSocials = contracts.Where(p => contractSocialTypeIds.Contains(p.ContractTypeID)).OrderBy(p => p.DateStart).ToList(); //Ds Hop đồng thuộc loại đóng BHTN contractUnEmps = contracts.Where(p => contractUnEmpTypeIds.Contains(p.ContractTypeID)).OrderBy(p => p.DateStart).ToList(); } #endregion #region lấy Leaveday string E_APPROVED = LeaveDayStatus.E_APPROVED.ToString(); string E_PREGNANCY_SUCKLE = InsuranceRecordType.E_PREGNANCY_SUCKLE.ToString(); var lstLeaveday = att_LeaveDayRepo.FindBy(m => m.IsDelete == null && m.Status == E_APPROVED && m.DateStart <= dateTo && m.DateEnd >= dateFrom && m.Cat_LeaveDayType != null && m.Cat_LeaveDayType.InsuranceType == E_PREGNANCY_SUCKLE && profileIds.Contains(m.ProfileID)).ToList(); #endregion List<object> salInsuranceSalaryParams = new List<object>(); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(orgIds); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(null); salInsuranceSalaryParams.Add(1); salInsuranceSalaryParams.Add(Int32.MaxValue - 1); var dateEnd = new DateTime(dateTo.Year, dateTo.Month, DateTime.DaysInMonth(dateTo.Year, dateTo.Month)); var lstInsuranceSalaryByProfile = GetData<Sal_InsuranceSalary>(salInsuranceSalaryParams, ConstantSql.hrm_sal_sp_get_InsuranceSalary, userLogin, ref status) .Where(p => p.DateEffect <= dateEnd && profileIds.Contains(p.ProfileID ?? Guid.Empty) && p.InsuranceAmount.HasValue).ToList(); if (socialInsPlaceIDs != null) { socialInsPlaceIDs = socialInsPlaceIDs.Where(p => p != null && p != Guid.Empty).ToList(); if (socialInsPlaceIDs != null && socialInsPlaceIDs.Any()) { lstProfile = lstProfile.Where(p => socialInsPlaceIDs != null && socialInsPlaceIDs.Count > 0 && socialInsPlaceIDs.Contains(p.SocialInsPlaceID ?? Guid.Empty)).ToList(); } } foreach (var profile in profilebyOrgs) { //lay các chung tu bao hiem cua nv List<Ins_InsuranceRecord> lstInsRecordProfile = lstInsuranceRecord.Where(rec => rec.ProfileID == profile.ID).ToList(); var lstleavePregByProfile = lstLeaveday.Where(rec => rec.ProfileID == profile.ID).ToList(); var lstInsRecordPregByProfile = lstInsRecordProfile.Where(m => m.InsuranceType == E_PREGNANCY_SUCKLE).ToList(); var profileMonthlys = lstProfile.Where(p => p.ProfileID == profile.ID).OrderBy(p => p.MonthYear).ToList(); var inFirst = profileMonthlys.FirstOrDefault(p => p.MonthYear.HasValue && p.MonthYear.Value.Month == dateFrom.Month); var inNow = profileMonthlys.LastOrDefault(p => p.MonthYear.HasValue && p.MonthYear.Value.Month == dateTo.Month); if (inFirst == null) { inFirst = new Ins_ProfileInsuranceMonthly { IsHealthInsurance = false, IsSocialInsurance = false, IsUnEmpInsurance = false }; } if (inNow != null) { profile.JobName = inNow.JobName; #region set Phu cap if (inNow != null) { profile.Allowance1 = inNow.Allowance1; profile.Allowance2 = inNow.Allowance2; profile.Allowance3 = inNow.Allowance3; profile.Allowance4 = inNow.Allowance4; } #endregion #region Thống kê số lượng người đóng BHXH,BHYT,BHTN và tổng lương BHXH,BHTN,BHTN if (inNow.IsSocialInsurance.HasValue && inNow.IsSocialInsurance.Value) { sociaInsCountPro++; sociaInsTotalSalary += inNow.MoneySocialInsurance; } if (inNow.IsHealthInsurance.HasValue && inNow.IsHealthInsurance.Value) { healthInsCountPro++; healthInsTotalSalary += inNow.MoneyHealthInsurance; } if (inNow.IsUnEmpInsurance.HasValue && inNow.IsUnEmpInsurance.Value) { unEmpInsCountPro++; unEmpInsTotalSalary += inNow.MoneyUnEmpInsurance; } if (inNow.SalaryInsurance.HasValue && inNow.SalaryInsurance.Value > maxSalary) { maxSalary = inNow.SalaryInsurance.Value; } if (inNow.SalaryInsurance.HasValue && inNow.SalaryInsurance.Value < minSalary) { minSalary = inNow.SalaryInsurance.Value; } #endregion #region tang if (IsIncreaseInsurance(inFirst, inNow) && (inCreaseCheck == true || allCheck == true)) { String strPre = InsuranceRecordType.E_PREGNANCY_SUCKLE.ToString(); List<Ins_InsuranceRecord> lstInsPre = lstInsRecordProfile.Where(ins => ins.InsuranceType == strPre && ins.DateEnd > dateFrom && ins.DateEnd < dateTo).ToList(); String strSickLong = InsuranceRecordType.E_SICK_LONG.ToString(); String strSickShort = InsuranceRecordType.E_SICK_SHORT.ToString(); List<Ins_InsuranceRecord> lstInsSick = lstInsRecordProfile.Where(ins => ins.InsuranceType == strSickLong || ins.InsuranceType == strSickShort && ins.DayCount > 30 && ins.DateEnd > dateFrom && ins.DateEnd < dateTo).ToList(); #region Tăng LĐ //lay ds hop dong cua NV var contractProfile = contractSocials.Where(p => p.ProfileID == profile.ID).OrderBy(p => p.DateStart).FirstOrDefault(); Hre_Contract contract = null; //lay hd moi nhat cua nv nằm trong khoảng 16-[N-1] đến 15-[N] if (contractProfile != null && dateFromNewHONDA <= contractProfile.DateStart && contractProfile.DateStart <= dateToNewHONDA) { contract = contractProfile; } #region Tăng do Nghỉ 14 ngày đi làm lại //Kiểm tra Tháng N-1 có ký HD ? //tang moi lao dong (Tháng N-1 ký HD nhưng chưa đóng BH do nghỉ hơn 14 ngày , Tháng N đóng bảo hiểm => thuoc loại tăng mới LĐ if (inFirst.IsDecreaseWorkingDays.HasValue && inFirst.IsDecreaseWorkingDays.Value) { var contractDatefrom = new DateTime(dateFrom.Year, dateFrom.Month, 1); var contractDateTo = contractDatefrom.AddMonths(1).AddDays(-1); if (contractProfile != null && contractDatefrom <= contractProfile.DateStart && contractProfile.DateStart <= contractDateTo) { //ký hợp đồng tháng trước SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_LD.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); } else { //tang do nghỉ 14 ngày đi làm lại SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_LEAVE_14WORKINGDAYS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); } } #endregion else if (contract != null) { //lay hd moi nhat cua nv nằm trong khoảng 16-[N-1] đến 15-[N]=>tăng lao động SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_LD.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); } #endregion #region Tăng Thai Sản else if (HasPregnant(dateTo.AddMonths(-1), lstleavePregByProfile, lstInsRecordPregByProfile)) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_TS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); } #endregion #region Tăng Bệnh else if (lstInsSick.Count() > 0 /* && allCheck == false*/) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_BENH.ToString(), inFirst.MoneySocialInsurance, inNow.MoneySocialInsurance, monthYear, orgStructures, "I.1"); } #endregion #region Honda - Tăng Đóng BHTN else if ((!inFirst.IsUnEmpInsurance.HasValue || (inFirst.IsUnEmpInsurance.HasValue && !inFirst.IsUnEmpInsurance.Value)) && inNow.IsUnEmpInsurance.HasValue && inNow.IsUnEmpInsurance.Value) { var contractUnEmpProfile = contractUnEmps.Where(p => p.ProfileID == profile.ID).OrderBy(p => p.DateStart).FirstOrDefault(); if (contractUnEmpProfile != null && dateFrom <= contractUnEmpProfile.DateStart && contractUnEmpProfile.DateStart <= dateTo) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_BHTN.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.2"); } } #endregion #region Tăng BHYT else if ((!inFirst.IsHealthInsurance.HasValue || (inFirst.IsHealthInsurance.HasValue && !inFirst.IsHealthInsurance.Value)) && inNow.IsHealthInsurance.HasValue && inNow.IsHealthInsurance.Value) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_BHYT.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); } #endregion } #endregion #region giam if (IsDecreaseInsurance(inFirst, inNow) && (descreaseCheck == true || allCheck == true)) { String strPre = InsuranceRecordType.E_PREGNANCY_SUCKLE.ToString(); List<Ins_InsuranceRecord> lstInsPre = lstInsRecordProfile.Where(ins => ins.InsuranceType == strPre && ins.DateEnd > dateFrom && ins.DateStart < dateTo).ToList(); String strSickLong = InsuranceRecordType.E_SICK_LONG.ToString(); String strSickShort = InsuranceRecordType.E_SICK_SHORT.ToString(); List<Ins_InsuranceRecord> lstInsSick = lstInsRecordProfile.Where(ins => ins.InsuranceType == strSickLong && ins.InsuranceType == strSickShort && ins.DayCount > 30 && ins.DateEnd > dateFrom && ins.DateEnd < dateTo).ToList(); if (inFirst.IsDecreaseWorkingDays == null) { inFirst.IsDecreaseWorkingDays = false; } if (inNow.IsDecreaseWorkingDays == null) { inNow.IsDecreaseWorkingDays = false; } #region giam //neu NV nghỉ từ 16 tháng [N-1] đến 15 tháng N => Tạm Hoãn hoặc nghỉ luôn if (profile.DateQuit.HasValue && dateFrom <= profile.DateQuit && profile.DateQuit <= dateTo) { #region Set trạng thái trả thẻ var statusGiam_BHYT = string.Empty; if (profile.ReceiveHealthIns.HasValue && profile.ReceiveHealthIns.Value) { // Giam LD tra the statusGiam_BHYT = TypeInsuranceD02TS.E_GIAM_LD_BHYT.ToString(); } else if ((!profile.ReceiveHealthIns.HasValue || profile.ReceiveHealthIns == false)) { // Giảm Lao Động Không Trả Thẻ statusGiam_BHYT = TypeInsuranceD02TS.E_GIAM_LD_NOT_BHYT.ToString(); } else { // Giảm LĐ statusGiam_BHYT = TypeInsuranceD02TS.E_GIAM_LD.ToString(); } //HonDa statusGiam_BHYT = TypeInsuranceD02TS.E_GIAM_LD_BHYT.ToString(); #endregion if (profile.StopWorkType == EnumDropDown.StopWorkType.E_SUSPENSE.ToString()) { //tạm hoãn SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_QUIT_SUSPENSE.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } else if (!string.IsNullOrEmpty(statusGiam_BHYT)) { #region Nghỉ Việc Sau Khi Nghỉ Sinh Con if (HasPregnant(dateTo.AddMonths(-1), lstleavePregByProfile, lstInsRecordPregByProfile)) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_TS_QUIT.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } else { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), statusGiam_BHYT, inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion } } #region Giam Thai San else if (HasPregnant(dateTo, lstleavePregByProfile, lstInsRecordPregByProfile) && (!profile.DateQuit.HasValue || profile.DateQuit.Value > dateTo)) { if (lstProfilePregnant == null) { //chỉ lay 1 lần #region lay ins_ProfileInsuranceMonthly de tinh thai san 1 nam lien ke var dtPreDateCheck = dateFrom.AddYears(-1); //Lấy Ds Ins_ProfileInsuranceMonthly 12 tháng trước so với tháng kiểm tra (de tinh thai san 1 nam lien ke) lstProfilePregnant = lstProfileInsuranceMonthlyInDb.Where(s => s.MonthYear.HasValue && (dtPreDateCheck <= s.MonthYear.Value && s.MonthYear <= dateFrom)).ToList(); #endregion } // Nhân viên đóng bảo hiểm đủ 6 tháng trong vòng 12 tháng liền kề var insCount = lstProfilePregnant.Where(p => p.ProfileID == profile.ID && p.IsSocialInsurance.HasValue && p.IsSocialInsurance.Value).Count(); if (insCount >= 6) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_TS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } else { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_LEAVE_14WORKINGDAYS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } } #endregion #region Giam benh else if (lstInsSick.Count() > 0 /*&& allCheck == false*/) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_BENH.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion #region giam do Nghỉ 14 ngày đi làm lại // tháng N là false (hoac null) => Giảm do nghỉ >= 14 ngày else if (inNow.IsDecreaseWorkingDays.HasValue && inNow.IsDecreaseWorkingDays.Value) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_LEAVE_14WORKINGDAYS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion #endregion }//ket thuc giảm #endregion #region Thay doi luong else if (inFirst != null && inFirst.SalaryInsurance != inNow.SalaryInsurance) { //-------Giam luong if (inFirst != null && inFirst.SalaryInsurance > inNow.SalaryInsurance) { #region giảm lương và thay đổi chức danh nghề if (inFirst.JobName != inNow.JobName) { //giảm lương và thay đổi chức danh nghề SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM_LUONG_CHANGEJOBNAME.ToString(), TypeInsuranceD02TS.E_GIAM_LUONG_CHANGEJOBNAME.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "IV."); } #endregion #region Giảm Lương else { //giảm lương SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_LUONG.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "IV."); } #endregion } //------------Tang luong----------- else if (inFirst != null && inFirst.SalaryInsurance < inNow.SalaryInsurance) { #region tăng lương và thay đổi chức danh nghề if (inFirst.JobName != inNow.JobName) { //tăng lương và thay đổi chức danh nghề SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG_LUONG_CHANGEJOBNAME.ToString(), TypeInsuranceD02TS.E_TANG_LUONG_CHANGEJOBNAME.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "III."); } #endregion #region tăng lương else { //tăng lương SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_LUONG.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "III."); } #endregion } } #endregion #region Thay đổi chức danh nghề (không đổi lương) //Thay đổi chức danh nghề (không đổi lương) if (inFirst != null && inNow != null && inFirst.SalaryInsurance == inNow.SalaryInsurance && inFirst.JobName != inNow.JobName) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_CHANGEJOBNAME.ToString(), TypeInsuranceD02TS.E_CHANGEJOBNAME.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "V."); } #endregion #region Trường Hợp đặc biệt (Honda) #region Tháng N-1 nghỉ Thai Sản và tháng N nghỉ luon =>Nghỉ luôn sau thai sản if (inFirst != null && inFirst.IsPregnant.HasValue && inFirst.IsPregnant.Value && inNow != null && (inNow.IsPregnant == null || inNow.IsPregnant.Value == false) && profile.DateQuit.HasValue && dateFrom <= profile.DateQuit && profile.DateQuit <= dateTo) { //>Nghỉ luôn sau thai sản SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_TS_QUIT.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #region Tháng N-1 nghỉ Thai Sản và tháng N nghỉ hơn 14 ngày => Nghỉ 14 ngày sau thai sản else if (inNow != null && inNow.IsDecreaseWorkingDays.HasValue && inNow.IsDecreaseWorkingDays.Value && HasPregnant(dateTo.AddMonths(-1), lstleavePregByProfile, lstInsRecordPregByProfile) && (inNow.IsPregnant == null || inNow.IsPregnant.Value == false)) { //Giảm do nghỉ hơn 14 ngày sau thai sản SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_PREGNANT_14WORKINGDAYS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion #endregion #region tháng N-1 giảm 14 ngày và tháng này nghỉ việc if (profile != null && inFirst != null && inNow != null && !HasPregnant(dateTo.AddMonths(-1), lstleavePregByProfile, lstInsRecordPregByProfile) && inFirst.IsDecreaseWorkingDays.HasValue && inFirst.IsDecreaseWorkingDays.Value && profile.DateQuit.HasValue && dateFrom <= profile.DateQuit && profile.DateQuit <= dateTo) { //Nghỉ việc mà trước đó nghỉ >=14 ngày SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_LEAVE_PREMONTH_14WORKINGDAYS.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion #region Nghiệp Vụ Chuyển Nơi Đóng BH (Honda) if (inFirst != null && inNow != null && (inFirst.SocialInsPlaceID.HasValue && inFirst.SocialInsPlaceID.Value != Guid.Empty) && (inNow.SocialInsPlaceID.HasValue && inNow.SocialInsPlaceID.Value != Guid.Empty) && (inFirst.SocialInsPlaceID.Value != inNow.SocialInsPlaceID.Value)) { //thang truoc giam do chuyen noi dong bao hiem profile.JobName = string.Copy(inFirst.JobName); SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_LD_CHANGE_INSPLACE.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I.1"); //thang check tang do chuyen noi dong bao hiem profile.JobName = string.Copy(inNow.JobName); SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_LD_CHANGE_INSPLACE.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II.1"); } #endregion #endregion } }//ket thuc foreach profile } //duyet hashtable => danh sach nv theo loai bao hiem (tangLd,tangBHXH,.....) var result = new List<Ins_InsuranceReportD02Entity>(); var tang = TypeInsuranceD02TS.E_TANG.ToString(); var giam = TypeInsuranceD02TS.E_GIAM.ToString(); var tangLD = TypeInsuranceD02TS.E_GIAM_LD.ToString(); foreach (DictionaryEntry entry in htbData) { var lst = new List<Ins_InsuranceReportD02Entity>(); lst = (List<Ins_InsuranceReportD02Entity>)entry.Value; var d02Entity = lst.FirstOrDefault(p => p.OrderGroup != null); var orderGroup = string.Empty; if (d02Entity != null) { orderGroup = d02Entity.OrderGroup; } var proName = entry.Key.ToString(); if (!string.IsNullOrEmpty(proName)) { proName = GetDescription(proName); } var title = new Ins_InsuranceReportD02Entity() { ProfileID = Guid.Empty, ProfileName = proName, OrderGroup = orderGroup, CodeEmp = orderGroup, BOLD = true.ToString() }; lst.Insert(0, title); if (lst.Any(p => p.Status1 == tang) && !result.Any(p => p.Status == tangLD) && !result.Any(p => p.ProfileName == "Tăng")) { lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileID = Guid.Empty, ProfileName = "Tăng", CodeEmp = "I", OrderGroup = "I" }); } if (lst.Any(p => p.Status1 == giam) && !result.Any(p => p.ProfileName == "Giảm")) { lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileID = Guid.Empty, ProfileName = "Giảm", CodeEmp = "II", OrderGroup = "II" }); } //if (lst.Any(p => p.Status == TypeInsuranceD02TS.E_GIAM_LD.ToString()) && !result.Any(p => p.Status1 == giam) && !result.Any(p => p.ProfileName == "Giảm Lao Động")) //{ // lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileName = "Giảm Lao Động", CodeEmp = "II", OrderGroup = "II" }); //} result.AddRange(lst); } result = result.OrderBy(p => p.OrderGroup).ToList(); #region compute D02 var periodIns = EnumDropDown.GetEnumDescription<PeriodInsurance>(PeriodInsurance.GETTEMP); var d02 = new Ins_ReportD02Entity { DateReport = DateTime.Now, SociaInsCountPro = sociaInsCountPro, SociaInsTotalSalary = sociaInsTotalSalary, HealthInsCountPro = healthInsCountPro, HealthInsTotalSalary = healthInsTotalSalary, UnEmpInsCountPro = unEmpInsCountPro, UnEmpInsTotalSalary = unEmpInsTotalSalary, MaxSalary = maxSalary, MinSalary = minSalary, Type = PeriodInsurance.GETTEMP.ToString() }; //luu D02 ComputeD02(result, d02, monthYear, dateFrom, dateTo, periodIns); #endregion return result; }
public List<Ins_InsuranceReportD03Entity> LoadDataD03(bool? all, bool? increase, bool? descrease, DateTime? dtMonthYear, string orgIds, string searchNoteType, string searchStatus, string codeEmp, List<Guid> workPlaceIDs, string userLogin) { var monthYear = dtMonthYear ?? DateTime.Now; DateTime dateFrom = monthYear.AddMonths(-1); dateFrom = new DateTime(dateFrom.Year, dateFrom.Month, InsuranceServices.PeriodInsuranceDayPreMonthDefault); DateTime dateTo = new DateTime(monthYear.Year, monthYear.Month, InsuranceServices.PeriodInsuranceDayCurrentMonthDefault); var status = string.Empty; var allCheck = all ?? false; var inCreaseCheck = increase ?? false; var descreaseCheck = descrease ?? false; //lay ds Ins_ProfileInsuranceMonthly //List<object> listInsMonthlyObj = new List<object>(); //listInsMonthlyObj.Add(orgs); //listInsMonthlyObj.Add(monthYear); //var profileInsMonthlys = GetData<Hre_ProfileEntity>(listInsMonthlyObj, ConstantSql.hrm_ins_sp_get_ProfileInsMonthly, ref status); Hashtable htbData = new Hashtable(); var d02Reports = new List<Ins_InsuranceReportD02Entity>(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var profileInsMonthly = new Ins_ProfileInsuranceMonthlyRepository(unitOfWork); var orgStructureRepo = new Cat_OrgStructureRepository(unitOfWork); var insInsuranceRecord = new Ins_InsuranceRecordRepository(unitOfWork); var hre_ContractRepo = new Hre_ContractRepository(unitOfWork); var cat_ContractTypeRepo = new Cat_ContractTypeRepository(unitOfWork); var att_LeaveDayRepo = new Att_LeavedayRepository(unitOfWork); #region Lấy DS Ins_ProfileInsuranceMonthly (lấy tất cả) var listInsMonthlyObj = new List<object> { orgIds, null, null, 1, int.MaxValue - 1 }; if (Common.UseDataBaseName == DATABASETYPE.SQLSERVER.ToString()) { listInsMonthlyObj.Add("id"); } var lstProfileInsuranceMonthlyInDb = GetData<Ins_ProfileInsuranceMonthlyEntity>(listInsMonthlyObj, ConstantSql.hrm_ins_sp_get_ProfileInsMonthly, userLogin, ref status); #endregion //get profiles trong Ins_ProfileInsuranceMonthly theo thang kiểm tra var lstProfile = lstProfileInsuranceMonthlyInDb.Where(s => s.MonthYear.HasValue && (s.MonthYear.Value.Year == dateFrom.Year || s.MonthYear.Value.Year == dateTo.Year) && (s.MonthYear.Value.Month == dateFrom.Month || s.MonthYear.Value.Month == dateTo.Month)) .ToList().Translate<Ins_ProfileInsuranceMonthly>(); #region lay ins_ProfileInsuranceMonthly de tinh thai san 1 nam lien ke var dtPreDateCheck = dateFrom.AddYears(-1); //Lấy Ds Ins_ProfileInsuranceMonthly 12 tháng trước so với tháng kiểm tra (de tinh thai san 1 nam lien ke) var lstProfilePregnant = lstProfileInsuranceMonthlyInDb.Where(s => s.MonthYear.HasValue && (dtPreDateCheck <= s.MonthYear.Value && s.MonthYear <= dateFrom)).ToList(); #endregion //var lstProfile = profileInsMonthly.FindBy(s => s.IsDelete == null && s.MonthYear.HasValue // && (s.MonthYear.Value.Year == dateFrom.Year || s.MonthYear.Value.Year == dateTo.Year) // && (s.MonthYear.Value.Month == dateFrom.Month || s.MonthYear.Value.Month == dateTo.Month)).ToList(); //get InsuranceRecord (Chứng từ bảo hiểm) //var lstInsuranceRecord = insInsuranceRecord.GetAll().Where(p => p.IsDelete == null).ToList();// lay tat ca chứng từ bảo hiểm (sau nay sửa lai sau) #region Lay ds Phong Ban var orgs = GetDataNotParam<Cat_OrgStructure>(ConstantSql.hrm_cat_sp_get_AllOrg, userLogin, ref status).ToList(); List<Cat_OrgStructureEntity> orgStructures = orgs.Translate<Cat_OrgStructureEntity>(); // var orgs = orgStructureRepo.GetAll(); // var orgIds = orgs.Select(p => p.ID).ToList(); #endregion #region Lấy profile theo phong ban List<object> listObj = new List<object>(); listObj.Add(orgIds); listObj.Add(string.Empty); listObj.Add(string.Empty); var profilebyOrgs = GetData<Hre_ProfileEntity>(listObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, userLogin, ref status); if (profilebyOrgs != null) { profilebyOrgs = profilebyOrgs.Where(p => p.DateHire != null && (p.DateQuit == null || p.DateQuit > dateFrom) && p.DateHire < monthYear).ToList(); } if (!string.IsNullOrEmpty(codeEmp)) { profilebyOrgs = profilebyOrgs.Where(p => p.CodeEmp == codeEmp).ToList(); } var profileIds = profilebyOrgs.Select(p => p.ID).ToList(); #endregion #region lay ds hop dong đã ký so với tháng chọn (Loại HD có đóng BH) //var contractTypeObjs = cat_ContractTypeRepo.FindBy(p => p.IsDelete == null).ToList(); ////Ds loại HĐ đóng BHXH //var contractSocialTypeIDObjs = contractTypeObjs.Where(p => p.IsSocialInsurance.HasValue && p.IsSocialInsurance.Value).ToList(); ////Ds loại HĐ đóng BHTN //var contractUnEmpTypeIDObjs = contractTypeObjs.Where(p => p.IsUnEmployInsurance.HasValue && p.IsUnEmployInsurance.Value).ToList(); //var contracts = new List<Hre_Contract>(); //var contractSocials = new List<Hre_Contract>(); //var contractUnEmps = new List<Hre_Contract>(); //if (contractSocialTypeIDObjs.Any()) //{ // var contractSocialTypeIds = contractSocialTypeIDObjs.Select(p => p.ID).ToList(); // var contractUnEmpTypeIds = contractUnEmpTypeIDObjs.Select(p => p.ID).ToList(); // //Ds Hop Đồng của cac NV // contracts = hre_ContractRepo.FindBy(p => p.IsDelete == null && profileIds.Contains(p.ProfileID)).OrderBy(p => p.DateStart).ToList(); // //Ds Hop đồng thuộc loại đóng BHXH // contractSocials = contracts.Where(p => contractSocialTypeIds.Contains(p.ContractTypeID)).OrderBy(p => p.DateStart).ToList(); // //Ds Hop đồng thuộc loại đóng BHTN // contractUnEmps = contracts.Where(p => contractUnEmpTypeIds.Contains(p.ContractTypeID)).OrderBy(p => p.DateStart).ToList(); //} #endregion #region lấy Leaveday //string E_APPROVED = LeaveDayStatus.E_APPROVED.ToString(); //string E_PREGNANCY_SUCKLE = InsuranceRecordType.E_PREGNANCY_SUCKLE.ToString(); //var lstLeaveday = att_LeaveDayRepo.FindBy(m => m.IsDelete == null && m.Status == E_APPROVED && m.DateStart <= dateTo && m.DateEnd >= dateFrom && m.Cat_LeaveDayType != null // && m.Cat_LeaveDayType.InsuranceType == E_PREGNANCY_SUCKLE && profileIds.Contains(m.ProfileID)).ToList(); #endregion //List<object> salInsuranceSalaryParams = new List<object>(); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(orgIds); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(null); //salInsuranceSalaryParams.Add(1); //salInsuranceSalaryParams.Add(50000); //var lstInsuranceSalaryByProfile = GetData<Sal_InsuranceSalary>(salInsuranceSalaryParams, ConstantSql.hrm_sal_sp_get_InsuranceSalary, ref status) // .Where(p => p.DateEffect <= dateTo && profileIds.Contains(p.ProfileID ?? Guid.Empty) && p.InsuranceAmount.HasValue).ToList(); if (workPlaceIDs != null && workPlaceIDs.Any()) { workPlaceIDs = workPlaceIDs.Where(p => p != null && p != Guid.Empty).ToList(); if (workPlaceIDs.Any()) { lstProfile = lstProfile.Where(p => workPlaceIDs != null && workPlaceIDs.Count > 0 && workPlaceIDs.Contains(p.WorkPlaceID ?? Guid.Empty)).ToList(); } } // workPlaceID = workPlaceID.Where(p => p != null).ToList(); foreach (var profile in profilebyOrgs) { //lay các chung tu bao hiem cua nv // List<Ins_InsuranceRecord> lstInsRecordProfile = lstInsuranceRecord.Where(rec => rec.ProfileID == profile.ID).ToList(); // var lstleavePregByProfile = lstLeaveday.Where(rec => rec.ProfileID == profile.ID).ToList(); // var lstInsRecordPregByProfile = lstInsRecordProfile.Where(m => m.InsuranceType == E_PREGNANCY_SUCKLE).ToList(); var profileMonthlys = lstProfile.Where(p => p.ProfileID == profile.ID).OrderBy(p => p.MonthYear).ToList(); var inFirst = profileMonthlys.FirstOrDefault(p => p.MonthYear.HasValue && p.MonthYear.Value.Month == dateFrom.Month); var inNow = profileMonthlys.LastOrDefault(p => p.MonthYear.HasValue && p.MonthYear.Value.Month == dateTo.Month); if (inFirst == null) { inFirst = new Ins_ProfileInsuranceMonthly { IsHealthInsurance = false, IsSocialInsurance = false, IsUnEmpInsurance = false }; } if (inNow != null) { profile.JobName = inNow.JobName; #region set Phu cap if (inNow != null) { profile.Allowance1 = inNow.Allowance1; profile.Allowance2 = inNow.Allowance2; profile.Allowance3 = inNow.Allowance3; profile.Allowance4 = inNow.Allowance4; } #endregion #region tang if (IsIncreaseInsurance(inFirst, inNow) && (inCreaseCheck == true || allCheck == true)) { #region Tăng BHYT if ((!inFirst.IsHealthInsurance.HasValue || (inFirst.IsHealthInsurance.HasValue && !inFirst.IsHealthInsurance.Value)) && inNow.IsHealthInsurance.HasValue && inNow.IsHealthInsurance.Value) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_TANG.ToString(), TypeInsuranceD02TS.E_TANG_BHYT.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "I"); } #endregion } #endregion #region giam if (IsDecreaseInsurance(inFirst, inNow) && (descreaseCheck == true || allCheck == true)) { #region giam if ((inFirst.IsHealthInsurance.HasValue && inFirst.IsHealthInsurance.Value) && !inNow.IsHealthInsurance.HasValue || (inNow.IsHealthInsurance.HasValue && !inNow.IsHealthInsurance.Value)) { SetHashtableData(htbData, profile, ref d02Reports, TypeInsuranceD02TS.E_GIAM.ToString(), TypeInsuranceD02TS.E_GIAM_BHYT.ToString(), inFirst.SalaryInsurance, inNow.SalaryInsurance, monthYear, orgStructures, "II"); } #endregion } #endregion } } } //duyet hashtable => danh sach nv theo loai bao hiem (tangLd,tangBHXH,.....) var result = new List<Ins_InsuranceReportD02Entity>(); var tang = TypeInsuranceD02TS.E_TANG.ToString(); var giam = TypeInsuranceD02TS.E_GIAM.ToString(); var tangLD = TypeInsuranceD02TS.E_GIAM_LD.ToString(); foreach (DictionaryEntry entry in htbData) { var lst = new List<Ins_InsuranceReportD02Entity>(); lst = (List<Ins_InsuranceReportD02Entity>)entry.Value; // lst = lst.OrderBy(p => p.STT).ToList(); var d02Entity = lst.FirstOrDefault(p => p.OrderGroup != null); var orderGroup = string.Empty; if (d02Entity != null) { orderGroup = d02Entity.OrderGroup; } var proName = entry.Key.ToString(); if (!string.IsNullOrEmpty(proName)) { proName = GetDescription(proName); } var title = new Ins_InsuranceReportD02Entity() { ProfileID = Guid.Empty, ProfileName = proName, OrderGroup = orderGroup, CodeEmp = orderGroup, BOLD = true.ToString() }; lst.Insert(0, title); if (lst.Any(p => p.Status1 == tang) && !result.Any(p => p.Status == tangLD) && !result.Any(p => p.ProfileName == "Tăng")) { lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileID = Guid.Empty, ProfileName = "Tăng", CodeEmp = "I", OrderGroup = "I" }); } if (lst.Any(p => p.Status1 == giam) && !result.Any(p => p.ProfileName == "Giảm")) { lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileID = Guid.Empty, ProfileName = "Giảm", CodeEmp = "II", OrderGroup = "II" }); } //if (lst.Any(p => p.Status == TypeInsuranceD02TS.E_GIAM_LD.ToString()) && !result.Any(p => p.Status1 == giam) && !result.Any(p => p.ProfileName == "Giảm Lao Động")) //{ // lst.Insert(0, new Ins_InsuranceReportD02Entity { ProfileName = "Giảm Lao Động", CodeEmp = "II", OrderGroup = "II" }); //} result.AddRange(lst); } result = result.Where(p => p.ProfileName != "Tăng Lao Động").ToList(); result = result.Where(p => p.ProfileName != "Giảm BHYT").ToList(); //var result = LoadData(all, increase, descrease, dtMonthYear, orgIds, searchNoteType, searchStatus, codeEmp, workPlaceIDs); //var E_TANG_BHYT = TypeInsuranceD02TS.E_TANG_BHYT.ToString(); //var E_GIAM_BHYT = TypeInsuranceD02TS.E_GIAM_BHYT.ToString(); //result = result.Where(p => p.Status == E_TANG_BHYT || p.Status == E_GIAM_BHYT).ToList(); var listD03 = new List<Ins_InsuranceReportD03Entity>(); foreach (var item in result) { var d03 = item.Copy<Ins_InsuranceReportD03Entity>(); listD03.Add(d03); } return listD03.OrderBy(p => p.OrderGroup).ToList(); }
public void SubmitStatus(string selectedIds, string status) { using (var context = new VnrHrmDataContext()) { string statuss = string.Empty; var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repo = new Hre_ContractRepository(unitOfWork); List<Guid> lstContractIds = selectedIds.Split(',').Select(x => Guid.Parse(x)).ToList(); var lstContracts = repo.FindBy(m => m.ID != null && lstContractIds.Contains(m.ID)).ToList(); foreach (var Contract in lstContracts) { Contract.Status = status; } repo.SaveChanges(); } }