diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index 2821f128..e05f2296 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -415,7 +415,7 @@ public class InsuranceListApplication: IInsuranceListApplication { var dateOfBirth = employee.DateOfBirthGr.ToFarsi(); var dateOfIssue = employee.DateOfIssueGr.ToFarsi(); - var leftDate = employee.LeftWorkDateGr != null ? employee.LeftWorkDateGr.Value.AddDays(-1) : new DateTime(); + var leftDate = employee.LeftWorkDateGr?.AddDays(-1) ?? new DateTime(); bool isManager = employee.JobId is 10 or 16 or 17 or 18 or 3498; @@ -452,9 +452,22 @@ public class InsuranceListApplication: IInsuranceListApplication var leftWorkFa = workingDays.hasLeftWorkInMonth ? employee.LeftWorkDateGr.ToFarsi(): ""; var startWorkFa = employee.StartWorkDateGr.ToFarsi(); //به دست آوردن دستمزد روزانه با توجه به اینکه کارگاه مشاغل مقطوع است یا خیر - var dailyWage = searchModel.FixedSalary ? - Convert.ToDouble(GetDailyWageFixedSalary(searchModel.Year, workshopId, employee.EmployeeId, startDateGr, endDateGr, employee.JobId, searchModel.Population, searchModel.InsuranceJobId)) - : ComputeDailyWage(yearlysaleries.DayliWage, employee.EmployeeId, workshopId, searchModel.Year); + + double dailyWage = 0; + if (searchModel.FixedSalary) + { + var res = GetDailyWageFixedSalary(searchModel.Year, workshopId, employee.EmployeeId, startDateGr, + endDateGr, employee.JobId, searchModel.Population, searchModel.InsuranceJobId); + dailyWage = res ?? 0; + + } + else + { + var res = ComputeDailyWage(yearlysaleries.DayliWage, employee.EmployeeId, workshopId, searchModel.Year); + dailyWage = res; + } + + //بدست آوردن پایه سنوات var baseYears = _insuranceListRepositpry.GetEmployeeInsuranceBaseYear(employee.EmployeeId, workshopId, workingDays.countWorkingDays, startDateGr, endDateGr,workingDays.startWork, workingDays.endWork, workingDays.hasLeftWorkInMonth); @@ -511,7 +524,7 @@ public class InsuranceListApplication: IInsuranceListApplication .FirstOrDefault(e => e.EmployeeId == employee.EmployeeId); //مزیای عیر مشمول لیست قبل var benefitsIncludedNonContinuous = - employeeListData != null ? employeeListData.BenefitsIncludedNonContinuous : 0; + employeeListData?.BenefitsIncludedNonContinuous ?? 0; if (workshop.InsuranceCheckoutFamilyAllowance && employeeHasCheckout && !isManager) { @@ -619,7 +632,7 @@ public class InsuranceListApplication: IInsuranceListApplication }; - }); + }).ToList(); Console.WriteLine("New Compute : " + watch.Elapsed); watch.Stop(); @@ -1661,93 +1674,138 @@ public class InsuranceListApplication: IInsuranceListApplication private double? GetDailyWageFixedSalary(string year, long workshopId,long employeeId,DateTime? startDateGr, DateTime? endDateGr, long jobId, string population, long? insuranceJobId) { + double? result = 0; //اگر مشاغل مقطوع بود و شغلش کارفرما بود // در جدول لیست بیمه قبلی چک شود - if (jobId == 10) //کارفرما + try { - InsuranceListSearchModel searchModel = new InsuranceListSearchModel(); - var workshop = _workShopRepository.GetDetails(workshopId); - if (workshop.FixedSalary) - + if (workshopId == 318 && year == "1403") { + double percent = 0; + switch (jobId) + { + case 39: + percent = 1.75; + return 4180000; + break; + case 466: + percent = 1.6; + return 3822000; + break; + case 1192 or 398 or 8: + percent = 1.5; + return 3583000; + break; + } + + //var dateSaleryviewModel = new DateSalarySearchModel(); + //dateSaleryviewModel.StartDateGr = startDateGr; + //dateSaleryviewModel.EndDateGr = endDateGr; + //var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); + //// && _dateSalary.Id >0 + //if (_dateSalary != null) + //{ + // var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); + // dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; + // dateSaleryItemviewModel.Percent = percent; + // var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); + // if (dateSalaryItem != null) + // result = dateSalaryItem[0].Salary; + //} + } + if (jobId == 10) //کارفرما + { + InsuranceListSearchModel searchModel = new InsuranceListSearchModel(); + var workshop = _workShopRepository.GetDetails(workshopId); + if (workshop.FixedSalary) + + { var inJob = _insuranceJobItemRepository .GetInsuranceJobItemByInsuranceJobId((long)workshop.InsuranceJobId); if (workshop.Population == "MoreThan500") { var max = inJob.MaxBy(x => x.PercentageMoreThan); - var dateSaleryviewModel = new DateSalarySearchModel(); - dateSaleryviewModel.StartDateGr = startDateGr; - dateSaleryviewModel.EndDateGr = endDateGr; - var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); - if (_dateSalary != null) - { - var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); - dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; - dateSaleryItemviewModel.Percent = max.PercentageMoreThan; - var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); - if (dateSalaryItem != null) - result = dateSalaryItem[0].Salary; - } + var dateSaleryviewModel = new DateSalarySearchModel(); + dateSaleryviewModel.StartDateGr = startDateGr; + dateSaleryviewModel.EndDateGr = endDateGr; + var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); + if (_dateSalary != null) + { + var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); + dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; + dateSaleryItemviewModel.Percent = max.PercentageMoreThan; + var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); + if (dateSalaryItem != null) + result = dateSalaryItem[0].Salary; + } } else { - var max = inJob.MaxBy(x => x.PercentageLessThan); - var dateSaleryviewModel = new DateSalarySearchModel(); - dateSaleryviewModel.StartDateGr = startDateGr; - dateSaleryviewModel.EndDateGr = endDateGr; - var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); - if (_dateSalary != null) - { - var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); - dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; - dateSaleryItemviewModel.Percent = max.PercentageLessThan; - var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); - if (dateSalaryItem != null) - result = dateSalaryItem[0].Salary; - } + var max = inJob.MaxBy(x => x.PercentageLessThan); + var dateSaleryviewModel = new DateSalarySearchModel(); + dateSaleryviewModel.StartDateGr = startDateGr; + dateSaleryviewModel.EndDateGr = endDateGr; + var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); + if (_dateSalary != null) + { + var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); + dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; + dateSaleryItemviewModel.Percent = max.PercentageLessThan; + var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); + if (dateSalaryItem != null) + result = dateSalaryItem[0].Salary; + } } - - + + + } + //var insuransList = _insuranceListRepositpry.GetInsuranceListByWorkshopIdAndYear(workshopId, year); + //var employeeInsurancListData = _employeeInsurancListDataRepository.GetEmployeeInsurancListDataByEmployeeIdAndInsuranceListId(employeeId, insuransList.Id); + //if (employeeInsurancListData != null ) + //{ + // result = employeeInsurancListData.DailyWage; + //} + } + else + { + + var searchModel = new InsuranceJobItemSearchModel(); + searchModel.InsuranceJobId = (long)insuranceJobId; + var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId); + + if (JobItem != null && JobItem.Id != 0) + { + double percent = 0; + if (population == "MoreThan500") + percent = JobItem.PercentageMoreThan; + else if (population == "LessThan500") + percent = JobItem.PercentageLessThan; + + var dateSaleryviewModel = new DateSalarySearchModel(); + dateSaleryviewModel.StartDateGr = startDateGr; + dateSaleryviewModel.EndDateGr = endDateGr; + var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); + // && _dateSalary.Id >0 + if (_dateSalary != null) + { + var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); + dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; + dateSaleryItemviewModel.Percent = percent; + var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); + if (dateSalaryItem != null) + result = dateSalaryItem[0].Salary; + } + } + + } - //var insuransList = _insuranceListRepositpry.GetInsuranceListByWorkshopIdAndYear(workshopId, year); - //var employeeInsurancListData = _employeeInsurancListDataRepository.GetEmployeeInsurancListDataByEmployeeIdAndInsuranceListId(employeeId, insuransList.Id); - //if (employeeInsurancListData != null ) - //{ - // result = employeeInsurancListData.DailyWage; - //} } - else + catch (Exception) { - var searchModel = new InsuranceJobItemSearchModel(); - searchModel.InsuranceJobId = (long)insuranceJobId; - var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId); - - if (JobItem != null && JobItem.Id != 0) - { - double percent = 0; - if (population == "MoreThan500") - percent = JobItem.PercentageMoreThan; - else if (population == "LessThan500") - percent = JobItem.PercentageLessThan; - - var dateSaleryviewModel = new DateSalarySearchModel(); - dateSaleryviewModel.StartDateGr = startDateGr; - dateSaleryviewModel.EndDateGr = endDateGr; - var _dateSalary = _dateSalaryRepository.GetDateSalaryViewModel(dateSaleryviewModel); - // && _dateSalary.Id >0 - if (_dateSalary != null) - { - var dateSaleryItemviewModel = new DateSalaryItemSearchModel(); - dateSaleryItemviewModel.DateSalaryId = _dateSalary.Id; - dateSaleryItemviewModel.Percent = percent; - var dateSalaryItem = _dateSalaryItemRepository.Search(dateSaleryItemviewModel); - if (dateSalaryItem != null) - result = dateSalaryItem[0].Salary; - } - } + result = 0; } return result; } diff --git a/ServiceHost/InsuranceList/318/1404_01/DSKKAR00.dbf b/ServiceHost/InsuranceList/318/1404_01/DSKKAR00.dbf new file mode 100644 index 00000000..84f179c9 Binary files /dev/null and b/ServiceHost/InsuranceList/318/1404_01/DSKKAR00.dbf differ diff --git a/ServiceHost/InsuranceList/318/1404_01/DSKWOR00.dbf b/ServiceHost/InsuranceList/318/1404_01/DSKWOR00.dbf new file mode 100644 index 00000000..63ce7308 Binary files /dev/null and b/ServiceHost/InsuranceList/318/1404_01/DSKWOR00.dbf differ