diff --git a/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs b/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs index 97a42b0e..7a0a3acc 100644 --- a/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs +++ b/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs @@ -17,7 +17,7 @@ public interface IYearlySalaryRepository : IRepository void TestDayliFeeCompute(); List GetYears(); List GetYearlySalary(); - MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking); + MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking,string shiftWork); double GetLeavePay(DateTime contractStart, DateTime contractEnd, double daylyWage, double consumableItem, double housingAllowance, double familyAllowance , string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM); double GetOverTimeWorking(double dayliWage, string overTimeWorkH, string overTimeWorkM); double GetOverNightWorking(double dayliWage, string overNightWorkH, string overNightWorkM, string weeklyWorkingTime, int officialholiday, int friday, DateTime contractStart, DateTime contractEnd, string totalHoursH, string totalHorsM); diff --git a/CompanyManagment.App.Contracts/Checkout/CreateCheckout.cs b/CompanyManagment.App.Contracts/Checkout/CreateCheckout.cs index 0af8d207..dee0bc11 100644 --- a/CompanyManagment.App.Contracts/Checkout/CreateCheckout.cs +++ b/CompanyManagment.App.Contracts/Checkout/CreateCheckout.cs @@ -136,4 +136,6 @@ public class CreateCheckout public bool HolidayWorking { get; set; } + public string ShiftWork { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs b/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs index b091c30b..0596d434 100644 --- a/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs +++ b/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs @@ -45,5 +45,6 @@ public class ComputingViewModel public bool HasRotatingShift { get; set; } + //public List holidays; } \ No newline at end of file diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs index 832b3b5f..5470fcaa 100644 --- a/CompanyManagment.Application/CheckoutApplication.cs +++ b/CompanyManagment.Application/CheckoutApplication.cs @@ -128,7 +128,7 @@ public class CheckoutApplication : ICheckoutApplication //حق تاهل var marriedAllowance = command.MarriedAllowance.MoneyToDouble(); var MontlyYearsBunos = - _yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage,command.WorkingWeeklyTime,command.officialholiday,command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd,command.DailFeeComplete,command.HasRollCall, command.HolidayWorking); + _yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage,command.WorkingWeeklyTime,command.officialholiday,command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd,command.DailFeeComplete,command.HasRollCall, command.HolidayWorking, command.ShiftWork); //دستمزد ماهانه var monthlyWage = MontlyYearsBunos.MontlyWage; //سنوات diff --git a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs index c7d32ba0..e1a3a393 100644 --- a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs @@ -84,7 +84,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //محاسبه حقوق ماهیانه عیدی و پاداش ، سنوات #region GetMontlyBunosYears public MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart, DateTime contractEnd, double daylyWage, - string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking) + string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking, string shiftWork) { double basicDouble = basic.MoneyToDouble(); double sub = 0; @@ -125,8 +125,8 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //if (hasRollCall) var MandatoryDays = TotalDays - fridayStartToEnd - officialholiday; - if (!hasRollCall && weeklyWorkingTime !="4") - MandatoryDays = TotalDays - fridayStartToEnd; + if (!hasRollCall && shiftWork != "4") + MandatoryDays = TotalDays - fridayStartToEnd; //بدست آوردن ساعت موظفی این ماه var TotalMandatoryHours = MandatoryDays * 7.33;//ساعت موظفی این ماه diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs index fa9fd92c..458d8f13 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs @@ -675,7 +675,7 @@ public class IndexModel : PageModel _yearlySalaryRepository.GetMontlyBunosYears(foundMandatoryCompute.weeklyTime, found.ContractStart, found.ContractEnd, foundMandatoryCompute.SalaryCompute.MoneyToDouble(), foundMandatoryCompute.SumTime44, foundMandatoryCompute.OfficialHoliday, int.Parse(foundMandatoryCompute.NumberOfFriday), foundMandatoryCompute.TotalHolidayAndNotH, foundMandatoryCompute.TotalHolidayAndNotM, - foundMandatoryCompute.Basic, foundMandatoryCompute.FridayStartToEnd, foundMandatoryCompute.DayliFeeComplete, hasRollCall, workshop.WorkshopHolidayWorking); + foundMandatoryCompute.Basic, foundMandatoryCompute.FridayStartToEnd, foundMandatoryCompute.DayliFeeComplete, hasRollCall, workshop.WorkshopHolidayWorking, workingHours.ShiftWork); double foundMontlySalary = MontlyYearsBunos.MontlyWage + MontlyYearsBunos.BasicYears; int foundTotaldays = Convert.ToInt32(MontlyYearsBunos.SumOfWorkingDay); double foundDayliWage = foundMontlySalary / foundTotaldays; @@ -785,7 +785,8 @@ public class IndexModel : PageModel TotalDayOfYearsCompute = yearsPay.YearsPay > 0 ? $"{yearsPay.TotalDayCompute}" : "0", TotalDayOfBunosesCompute = bunosesPay.Bunoses > 0 ? $"{bunosesPay.TotalDayCompute}" : "0", HolidayWorking = workshop.WorkshopHolidayWorking, - }; + ShiftWork = workingHours.ShiftWork, + }; _checkoutApplication.Create(command); //var workshopId = $"{contract.WorkshopIds}"; diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml index 0cdff7d5..3f5ca027 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml @@ -449,7 +449,7 @@ } var i = 1; var zeropscode = "zero-ps-code tooltip-container"; - + string adminVersion = _0_Framework.Application.Version.AdminVersion; } @@ -848,9 +848,12 @@ var alertModalAjax = '@Url.Page("./AutoExtension", "AlertModal")'; var clockAjax = '@Url.Page("./AutoExtension", "Clock")'; var createContractAjax = '@Url.Page("./AutoExtension", "CreateContract")'; + var EmployeesStartedWorkInSelectedPeriodAjaxUrl = '@Url.Page("./AutoExtension", "EmployeesStartedWorkInSelectedPeriod")'; + + - + } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs index 3155d4e2..68fef39a 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs @@ -167,6 +167,50 @@ public class AutoExtensionModel : PageModel //Correction(); } + public IActionResult OnPostEmployeesStartedWorkInSelectedPeriod(long workshopId, string startDate, string endDate, bool manualDate) + { + var start = startDate.ToGeorgianDateTime(); + var end = ($"{startDate.FindeEndOfMonth()}").ToGeorgianDateTime(); + if (manualDate) + end = endDate.ToGeorgianDateTime(); + if (start >= end) + { + return new JsonResult(new + { + founded = false, + error = true + }); + } + var leftWorkSerchModel = new LeftWorkSearchModel + { + WorkshopId = workshopId + }; + var leftWorkList = _leftWorkApplication.search(leftWorkSerchModel); + + if (leftWorkList.Count > 0) + { + var res = leftWorkList.Where(x => x.StartWorkDateGr <= end && x.StartWorkDateGr > start).ToList(); + if (res.Count > 0) + { + return new JsonResult(new + { + founded = true, + leftWorkList = res, + error = false + }); + } + + + } + + return new JsonResult(new + { + founded = false, + error = false + + }); + + } public IActionResult OnGetContractStatus(long employeeId, long workshopId, string employeeName, string workshopname) { var command = new ContractStatusViewModel(); diff --git a/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/ModalDetailsRotatingShiftReport.cshtml b/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/ModalDetailsRotatingShiftReport.cshtml index c5992cf4..cc737f38 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/ModalDetailsRotatingShiftReport.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/ModalDetailsRotatingShiftReport.cshtml @@ -1,6 +1,7 @@ @model CompanyManagment.App.Contracts.Contract.ComputingViewModel @{ + var index = 1; + + string noRotatingTxt = "noRotatingTxt"; + string hasRotatingTxt = "hasRotatingTxt"; } @@ -60,18 +78,18 @@
-
وضعیت نوبت کاری: @Model.RotatingStatus
+
وضعیت نوبت کاری: @Model.RotatingStatus
نوع ساعت کاری: @if (Model.HasRollCall) { - حضور غیاب + دارای حضور غیاب } else { - عدم حضور غیاب + بدون حضور غیاب }
@@ -83,36 +101,51 @@
-
تاریخ
-
کارکرد صبح
-
کارکرد عصر
-
کارکرد شب
-
نوبت صبح
-
نوبت عصر
-
نوبت شب
+
+ + ردیف + +
+
تاریخ
+
کارکرد صبح
+
کارکرد عصر
+
کارکرد شب
+
نوبت صبح
+
نوبت عصر
+
نوبت شب
@foreach (var item in @Model.RotatingResultList) { -
-
+
+
+
+ ردیف +
+ +
+
تاریخ
@item.RotatingDate
-
+
کارکرد صبح
@item.MorningString
-
+
کارکرد عصر
@item.EveningString
-
+
کارکرد شب
@item.NightString
-
+
نوبت صبح
@if (item.IsMorningShift == true) @@ -129,7 +162,7 @@ }
-
+
نوبت عصر
@if (item.IsEveningShift == true) @@ -146,7 +179,7 @@ }
-
+
نوبت شب
@if (item.IsNightShift == true) diff --git a/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/PrintDetailsRotatingShiftReport.cshtml b/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/PrintDetailsRotatingShiftReport.cshtml index c02a678c..adac297c 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/PrintDetailsRotatingShiftReport.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Checkouts/_Partials/PrintDetailsRotatingShiftReport.cshtml @@ -2,402 +2,402 @@ @model CompanyManagment.App.Contracts.Contract.ComputingViewModel @{ - + + + string noRotatingTxt = "noRotatingTxt"; + string hasRotatingTxt = "hasRotatingTxt"; } @@ -645,24 +654,25 @@ -
وضعیت نوبت کاری: @Model.RotatingStatus
+
وضعیت نوبت کاری: @Model.RotatingStatus
نوع ساعت کاری: @if (Model.HasRollCall) { - حضور غیاب + دارای حضور غیاب } else { - عدم حضور غیاب + بدون حضور غیاب }
- تاریخ + ردیف + تاریخ کارکرد صبح کارکرد عصر کارکرد شب @@ -676,7 +686,10 @@ @foreach (var item in Model.RotatingResultList) { - + + @(index++) + + @item.RotatingDate diff --git a/ServiceHost/wwwroot/AssetsAdmin/page/Workshop/js/AutoExtension.js b/ServiceHost/wwwroot/AssetsAdmin/page/Workshop/js/AutoExtension.js index dcf64831..d8eead67 100644 --- a/ServiceHost/wwwroot/AssetsAdmin/page/Workshop/js/AutoExtension.js +++ b/ServiceHost/wwwroot/AssetsAdmin/page/Workshop/js/AutoExtension.js @@ -180,7 +180,7 @@ $('#firstCheckBtn').on('click', $('#datatable tbody tr').each(function (i) { let chekbox = $(this).find("input[name=selectItem]"); if (chekbox.is(":checked") == true) { - employeeId = $(this).attr("data-employeeId");; + employeeId = $(this).attr("data-employeeId"); start = $(this).find("input[name=contarctStart]").val(); startObj = $(this).find("input[name=contarctStart]"); end = $(this).find("input[name=contractEnd]").val(); @@ -701,7 +701,12 @@ $("#start").keyup(function () { $(this).addClass("errored"); } else { $(this).removeClass("errored"); - $(".sdate").val(value); + var endDate = $("#end").val(); + if (endDate.length == 10) { + + SetStartAndEndDate(value, endDate, true); + } + } } }); @@ -713,7 +718,11 @@ $("#end").keyup(function () { $(this).addClass("errored"); } else { $(this).removeClass("errored"); - $(".edate").val(value); + var startDate = $("#start").val(); + if (startDate.length == 10) { + + SetStartAndEndDate(startDate, value,true); + } } } }); @@ -745,18 +754,21 @@ $(".edate").keyup(function () { $('#monthSelected').on('change', function () { + const year = $("select[name=yearSelected]").val(); const month = $(this).val(); if (year === "0") { $("select[name=yearSelected]").addClass("errored"); } if (year != "0" && month != "0") { + const selectedDate = year + "/" + month + "/01"; const endDate = DateComputing(selectedDate); - $(".sdate").val(selectedDate); - $(".edate").val(endDate); - $('.sdate').removeClass("errored"); - $('.edate').removeClass("errored"); + + + SetStartAndEndDate(selectedDate, endDate,false); + + } }); @@ -768,15 +780,65 @@ $("select[name=yearSelected]").on('change', if (year != "0" && month != "0") { const selectedDate = year + "/" + month + "/01"; const endDate = DateComputing(selectedDate); - $(".sdate").val(selectedDate); - $(".edate").val(endDate); - $('.sdate').removeClass("errored"); - $('.edate').removeClass("errored"); + SetStartAndEndDate(selectedDate, endDate,false); + $("select[name=yearSelected]").removeClass("errored"); } }); + +function SetStartAndEndDate(selectedDate, endDate, manualDate) { + const workshopId = Number($('#workshopId').val()); + + $.ajax({ + dataType: 'json', + type: 'POST', + url: EmployeesStartedWorkInSelectedPeriodAjaxUrl, + data: { "workshopId": workshopId, "startDate": selectedDate, "endDate": endDate, "manualDate": manualDate }, + headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() }, + + success: function (response) { + if (response.founded && !response.error) { + + $('#datatable tbody tr').each(function (i) { + let selectedTr = $(this); + let employeeIdInList = selectedTr.attr("data-employeeId"); + console.log('employeeIdInList' + employeeIdInList); + selectedTr.find(".sdate").val(selectedDate); + selectedTr.find(".edate").val(endDate); + response.leftWorkList.forEach(function (el) { + if (el.employeeId == employeeIdInList) { + + $('.sdate').removeClass("errored"); + selectedTr.find(".sdate").val(el.startWorkDate); + selectedTr.find(".edate").val(endDate); + $('.edate').removeClass("errored"); + + } + }); + + }); + } else if (!response.founded && !response.error) { + $(".sdate").val(selectedDate); + $('.sdate').removeClass("errored"); + $(".edate").val(endDate); + $('.edate').removeClass("errored"); + + + } else if (!response.founded && response.error) { + + $('#end').addClass("errored"); + + + } + }, + failure: function (response) { + console.log(5, response); + + } + }); //endOf Ajax +} function DateComputing(selectedDate) { var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g], arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],