From db47f8f354915e7a28fa3a3966a1bc2326ee828c Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 18 Mar 2025 16:41:28 +0330 Subject: [PATCH 1/3] fix employee document bug and add bank and salary aid in customize checkout list --- .../Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml | 1 + 1 file changed, 1 insertion(+) diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml index 798da815..d5b7c37d 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml @@ -732,6 +732,7 @@ var itemsYearList = @Html.Raw(Json.Serialize(Model.YearlyList.OrderBy(x => x))); var employeeListAjax = `@Url.Page("./CheckoutTemporary", "EmployeeList")`; + var bankListAjax = `@Url.Page("./CheckoutTemporary", "BankListAjax")`; var isTodayFirst = @(dayFa == 1 ? "true" : "false"); var loadAllCheckoutListAjax = `@Url.Page("./CheckoutTemporary", "CheckoutList")`; From f6a710dc0328d60cb5b1107fb8ff54aa8ef284d4 Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 18 Mar 2025 16:49:57 +0330 Subject: [PATCH 2/3] fix bug employee document part 2 --- .../CustomizeCheckoutExcelGenerator.cs | 231 ----- .../CustomizeCheckoutExcelGenerator.cs | 229 +++++ .../CustomizeCheckoutTempExcelViewModel.cs | 6 +- .../EmployeeBankInfoExcelGenerator.cs | 8 +- .../EmployeeBankInfoExcelViewModel.cs | 4 +- .../CaseHistoryRollCallExcelViewModel.cs | 5 +- .../CaseHistoryRollCallForOneDayViewModel.cs | 6 +- .../RollCall/RollCallExcelGenerator.cs | 7 +- .../SearchCustomizeCheckout.cs | 2 + .../Repository/CustomizeCheckoutRepository.cs | 11 +- .../CustomizeCheckoutTempRepository.cs | 8 +- .../CheckoutTemporary.cshtml | 899 +++++++++--------- .../CheckoutTemporary.cshtml.cs | 22 +- .../CheckoutUnofficial.cshtml | 36 +- .../CheckoutUnofficial.cshtml.cs | 16 +- .../PrintAllCheckoutTemporary.cshtml.cs | 7 +- .../PrintAllCheckoutUnofficial.cshtml.cs | 7 +- .../Company/EmployeesBankInfo/Index.cshtml.cs | 2 +- .../Company/RollCall/CaseHistory.cshtml.cs | 2 +- .../WorkFlow/js/ModalEmployeeEdit.js | 6 +- .../CustomizeCheckout/js/CheckoutTemporary.js | 79 +- .../js/CheckoutUnofficial.js | 68 +- 22 files changed, 916 insertions(+), 745 deletions(-) delete mode 100644 0_Framework/Excel/Checkout/CustomizeCheckoutExcelGenerator.cs create mode 100644 CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutExcelGenerator.cs rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/Checkout/CustomizeCheckoutTempExcelViewModel.cs (94%) rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs (98%) rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs (84%) rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/RollCall/CaseHistoryRollCallExcelViewModel.cs (93%) rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/RollCall/CaseHistoryRollCallForOneDayViewModel.cs (82%) rename {0_Framework/Excel => CompanyManagement.Infrastructure.Excel}/RollCall/RollCallExcelGenerator.cs (99%) diff --git a/0_Framework/Excel/Checkout/CustomizeCheckoutExcelGenerator.cs b/0_Framework/Excel/Checkout/CustomizeCheckoutExcelGenerator.cs deleted file mode 100644 index 04fb2112..00000000 --- a/0_Framework/Excel/Checkout/CustomizeCheckoutExcelGenerator.cs +++ /dev/null @@ -1,231 +0,0 @@ -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Linq; -using _0_Framework.Application; -using OfficeOpenXml; - -namespace _0_Framework.Excel.Checkout; - -using OfficeOpenXml; -using OfficeOpenXml.Style; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -public class CustomizeCheckoutExcelGenerator -{ - public static byte[] GenerateCheckoutTempExcelInfo(List data, List selectedParameters) - { - OfficeOpenXml.ExcelPackage.LicenseContext = LicenseContext.NonCommercial; - using var package = new ExcelPackage(); - var worksheet = package.Workbook.Worksheets.Add("Sheet1"); - - - // Define headers - Dictionary headers = new Dictionary - { - { "Month", "ماه" }, - { "Year", "سال" }, - { "EmployeeFullName", "نام و نام خانوادگی" }, - { "PersonnelCodeString", "شماره پرسنلی" }, - { "NationalCode", "کدملی" }, - { "SumOfWorkingDays", "روز کارکرد" }, - { "MonthlySalary", "حقوق ماهانه" }, - { "BaseYearsPay", "سنوات" }, - { "MarriedAllowance", "حق تاهل" }, - { "OvertimePay", "اضافه کاری" }, - { "NightworkPay", "شب کاری" }, - { "FridayPay", "جمعه کاری" }, - { "MissionPay", "مأموریت" }, - { "ShiftPay", "نوبت کاری" }, - { "FamilyAllowance", "حق فرزند" }, - { "BonusesPay", "پاداش" }, - { "LeavePay", "مزد مرخصی" }, - { "RewardPay", "پاداش" }, - { "FineDeduction", "جریمه" }, - { "InsuranceDeduction", "حق بیمه" }, - { "TaxDeducation", "مالیات" }, - { "InstallmentDeduction", "قسط وام" }, - { "SalaryAidDeduction", "مساعده" }, - { "AbsenceDeduction", "غیبت" }, - { "EarlyExitDeduction", "تعجیل در خروج" }, - { "LateToWorkDeduction", "تاخیر در ورود" }, - { "TotalClaims", "جمع مطالبات" }, - { "TotalDeductions", "جمع کسورات" }, - { "TotalPayment", "مبلغ قابل پرداخت" }, - { "CardNumber", "شماره کارت" }, - { "ShebaNumber", "شماره شبا" }, - { "BankAccountNumber", "شماره حساب" }, - - }; - Dictionary filteredHeaders; - if (!selectedParameters.Any()) - { - filteredHeaders = headers; - } - else - { - // Filter headers based on selected parameters - filteredHeaders = headers.Where(h => selectedParameters.Contains(h.Key)).ToDictionary(); - } - var indexCell = worksheet.Cells[1, 1]; - indexCell.Value = "ردیف"; - ApplyHeaderStyle(indexCell); - // Add headers to worksheet - for (int i = 0; i < filteredHeaders.Count; i++) - { - worksheet.Cells[1, i + 2].Value = filteredHeaders.ElementAt(i).Value; - ApplyHeaderStyle(worksheet.Cells[1, i + 2]); - } - - var dataRow = 2; - int totalPaymentColumnIndex = -1; - foreach (var item in data) - { - var column = 2; - foreach (var header in filteredHeaders) - { - var property = item.GetType().GetProperty(header.Key); - var value = property.GetValue(item, null)?.ToString(); - - // Check if the property requires MoneyToDouble() - if (RequiresMoneyToDouble(property.Name)) - { - worksheet.Cells[dataRow, column].Value = MoneyToDouble(value); - } - else - { - worksheet.Cells[dataRow, column].Value = value; - } - - ApplyGeneralDataStyle(worksheet.Cells[dataRow, column]); - ApplySpecificStyle(worksheet.Cells[dataRow, column], column); // Apply specific styles - if (header.Key == "TotalPayment") - { - totalPaymentColumnIndex = column; - } - column++; - } - var rowCounter = worksheet.Cells[dataRow, 1]; - rowCounter.Value = dataRow - 1; - ApplyGeneralDataStyle(rowCounter); - ApplySpecificStyle(rowCounter, 1); - - dataRow++; - } - - worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); - worksheet.PrinterSettings.PaperSize = ePaperSize.A4; - worksheet.PrinterSettings.Orientation = eOrientation.Landscape; - worksheet.PrinterSettings.FitToPage = true; - worksheet.PrinterSettings.FitToWidth = 1; - worksheet.PrinterSettings.FitToHeight = 0; - worksheet.PrinterSettings.Scale = 85; - worksheet.View.RightToLeft = true; - - if (totalPaymentColumnIndex != -1) - { - ApplyConditionalFormatting(worksheet, dataRow, totalPaymentColumnIndex); - } - - return package.GetAsByteArray(); - } - - // Method to check if a property requires MoneyToDouble() - private static bool RequiresMoneyToDouble(string propertyName) - { - var propertiesRequiringConversion = new HashSet - { - "MonthlySalary", "RewardPay", "FridayPay", "OvertimePay", "ShiftPay", "NightWorkPay", - "MarriedAllowance", "FamilyAllowance", "BonusesPay", "BaseYearsPay", "LeavePay", - "AbsenceDeduction", "LateToWorkDeduction", "EarlyExitDeduction", "SalaryAidDeduction", - "InstallmentDeduction", "FineDeduction", "InsuranceDeduction", "TaxDeduction", - "TotalClaims", "TotalDeductions", "TotalPayment" - }; - return propertiesRequiringConversion.Contains(propertyName); - } - - // Placeholder for the MoneyToDouble() method - private static double MoneyToDouble(string value) - { - Console.WriteLine(value); - var min = value.Length>1? value.Substring(0, 2): ""; - var test = min == "\u200e\u2212" ? value.MoneyToDouble() * -1 : value.MoneyToDouble(); - - Console.WriteLine(test); - return test; - } - - private static void ApplyHeaderStyle(ExcelRange cell) - { - cell.Style.Font.Bold = true; - cell.Style.Fill.PatternType = ExcelFillStyle.Solid; - cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray); - cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; - cell.Style.Border.BorderAround(ExcelBorderStyle.Thin); - } - - private static void ApplyGeneralDataStyle(ExcelRange cell) - { - cell.Style.Border.BorderAround(ExcelBorderStyle.Thin); - cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; - cell.Style.VerticalAlignment = ExcelVerticalAlignment.Center; - cell.Style.Fill.PatternType = ExcelFillStyle.Solid; - } - - private static void ApplySpecificStyle(ExcelRange cell, int columnIndex) - { - switch (columnIndex) - { - case int n when (n >= 1 && n <= 8): - cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightYellow); - break; - case int n when (n >= 9 && n <= 19): - cell.Style.Fill.BackgroundColor.SetColor(1, 208, 248, 208); - cell.Style.Numberformat.Format = "#,##0"; - break; - case int n when (n >= 20 && n <= 27): - cell.Style.Fill.BackgroundColor.SetColor(1, 246, 176, 176); - cell.Style.Numberformat.Format = "#,##0"; - break; - case 28: - cell.Style.Fill.BackgroundColor.SetColor(1, 169, 208, 142); - cell.Style.Numberformat.Format = "#,##0"; - break; - case 29: - cell.Style.Fill.BackgroundColor.SetColor(1, 241, 143, 143); - cell.Style.Numberformat.Format = "#,##0"; - break; - case 30: - cell.Style.Fill.BackgroundColor.SetColor(1, 168, 186, 254); - cell.Style.Numberformat.Format = "#,##0"; - break; - case >= 31 and <= 33: - cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightYellow); - break; - } - } - - private static void ApplyConditionalFormatting(ExcelWorksheet worksheet, int dataRow, int totalPaymentColumnIndex) - { - for (int rowIndex = 2; rowIndex < dataRow; rowIndex++) - { - var totalPaymentValue = worksheet.Cells[rowIndex, totalPaymentColumnIndex].Value; - if (totalPaymentValue != null && double.TryParse(totalPaymentValue.ToString(), out double payment)) - { - if (payment < 0) - { - var rowRange = worksheet.Cells[rowIndex, 1, rowIndex, worksheet.Dimension.End.Column]; - rowRange.Style.Fill.PatternType = ExcelFillStyle.Solid; rowRange.Style.Fill.BackgroundColor.SetColor(Color.Red); - foreach (var cell in rowRange) - { - cell.Style.Font.Color.SetColor(Color.White); - } - } - } - } - } -} - diff --git a/CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutExcelGenerator.cs b/CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutExcelGenerator.cs new file mode 100644 index 00000000..313b456a --- /dev/null +++ b/CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutExcelGenerator.cs @@ -0,0 +1,229 @@ +using System.Drawing; +using _0_Framework.Application; +using OfficeOpenXml; +using OfficeOpenXml.Style; + +namespace CompanyManagement.Infrastructure.Excel.Checkout; + +public class CustomizeCheckoutExcelGenerator +{ + + public static Dictionary Header { get; set; } = new() { + { "Month", "ماه" }, + { "Year", "سال" }, + { "EmployeeFullName", "نام و نام خانوادگی" }, + { "PersonnelCodeString", "شماره پرسنلی" }, + { "NationalCode", "کدملی" }, + { "SumOfWorkingDays", "روز کارکرد" }, + { "MonthlySalary", "حقوق ماهانه" }, + { "BaseYearsPay", "سنوات" }, + { "MarriedAllowance", "حق تاهل" }, + { "OvertimePay", "اضافه کاری" }, + { "NightworkPay", "شب کاری" }, + { "FridayPay", "جمعه کاری" }, + { "MissionPay", "مأموریت" }, + { "ShiftPay", "نوبت کاری" }, + { "FamilyAllowance", "حق فرزند" }, + { "BonusesPay", "پاداش" }, + { "LeavePay", "مزد مرخصی" }, + { "RewardPay", "پاداش" }, + { "FineDeduction", "جریمه" }, + { "InsuranceDeduction", "حق بیمه" }, + { "TaxDeducation", "مالیات" }, + { "InstallmentDeduction", "قسط وام" }, + { "SalaryAidDeduction", "مساعده" }, + { "AbsenceDeduction", "غیبت" }, + { "EarlyExitDeduction", "تعجیل در خروج" }, + { "LateToWorkDeduction", "تاخیر در ورود" }, + { "TotalClaims", "جمع مطالبات" }, + { "TotalDeductions", "جمع کسورات" }, + { "TotalPayment", "مبلغ قابل پرداخت" }, + { "CardNumber", "شماره کارت" }, + { "ShebaNumber", "شماره شبا" }, + { "BankAccountNumber", "شماره حساب" }, + { "BankName", "نام بانک" }, + + }; + public static byte[] GenerateCheckoutTempExcelInfo(List data, List selectedParameters) + { + OfficeOpenXml.ExcelPackage.LicenseContext = LicenseContext.NonCommercial; + using var package = new ExcelPackage(); + var worksheet = package.Workbook.Worksheets.Add("Sheet1"); + + + // Define headers + + Dictionary filteredHeaders; + if (!selectedParameters.Any()) + { + filteredHeaders = Header; + } + else + { + // Filter headers based on selected parameters + filteredHeaders = Header.Where(h => selectedParameters.Contains(h.Key)).ToDictionary(); + } + var indexCell = worksheet.Cells[1, 1]; + indexCell.Value = "ردیف"; + ApplyHeaderStyle(indexCell); + // Add headers to worksheet + for (int i = 0; i < filteredHeaders.Count; i++) + { + worksheet.Cells[1, i + 2].Value = filteredHeaders.ElementAt(i).Value; + ApplyHeaderStyle(worksheet.Cells[1, i + 2]); + } + + var dataRow = 2; + int totalPaymentColumnIndex = -1; + foreach (var item in data) + { + var column = 2; + foreach (var header in filteredHeaders) + { + var property = item.GetType().GetProperty(header.Key); + var value = property.GetValue(item, null)?.ToString(); + + // Check if the property requires MoneyToDouble() + if (RequiresMoneyToDouble(property.Name)) + { + worksheet.Cells[dataRow, column].Value = MoneyToDouble(value); + } + else + { + worksheet.Cells[dataRow, column].Value = value; + } + + ApplyGeneralDataStyle(worksheet.Cells[dataRow, column]); + ApplySpecificStyle(worksheet.Cells[dataRow, column], column, worksheet); // Apply specific styles + if (header.Key == "TotalPayment") + { + totalPaymentColumnIndex = column; + } + column++; + } + var rowCounter = worksheet.Cells[dataRow, 1]; + rowCounter.Value = dataRow - 1; + ApplyGeneralDataStyle(rowCounter); + ApplySpecificStyle(rowCounter, 1, worksheet); + + dataRow++; + } + + worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); + worksheet.PrinterSettings.PaperSize = ePaperSize.A4; + worksheet.PrinterSettings.Orientation = eOrientation.Landscape; + worksheet.PrinterSettings.FitToPage = true; + worksheet.PrinterSettings.FitToWidth = 1; + worksheet.PrinterSettings.FitToHeight = 0; + worksheet.PrinterSettings.Scale = 85; + worksheet.View.RightToLeft = true; + + if (totalPaymentColumnIndex != -1) + { + ApplyConditionalFormatting(worksheet, dataRow, totalPaymentColumnIndex); + } + + return package.GetAsByteArray(); + } + + // Method to check if a property requires MoneyToDouble() + private static bool RequiresMoneyToDouble(string propertyName) + { + var propertiesRequiringConversion = new HashSet + { + "MonthlySalary", "RewardPay", "FridayPay", "OvertimePay", "ShiftPay", "NightWorkPay", + "MarriedAllowance", "FamilyAllowance", "BonusesPay", "BaseYearsPay", "LeavePay", + "AbsenceDeduction", "LateToWorkDeduction", "EarlyExitDeduction", "SalaryAidDeduction", + "InstallmentDeduction", "FineDeduction", "InsuranceDeduction", "TaxDeduction", + "TotalClaims", "TotalDeductions", "TotalPayment" + }; + return propertiesRequiringConversion.Contains(propertyName); + } + + // Placeholder for the MoneyToDouble() method + private static double MoneyToDouble(string value) + { + Console.WriteLine(value); + var min = value.Length > 1 ? value.Substring(0, 2) : ""; + var test = min == "\u200e\u2212" ? value.MoneyToDouble() * -1 : value.MoneyToDouble(); + + Console.WriteLine(test); + return test; + } + + private static void ApplyHeaderStyle(ExcelRange cell) + { + cell.Style.Font.Bold = true; + cell.Style.Fill.PatternType = ExcelFillStyle.Solid; + cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray); + cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; + cell.Style.Border.BorderAround(ExcelBorderStyle.Thin); + } + + private static void ApplyGeneralDataStyle(ExcelRange cell) + { + cell.Style.Border.BorderAround(ExcelBorderStyle.Thin); + cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; + cell.Style.VerticalAlignment = ExcelVerticalAlignment.Center; + cell.Style.Fill.PatternType = ExcelFillStyle.Solid; + } + + private static void ApplySpecificStyle(ExcelRange cell, int columnIndex, ExcelWorksheet worksheet) + { + var headerCell = worksheet.Cells[1, columnIndex].Value.ToString(); + + var index = Header.Values.ToList().IndexOf(headerCell); + index += 2; + + switch (index) + { + case int n when (n >= 1 && n <= 8): + cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightYellow); + break; + case int n when (n >= 9 && n <= 19): + cell.Style.Fill.BackgroundColor.SetColor(1, 208, 248, 208); + cell.Style.Numberformat.Format = "#,##0"; + break; + case int n when (n >= 20 && n <= 27): + cell.Style.Fill.BackgroundColor.SetColor(1, 246, 176, 176); + cell.Style.Numberformat.Format = "#,##0"; + break; + case 28: + cell.Style.Fill.BackgroundColor.SetColor(1, 169, 208, 142); + cell.Style.Numberformat.Format = "#,##0"; + break; + case 29: + cell.Style.Fill.BackgroundColor.SetColor(1, 241, 143, 143); + cell.Style.Numberformat.Format = "#,##0"; + break; + case 30: + cell.Style.Fill.BackgroundColor.SetColor(1, 168, 186, 254); + cell.Style.Numberformat.Format = "#,##0"; + break; + case >= 31 and <= 34: + cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightYellow); + break; + } + } + + private static void ApplyConditionalFormatting(ExcelWorksheet worksheet, int dataRow, int totalPaymentColumnIndex) + { + for (int rowIndex = 2; rowIndex < dataRow; rowIndex++) + { + var totalPaymentValue = worksheet.Cells[rowIndex, totalPaymentColumnIndex].Value; + if (totalPaymentValue != null && double.TryParse(totalPaymentValue.ToString(), out double payment)) + { + if (payment < 0) + { + var rowRange = worksheet.Cells[rowIndex, 1, rowIndex, worksheet.Dimension.End.Column]; + rowRange.Style.Fill.PatternType = ExcelFillStyle.Solid; rowRange.Style.Fill.BackgroundColor.SetColor(Color.Red); + foreach (var cell in rowRange) + { + cell.Style.Font.Color.SetColor(Color.White); + } + } + } + } + } +} + diff --git a/0_Framework/Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs b/CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs similarity index 94% rename from 0_Framework/Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs rename to CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs index 74f18f64..a0958f1a 100644 --- a/0_Framework/Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs +++ b/CompanyManagement.Infrastructure.Excel/Checkout/CustomizeCheckoutTempExcelViewModel.cs @@ -1,6 +1,4 @@ -using System; - -namespace _0_Framework.Excel.Checkout; +namespace CompanyManagement.Infrastructure.Excel.Checkout; public class CustomizeCheckoutTempExcelViewModel { @@ -52,5 +50,7 @@ public class CustomizeCheckoutTempExcelViewModel public string CardNumber { get; set; } public string ShebaNumber { get; set; } + public string BankName { get; set; } + } \ No newline at end of file diff --git a/0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs b/CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs similarity index 98% rename from 0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs rename to CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs index 5639c523..9e71b3b3 100644 --- a/0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs +++ b/CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelGenerator.cs @@ -1,11 +1,7 @@ -using System.Collections.Generic; -using System.Drawing; -using OfficeOpenXml; +using OfficeOpenXml; using OfficeOpenXml.Style; -using System.Linq; -using OfficeOpenXml.Table.PivotTable; -namespace _0_Framework.Excel.EmployeeBankInfo; +namespace CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; public class EmployeeBankInfoExcelGenerator { diff --git a/0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs b/CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs similarity index 84% rename from 0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs rename to CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs index 6b332ea9..274201dd 100644 --- a/0_Framework/Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs +++ b/CompanyManagement.Infrastructure.Excel/EmployeeBankInfo/EmployeeBankInfoExcelViewModel.cs @@ -1,7 +1,5 @@  -using System.Collections.Generic; - -namespace _0_Framework.Excel.EmployeeBankInfo; +namespace CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; public class EmployeeBankInfoExcelViewModel { diff --git a/0_Framework/Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs similarity index 93% rename from 0_Framework/Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs rename to CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs index 169d98d1..68144324 100644 --- a/0_Framework/Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs +++ b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallExcelViewModel.cs @@ -1,7 +1,4 @@ -using System.Collections.Generic; -using System; - -namespace _0_Framework.Excel.RollCall; +namespace CompanyManagement.Infrastructure.Excel.RollCall; diff --git a/0_Framework/Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs similarity index 82% rename from 0_Framework/Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs rename to CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs index a0627aa1..56d611a2 100644 --- a/0_Framework/Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs +++ b/CompanyManagement.Infrastructure.Excel/RollCall/CaseHistoryRollCallForOneDayViewModel.cs @@ -1,8 +1,4 @@ -using System.Collections.Generic; -using System; -using System.Security.Cryptography; - -namespace _0_Framework.Excel.RollCall; +namespace CompanyManagement.Infrastructure.Excel.RollCall; public class CaseHistoryRollCallForOneDayViewModel { diff --git a/0_Framework/Excel/RollCall/RollCallExcelGenerator.cs b/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs similarity index 99% rename from 0_Framework/Excel/RollCall/RollCallExcelGenerator.cs rename to CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs index f025f5bd..4d10e241 100644 --- a/0_Framework/Excel/RollCall/RollCallExcelGenerator.cs +++ b/CompanyManagement.Infrastructure.Excel/RollCall/RollCallExcelGenerator.cs @@ -1,11 +1,8 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; +using _0_Framework.Excel; using OfficeOpenXml; using OfficeOpenXml.Drawing; -namespace _0_Framework.Excel.RollCall; +namespace CompanyManagement.Infrastructure.Excel.RollCall; public class RollCallExcelGenerator : ExcelGenerator { diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/SearchCustomizeCheckout.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/SearchCustomizeCheckout.cs index 91e6db26..518c09c4 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/SearchCustomizeCheckout.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/SearchCustomizeCheckout.cs @@ -14,6 +14,8 @@ public class SearchCustomizeCheckout public string SearchEndFa { get; set; } public long EmployeeId { get; set; } + public long BankId { get; set; } + public CustomizeCheckoutOrderByEnum OrderBy { get; set; } = CustomizeCheckoutOrderByEnum.ContractStartDesc; public int PageIndex { get; set; } } diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs index 8663dd10..c98c56a3 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs @@ -260,9 +260,10 @@ namespace CompanyManagment.EFCore.Repository public IEnumerable Search(SearchCustomizeCheckout searchModel) { - OperationResult op = new(); + OperationResult op = new(); var query = _companyContext.CustomizeCheckouts.Include(x => x.Employee) - .ThenInclude(x => x.PersonnelCodeList) + .ThenInclude(x => x.PersonnelCodeList). + Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); #region parameters initialize @@ -324,6 +325,8 @@ namespace CompanyManagment.EFCore.Repository query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + if (searchModel.BankId > 0) + query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); switch (searchModel.OrderBy) { @@ -378,10 +381,10 @@ namespace CompanyManagment.EFCore.Repository ShiftPay = x.ShiftPay.ToMoney(), SumOfWorkingDays = x.SumOfWorkingDays.ToString(), TaxDeducation = x.TaxDeduction.ToMoney(), - TotalPayment =x.TotalPayment.ToMoney(), + TotalPayment = x.TotalPayment.ToMoney(), TotalPaymentD = x.TotalPayment, TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - + }).ToList(); diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs index bebb59b8..f45548f6 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs @@ -70,7 +70,9 @@ namespace CompanyManagment.EFCore.Repository public IEnumerable Search(SearchCustomizeCheckout searchModel) { - var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee).ThenInclude(x => x.PersonnelCodeList) + var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee) + .ThenInclude(x => x.PersonnelCodeList) + .Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); #region parameters initialize @@ -141,7 +143,8 @@ namespace CompanyManagment.EFCore.Repository if (searchModel.EmployeeId > 0) query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - + if (searchModel.BankId > 0) + query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); switch (searchModel.OrderBy) { @@ -206,7 +209,6 @@ namespace CompanyManagment.EFCore.Repository } - public List PrintAll(long workshopId, IEnumerable customizeCheckoutIds) { diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml index d5b7c37d..dd058d12 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml @@ -95,456 +95,468 @@ +
-
-
-
-
- -
-

اطلاعات فیش حقوقی موقت

-
@Model.WorkshopFullName
-
-
- -
-
-
- -
+
+
+
+
+ +
+

اطلاعات فیش حقوقی موقت

+
@Model.WorkshopFullName
+
+
+ +
+
+
+ + -
-
- +
+
+ - - - -
-
+ + + +
+
-
+
-
-
- -
-
- - لیست فیش حقوقی موقت - -
-
-
- - +
+
+ +
+
+ + لیست فیش حقوقی موقت + +
+
+
+ + - -
-
+ +
+
-
+
- -
-
- -
-
- - @if (@Model.CustomizeCheckouts.Count > 0) - { -
-
- - -
-
- - - -
-
+ +
+
+ +
+
+ +@if (@Model.CustomizeCheckouts.Count > 0) +{ +
+
+ + +
+
+ + + +
+
-
-
-
- - - - -
-
شماره پرسنلی
-
سال
-
ماه
-
شماره قرارداد
-
نام پرسنل
-
آغاز قرارداد
-
پایان قرارداد
-
روزهای کارکرد
-
تاخیر در ورود
-
غیبت
-
مبلغ قابل پرداخت
-
عملیات
-
+
+
+
+ + + + +
+
شماره پرسنلی
+
سال
+
ماه
+ @*
شماره قرارداد
*@ +
نام پرسنل
+
آغاز قرارداد
+
پایان قرارداد
+
روزهای کارکرد
+
تاخیر در ورود
+
غیبت
+
مساعده
+
مبلغ قابل پرداخت
+
عملیات
+
- @foreach (var item in @Model.CustomizeCheckouts) - { -
-
-
- ردیف -
- -
-
-
شماره پرسنلی
-
@item.PersonnelCode
-
-
-
سال
-
@item.Year
-
-
-
ماه
-
@item.Month
-
-
-
شماره قرارداد
-
@item.ContractNo
-
-
-
نام پرسنل
-
@item.EmployeeFullName
-
-
-
آغاز قرارداد
-
@item.ContractStartFa
-
-
-
پایان قرارداد
-
@item.ContractEndFa
-
-
-
روزهای کارکرد
-
@item.SumOfWorkingDays
-
-
-
تاخیر در ورود
-
@item.TotalLateToWorkDeduction
-
-
-
غیبت
-
@item.AbsenceDeduction
-
-
-
-
مبلغ قابل پرداخت
-
@(item.TotalPayment + " ریال")
-
-
-
-
- - + @foreach (var item in @Model.CustomizeCheckouts) + { +
+
+
+ ردیف +
+ +
+
+
شماره پرسنلی
+
@item.PersonnelCode
+
+
+
سال
+
@item.Year
+
+
+
ماه
+
@item.Month
+
+@*
+
شماره قرارداد
+
@item.ContractNo
+
*@ +
+
نام پرسنل
+
@item.EmployeeFullName
+
+
+
آغاز قرارداد
+
@item.ContractStartFa
+
+
+
پایان قرارداد
+
@item.ContractEndFa
+
+
+
روزهای کارکرد
+
@item.SumOfWorkingDays
+
+
+
تاخیر در ورود
+
@item.TotalLateToWorkDeduction
+
+
+
غیبت
+
@item.AbsenceDeduction
+
+
+
مساعده
+
@item.SalaryAidDeduction
+
+
+
+
مبلغ قابل پرداخت
+
@(item.TotalPayment + " ریال")
+
+
+
+
+ + - -
-
+ +
+
- -
+ +
-
-
- - @(i) -
+
+
+ + @(i) +
-
- - @item.EmployeeFullName - -
-
+
+ + @item.EmployeeFullName + +
+
-
+
-
- آغاز قرارداد - @item.ContractStartFa -
-
- پایان قرارداد - @item.ContractEndFa -
-
- - -
-
-
- +
+ آغاز قرارداد + @item.ContractStartFa +
+
+ پایان قرارداد + @item.ContractEndFa +
+
+ + +
+
+
+ -
- } -
- } - else - { -
-
-
-
- -
اطلاعاتی وجود ندارد.
-
-
-
-
- } +
+ } +
+} +else +{ +
+
+
+
+ +
اطلاعاتی وجود ندارد.
+
+
+
+
+} -
+
-
-
-
- -
+
+
+
+ +
@@ -575,32 +587,37 @@
-
-
- -
-
- تاریخ شروع - -
-
- تاریخ پایان - -
+
+
+ +
+
+ تاریخ شروع + +
+
+ تاریخ پایان + +
-
- - -
-
+
+ + +
-
+
+ +
+
+ +

جستجو بر اساس سال و ماه

@@ -700,7 +717,7 @@
- +
diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs index c16290cd..20d76419 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using System.Text.RegularExpressions; using _0_Framework.Infrastructure; +using CompanyManagment.App.Contracts.Bank; namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout { @@ -19,6 +20,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout private readonly IEmployeeApplication _employeeApplication; private readonly IYearlySalaryApplication _yearlySalaryApplication; private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; + private readonly IBankApplication _bankApplication; private readonly IPasswordHasher _passwordHasher; private readonly IHttpContextAccessor _httpContextAccessor; @@ -29,7 +31,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout public List YearlyList; - public CheckoutTemporaryModel(IWorkshopApplication workshopApplication, IHttpContextAccessor httpContextAccessor, IYearlySalaryApplication yearlySalaryApplication, IPasswordHasher passwordHasher, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, IEmployeeApplication employeeApplication) + public CheckoutTemporaryModel(IWorkshopApplication workshopApplication, IHttpContextAccessor httpContextAccessor, IYearlySalaryApplication yearlySalaryApplication, IPasswordHasher passwordHasher, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, IEmployeeApplication employeeApplication, IBankApplication bankApplication) { _workshopApplication = workshopApplication; _httpContextAccessor = httpContextAccessor; @@ -37,6 +39,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout _passwordHasher = passwordHasher; _customizeCheckoutTempApplication = customizeCheckoutTempApplication; _employeeApplication = employeeApplication; + _bankApplication = bankApplication; var workshopHash = _httpContextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -59,14 +62,13 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout OrderBy = searchModel.OrderBy, SearchStartFa = searchModel.SearchStartFa, SearchEndFa = searchModel.SearchEndFa, + BankId = searchModel.BankId, PageIndex = CustomizeCheckouts.Count() }; YearlyList = _yearlySalaryApplication.GetYears(); } - - public IActionResult OnGetPrintAll(CustomizeCheckoutBatchPrintViewModel sendIds) { @@ -180,5 +182,19 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout }); } + public IActionResult OnGetExcelModal() + { + return Partial("ModalExcelSetting"); + } + + public IActionResult OnGetBankListAjax() + { + var resultData = _bankApplication.Search(""); + return new JsonResult(new + { + success = true, + data = resultData, + }); + } } } diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml index 44d96e14..e720deec 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml @@ -87,6 +87,7 @@ +
@@ -165,8 +166,8 @@
-
-
+
+
@@ -177,15 +178,21 @@ -
+ +
+ +
+
-
@@ -396,10 +404,10 @@
ماه
@item.Month
-
+@*
شماره قرارداد
@item.ContractNo
-
+
*@
نام پرسنل
@item.EmployeeFullName
@@ -426,6 +434,10 @@
غیبت
@item.AbsenceDeduction
+
+
مساعده
+
@item.SalaryAidDeduction
+
مبلغ قابل پرداخت
@@ -607,6 +619,11 @@
+ +
+ +
@@ -709,7 +726,7 @@
- +
@@ -736,6 +753,7 @@ var itemsYearList = @Html.Raw(Json.Serialize(Model.YearlyList.OrderBy(x => x))); var employeeListAjax = `@Url.Page("./CheckoutUnofficial", "EmployeeList")`; + var bankListAjax = `@Url.Page("./CheckoutUnofficial", "BankListAjax")`; var loadAllCheckoutUnofficialListAjax = `@Url.Page("./CheckoutUnofficial", "CustomizeCheckoutsList")`; var PrintOneUrl = `#showmodal=@Url.Page("/Company/CustomizeCheckout/CheckoutUnofficial", "PrintOne")`; diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml.cs index dbdc79e1..b3ecf21e 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml.cs @@ -11,6 +11,7 @@ using System.Security.Claims; using System.Security.Cryptography; using System.Text.RegularExpressions; using _0_Framework.Infrastructure; +using CompanyManagment.App.Contracts.Bank; namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout; @@ -20,6 +21,7 @@ public class CheckoutUnofficialModel : PageModel private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; private readonly IWorkshopApplication _workshopApplication; private readonly IEmployeeApplication _employeeApplication; + private readonly IBankApplication _bankApplication; private readonly IAuthHelper _authHelper; private readonly IPasswordHasher _passwordHasher; private readonly IYearlySalaryApplication _yearlySalaryApplication; @@ -39,7 +41,7 @@ public class CheckoutUnofficialModel : PageModel public List CustomizeCheckouts { get; set; } - public CheckoutUnofficialModel(ICustomizeCheckoutApplication customizeCheckoutApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher, IHttpContextAccessor httpContextAccessor, IWorkshopApplication workshopApplication, IEmployeeApplication employeeApplication, IYearlySalaryApplication yearlySalaryApplication) + public CheckoutUnofficialModel(ICustomizeCheckoutApplication customizeCheckoutApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher, IHttpContextAccessor httpContextAccessor, IWorkshopApplication workshopApplication, IEmployeeApplication employeeApplication, IYearlySalaryApplication yearlySalaryApplication, IBankApplication bankApplication) { _customizeCheckoutApplication = customizeCheckoutApplication; _authHelper = authHelper; @@ -48,6 +50,7 @@ public class CheckoutUnofficialModel : PageModel _workshopApplication = workshopApplication; _employeeApplication = employeeApplication; _yearlySalaryApplication = yearlySalaryApplication; + _bankApplication = bankApplication; var workshopHash = _httpContextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -73,6 +76,7 @@ public class CheckoutUnofficialModel : PageModel SearchEndFa = searchModel.SearchEndFa, EmployeeId = searchModel.EmployeeId, OrderBy = searchModel.OrderBy, + BankId = searchModel.BankId, PageIndex = CustomizeCheckouts.Count() }; @@ -413,6 +417,16 @@ public class CheckoutUnofficialModel : PageModel { return Partial("ModalExcelSetting"); } + + public IActionResult OnGetBankListAjax() + { + var resultData = _bankApplication.Search(""); + return new JsonResult(new + { + success = true, + data = resultData, + }); + } } public class GetCreateCustomizeCheckout diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutTemporary.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutTemporary.cshtml.cs index 9557961e..d701a5be 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutTemporary.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutTemporary.cshtml.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using System.Text.RegularExpressions; -using _0_Framework.Excel.Checkout; +using CompanyManagement.Infrastructure.Excel.Checkout; using CompanyManagment.App.Contracts.EmployeeBankInformation; namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout @@ -285,8 +285,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout FineDeduction = x.FineDeduction, BankAccountNumber = employeeBankInformation?.BankAccountNumber, CardNumber = employeeBankInformation?.CardNumber, - ShebaNumber = employeeBankInformation?.ShebaNumber - }; + ShebaNumber = employeeBankInformation?.ShebaNumber, + BankName = employeeBankInformation?.BankName + }; }).ToList(); var excelBytes = CustomizeCheckoutExcelGenerator.GenerateCheckoutTempExcelInfo(customizeCheckoutTempExcelViewModels, []); diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutUnofficial.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutUnofficial.cshtml.cs index 8cda328a..2ff1c141 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutUnofficial.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintAllCheckoutUnofficial.cshtml.cs @@ -1,5 +1,4 @@ using _0_Framework.Application; -using _0_Framework.Excel.Checkout; using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.YearlySalary; @@ -7,6 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using System.Text.RegularExpressions; +using CompanyManagement.Infrastructure.Excel.Checkout; using CompanyManagment.App.Contracts.EmployeeBankInformation; namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout @@ -283,8 +283,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout FineDeduction = x.FineDeduction, BankAccountNumber = employeeBankInformation?.BankAccountNumber, CardNumber = employeeBankInformation?.CardNumber, - ShebaNumber = employeeBankInformation?.ShebaNumber - }; + ShebaNumber = employeeBankInformation?.ShebaNumber, + BankName = employeeBankInformation?.BankName + }; }).ToList(); var excelBytes = CustomizeCheckoutExcelGenerator.GenerateCheckoutTempExcelInfo(customizeCheckoutTempExcelViewModels, []); diff --git a/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs index 1d081da1..d4489daa 100644 --- a/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/EmployeesBankInfo/Index.cshtml.cs @@ -1,5 +1,4 @@ using _0_Framework.Application; -using _0_Framework.Excel.EmployeeBankInfo; using CompanyManagment.App.Contracts.Bank; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.EmployeeBankInformation; @@ -8,6 +7,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; +using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; namespace ServiceHost.Areas.Client.Pages.Company.EmployeesBankInfo { diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs index c560bd2e..eb238115 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs @@ -14,11 +14,11 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using System.Globalization; using System.Security.Claims; using System.Xml.Linq; -using _0_Framework.Excel.RollCall; using _0_Framework.Infrastructure; using Microsoft.AspNetCore.Http.HttpResults; using static System.Runtime.InteropServices.JavaScript.JSType; using Company.Domain.empolyerAgg; +using CompanyManagement.Infrastructure.Excel.RollCall; namespace ServiceHost.Areas.Client.Pages.Company.RollCall diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js index 9c31749a..e91b06aa 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js @@ -74,7 +74,7 @@ $("#btnEditSaveEmployee").on('click', function () { } if (fatherName === "") { - validateField("#FatherName", "لطفا نام خانوادگی را مشخص کنید."); + validateField("#FatherName", "لطفا نام پدر را مشخص کنید."); return false; } @@ -86,8 +86,8 @@ $("#btnEditSaveEmployee").on('click', function () { return false; } - if (militaryService === "") { - validateField("#militaryStatus", "لطفا نام خانوادگی را مشخص کنید."); + if (militaryService === "" && gender == "مرد") { + validateField("#militaryStatus", "لطفا وضعیت نظام وظیفه را مشخص کنید."); return false; } diff --git a/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutTemporary.js b/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutTemporary.js index 66ad7a60..90d8047b 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutTemporary.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutTemporary.js @@ -14,6 +14,41 @@ }); }); + +function ajaxBanks() { + var selectBankId = $('#BankId').val(); + + $.ajax({ + url: bankListAjax, + type: 'GET', + success: function (response) { + + if (response.success) { + var banks = response.data; + var bankOptionsHtml = ''; + banks.forEach(function (bank) { + bankOptionsHtml += ``; + }); + $('#bankSelectIndex').html(bankOptionsHtml); + $('#bankSelectIndexMobile').html(bankOptionsHtml); + //$('#employeeSelectIndexMobile').html(employeeOptionsHtml); + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(response.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); +} + + + // *************************** عملیت مربوط اسکرول کردن مربوط به سال و ماه در دسکتاپ ******************************** var Scrollbar = window.Scrollbar; Scrollbar.init(document.querySelector('#my-scrollbar'), { @@ -24,6 +59,7 @@ const selectedAll = document.querySelectorAll(".wrapper-dropdown"); $(document).ready(function () { ajaxPersonals(); + ajaxBanks(); //$(".getPersonnel").select2({ @@ -58,6 +94,24 @@ $(document).ready(function () { } }); + + $("#bankSelectIndex").select2({ + language: "fa", + dir: "rtl" + }); + + $("#bankSelectIndexMobile").select2({ + language: "fa", + dir: "rtl", + dropdownParent: $('#searchModal'), + templateResult: function (data, container) { + if (data.element) { + $(container).addClass($(data.element).attr("class")); + } + return data.text; + } + }); + $(".form-control-date").each(function () { let element = $(this); element.on('input', function () { @@ -77,7 +131,9 @@ $(document).ready(function () { var filterMonth = $('#Month').val(); var filterStart = $('#SearchStartFa').val(); var filterEnd = $('#SearchEndFa').val(); - if (filterEmployeeId !== "0" || filterYear !== "0" || filterMonth !== "0" || filterStart !== '' || filterEnd !== '') { + var filterBank = $('#BankId').val(); + + if (filterEmployeeId !== "0" || filterYear !== "0" || filterMonth !== "0" || filterStart !== '' || filterEnd !== '' || filterBank !== "0") { $('.btn-clear-filter').removeClass('disable'); } else { $('.btn-clear-filter').addClass('disable'); @@ -221,7 +277,8 @@ $(".checkAll").change(function () { //******************** انتخاب همه ی چک باکس ها ******************** //******************** فیلتر کردن برای جستجو ******************** -$(document).on('click', '.btn-search-click ', function (event) { + +$(document).on('click', '.btn-search-click, .btn-search-click-mobile', function (event) { event.preventDefault(); // جستجو سال و ماه @@ -1309,6 +1366,10 @@ function loadMore() { var end = $('#SearchEndFa').val(); var sorting = $('#OrderBy').val(); + var bankSelectIndex = $('#bankSelectIndex').val(); + var bankSelectIndexMobile = $('#bankSelectIndexMobile').val(); + var bankId = (bankSelectIndex === "0") ? bankSelectIndex : bankSelectIndexMobile; + if (b === 0 && pageIndex > 0) { $.ajax({ @@ -1324,7 +1385,8 @@ function loadMore() { Month: month, SearchStartFa: start, SearchEndFa: end, - OrderBy: sorting + OrderBy: sorting, + BankId: bankId }, headers: { "RequestVerificationToken": antiForgeryToken }, @@ -1361,10 +1423,6 @@ function loadMore() {
ماه
${item.month}
-
-
شماره قرارداد
-
${item.contractNo}
-
نام پرسنل
${item.employeeFullName}
@@ -1389,6 +1447,10 @@ function loadMore() {
غیبت
${item.absenceDeduction}
+
+
مساعده
+
${item.salaryAidDeduction}
+
مبلغ قابل پرداخت
@@ -1764,9 +1826,6 @@ function ajaxPersonals() { }); } - - - $(document).on('click', '.RemoveBtn', function () { var id = $(this).data("delete-id"); var button = this; diff --git a/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutUnofficial.js b/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutUnofficial.js index 24b7306f..3518811f 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutUnofficial.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/CheckoutUnofficial.js @@ -2,6 +2,8 @@ let $checkAll = $("#checkAll2"); let $checkboxes = $(".foo"); + + $checkAll.on("change", function () { $checkboxes.prop("checked", this.checked); }); @@ -214,7 +216,9 @@ $(document).ready(function () { var filterMonth = $('#Month').val(); var filterStart = $('#SearchStartFa').val(); var filterEnd = $('#SearchEndFa').val(); - if (filterEmployeeId !== "0" || filterYear !== "0" || filterMonth !== "0" || filterStart !== '' || filterEnd !== '') { + var filterBank = $('#BankId').val(); + + if (filterEmployeeId !== "0" || filterYear !== "0" || filterMonth !== "0" || filterStart !== '' || filterEnd !== '' || filterBank !== "0") { $('.btn-clear-filter').removeClass('disable'); } else { $('.btn-clear-filter').addClass('disable'); @@ -1185,12 +1189,42 @@ if ($(window).width() < 768) { } } +function ajaxBanks() { + var selectBankId = $('#BankId').val(); + $.ajax({ + url: bankListAjax, + type: 'GET', + success: function (response) { + if (response.success) { + var banks = response.data; + var bankOptionsHtml = ''; + banks.forEach(function (bank) { + bankOptionsHtml += ``; + }); + $('#bankSelectIndex').html(bankOptionsHtml); + $('#bankSelectIndexMobile').html(bankOptionsHtml); + //$('#employeeSelectIndexMobile').html(employeeOptionsHtml); + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(response.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); +} $(document).ready(function () { ajaxPersonals(); + ajaxBanks(); if ($(window).width() < 768) { $('#search-theme-form1').remove(); @@ -1217,6 +1251,24 @@ $(document).ready(function () { } }); + + $("#bankSelectIndex").select2({ + language: "fa", + dir: "rtl" + }); + + $("#bankSelectIndexMobile").select2({ + language: "fa", + dir: "rtl", + dropdownParent: $('#searchModal'), + templateResult: function (data, container) { + if (data.element) { + $(container).addClass($(data.element).attr("class")); + } + return data.text; + } + }); + $(".form-control-date").each(function () { let element = $(this); element.on('input', function () { @@ -1311,6 +1363,9 @@ function loadMore() { var end = $('#SearchEndFa').val(); var sorting = $('#OrderBy').val(); + var bankSelectIndex = $('#bankSelectIndex').val(); + var bankSelectIndexMobile = $('#bankSelectIndexMobile').val(); + var bankId = (bankSelectIndex === "0") ? bankSelectIndex : bankSelectIndexMobile; if (b === 0 && pageIndex > 0) { @@ -1327,7 +1382,8 @@ function loadMore() { Month: month, SearchStartFa: start, SearchEndFa: end, - OrderBy: sorting + OrderBy: sorting, + BankId: bankId }, headers: { "RequestVerificationToken": antiForgeryToken }, success: function (response) { @@ -1362,10 +1418,6 @@ function loadMore() {
ماه
${item.month}
-
-
شماره قرارداد
-
${item.contractNo}
-
نام پرسنل
${item.employeeFullName}
@@ -1390,6 +1442,10 @@ function loadMore() {
غیبت
${item.absenceDeduction}
+
+
مساعده
+
${item.salaryAidDeduction}
+
مبلغ قابل پرداخت
From 9311c7bfc76a71cf792a548805f11f5b93b4bc3f Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 18 Mar 2025 17:03:17 +0330 Subject: [PATCH 3/3] employee document part 3 --- .../ModalUploadDocument.cshtml | 19 +++++++++++-------- .../_ModalEmployeeLeftWork/LeftWork.cshtml | 8 ++++++-- .../_ModalEmployeeNew/StartWork.cshtml | 6 +++++- .../WorkFlow/js/EmployeesDocuments.js | 4 ++-- .../WorkFlow/js/ModalEmployeeEdit.js | 4 +++- .../WorkFlow/js/ModalUploadDocument.js | 16 +++++++++++++--- .../js/_ModalEmployeeLeftWork/LeftWork.js | 1 + .../js/_ModalEmployeeNew/StartWork.js | 3 ++- 8 files changed, 43 insertions(+), 18 deletions(-) diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml index d2b6005b..889102ae 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml @@ -80,7 +80,7 @@
- + @@ -134,7 +134,7 @@
- + @@ -186,7 +186,7 @@
- + @@ -238,7 +238,7 @@
- + @@ -291,7 +291,7 @@
- + @@ -344,7 +344,7 @@
- + @@ -396,7 +396,7 @@
- + @@ -448,7 +448,7 @@
- + @@ -503,6 +503,9 @@ var saveSubmitAjax = `@Url.Page("./EmployeesDocuments", "SaveSubmit")`; var deleteFileAjaxUrl = `@Url.Page("./EmployeesDocuments", "RemoveEmployeeDocumentByLabel")`; var cancelOperationUrl = `@Url.Page("./EmployeesDocuments", "CancelOperation")`; + + var loadModalEmployeeEdit = `@Url.Page("./EmployeesDocuments", "EditEmployeeModal")`; + var employeeId = Number(@Model.EmployeeId); var workshopId = Number(@Model.WorkshopId); var UploadedCount = Number(@Model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)).Select(y => y.GetValue(@Model) as EmployeeDocumentItemViewModel).Count(x=>x.Status == DocumentStatus.Unsubmitted && !string.IsNullOrWhiteSpace(x.PicturePath))); diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeLeftWork/LeftWork.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeLeftWork/LeftWork.cshtml index 0e1f2794..1a2d7105 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeLeftWork/LeftWork.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeLeftWork/LeftWork.cshtml @@ -34,6 +34,10 @@ .dadmehr-select-search .line { width: 0; } + + .border-red { + border: 3px solid red !important; + } } @@ -168,11 +172,11 @@ *@ - + @Model.LeftWorkTemp.LastDayStanding - + @Model.LeftWorkTemp.LeftWork diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml index c414ce65..794d1e9a 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeNew/StartWork.cshtml @@ -34,6 +34,10 @@ .dadmehr-select-search .line { width: 0; } + + .border-red { + border: 3px solid red !important; + } } @@ -155,7 +159,7 @@ 1 - + @Model.LeftWorkTemp.StartWork diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js index 5c4ba987..b4f1b907 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js @@ -138,12 +138,12 @@ async function loadWorkshopsWithDocumentsAwaitingUpload() {
-
+
${item.workshopName}
-
+
${item.employerName}
diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js index e91b06aa..c4cffbab 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalEmployeeEdit.js @@ -86,7 +86,7 @@ $("#btnEditSaveEmployee").on('click', function () { return false; } - if (militaryService === "" && gender == "مرد") { + if (militaryService === "" && gender === "مرد") { validateField("#militaryStatus", "لطفا وضعیت نظام وظیفه را مشخص کنید."); return false; } @@ -113,6 +113,8 @@ $("#btnEditSaveEmployee").on('click', function () { $('.alert-success-msg').hide(); $('.alert-success-msg p').text(''); }, 2000); + + $(`.btnSendToChecker[data-index="${getIndexForEmployeeEdit}"]`).removeClass("disable"); loading.hide(); $('#customModal').removeClass('show'); diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js index 6b0fbbd1..5d7dac46 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js @@ -16,6 +16,7 @@ var confirmIcon = `رد شده
`; var rejectIcon = ``; +var getIndexForEmployeeEdit; $(document).ready(function () { @@ -68,7 +69,6 @@ $(document).ready(function () { $(this).find(".resultMessage").html(rejectMessage); $(this).find(".btnEditEmployee").removeClass("disable"); - $(this).find(".btnSendToChecker").removeClass("disable"); } }); @@ -158,7 +158,6 @@ $(document).ready(function () { const pdBox = $(this).closest('.pdBox'); const img = pdBox.find('.preview-image'); var deleteButton = pdBox.find('.btnDeletingPD'); - deleteButton.removeClass('disable'); if (fileInputFile) { const fileName = fileInputFile.name.toLowerCase(); @@ -255,6 +254,12 @@ $(document).ready(function () { } else { showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg, png یا pdf باشد.', 3500); + return; + } + + deleteButton.removeClass('disable'); + if (pdBox.find('button.Rejected').length > 0) { + pdBox.find(".btnSendToChecker").removeClass("disable"); } } }); @@ -379,6 +384,11 @@ $(document).ready(function () { }); }); + $(document).off('click', '.btnEditEmployee').on('click', '.btnEditEmployee', function (event) { + getIndexForEmployeeEdit = $(this).data('index'); + LoadCustomPartial(loadModalEmployeeEdit + `&employeeId=${employeeId}&workshopId=${workshopId}`); + }); + $(".exitModal").click(function () { if (uploadFileCount > 0) { swal.fire({ @@ -848,4 +858,4 @@ function canDeleteRecord() { let uploadedOrPending = statusCounter.confirmed + statusCounter.pending; return uploadedOrPending < totalRequired; -} \ No newline at end of file +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeLeftWork/LeftWork.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeLeftWork/LeftWork.js index 0d3b74c9..bf5a53c6 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeLeftWork/LeftWork.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeLeftWork/LeftWork.js @@ -105,6 +105,7 @@ function enableEdit() { } $("#save").on('click', function () { + $('td').removeClass('border-red'); $('#LastDayStandingInput').prop('disabled', true); $('#LeftWorkInput').prop('disabled', true); $('#save').addClass('disable'); diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeNew/StartWork.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeNew/StartWork.js index a533e0f5..27a0d279 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeNew/StartWork.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/_ModalEmployeeNew/StartWork.js @@ -43,7 +43,8 @@ function enableEdit() { $('#btnSaveData').addClass('disable'); } -$("#save").on('click', function() { +$("#save").on('click', function () { + $('td').removeClass('border-red'); $('#StartWorkInput').prop('disabled', true); $('#save').addClass('disable'); $('#btnSaveData').removeClass('disable');