diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 9cec9606..b2355432 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -474,6 +474,30 @@ public static class Tools
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
}
+
+ ///
+ /// اگر مبلغ صفر باشد خط تیره برمیگرداند
+ ///
+ ///
+ ///
+ public static string ToMoneyCheckZero(this double myMoney)
+ {
+ if (myMoney == 0)
+ return "-";
+ return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
+ }
+
+ ///
+ /// اگر مبلغ صفر یا نال باشد خط تیره برمیگرداند
+ ///
+ ///
+ ///
+ public static string ToMoneyCheckZeroNullable(this double? myMoney)
+ {
+ if (myMoney == 0 || myMoney == null)
+ return "-";
+ return myMoney?.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
+ }
public static string ToMoneyNullable(this double? myMoney)
{
diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
index aa30b980..c479e3d9 100644
--- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
+++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
@@ -86,6 +86,12 @@ public interface ICheckoutRepository : IRepository
#region ForApi
+ ///
+ /// دریافت سلکت لیست پرسنل کارگاه
+ ///
+ ///
+ ///
+ Task> GetEmployeeSelectListByWorkshopId(long id);
///
/// دریافت لیست فیش حقوقی
@@ -94,5 +100,14 @@ public interface ICheckoutRepository : IRepository
///
Task> GetList(CheckoutSearchModelDto searchModel);
+
+ ///
+ /// پرینت فیش حقوقی
+ /// Api
+ ///
+ ///
+ ///
+ Task> CheckoutPrint(List ids);
+
#endregion
}
\ No newline at end of file
diff --git a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
index 6d5f56ea..b9193076 100644
--- a/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
+++ b/Company.Domain/WorkshopAgg/IWorkshopRepository.cs
@@ -106,4 +106,14 @@ public interface IWorkshopRepository : IRepository
#endregion
+
+ #region ForApi
+ ///
+ /// دریافت لیست کارگاه های ادمین برای سلکت تو
+ /// Api
+ ///
+ ///
+ Task> GetAdminWorkshopSelectList();
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs
new file mode 100644
index 00000000..60b72897
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs
@@ -0,0 +1,247 @@
+using System;
+using CompanyManagment.App.Contracts.Loan;
+using CompanyManagment.App.Contracts.RollCall;
+using CompanyManagment.App.Contracts.SalaryAid;
+using System.Collections.Generic;
+
+namespace CompanyManagment.App.Contracts.Checkout.Dto;
+
+public class CheckoutPrintDto
+{
+ // هدر فیش
+ // اطلاعات هویتی
+ // اطلاعات کارگاه
+ #region Header
+ public long Id { get; set; }
+
+ ///
+ /// نام پرسنل
+ ///
+ public string EmployeeFullName { get; set; }
+
+ ///
+ /// نام پدر
+ ///
+ public string FathersName { get; set; }
+
+ ///
+ /// کد ملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// تاریخ تولد
+ ///
+ public string DateOfBirth { get; set; }
+
+ ///
+ /// نام کارگاه
+ ///
+ public string WorkshopName { get; set; }
+
+ ///
+ /// شماره قراداد
+ ///
+ public string ContractNo { get; set; }
+
+ ///
+ /// ماه
+ ///
+ public string Month { get; set; }
+
+ ///
+ /// سال
+ ///
+ public string Year { get; set; }
+
+ ///
+ /// لیست کارفرما
+ ///
+ public List EmployersLists { get; set; }
+
+ ///
+ /// آیا کارقرما حقوقی است
+ ///
+ public bool EmployerIslegal { get; set; }
+
+ ///
+ /// آیا ترک کار کرده
+ ///
+ public bool HasLeft { get; set; }
+
+ ///
+ /// آخرین روز کاری
+ ///
+ public string LastDayOfWork { get; set; }
+
+ ///
+ /// روز ترک کار
+ ///
+ public string LeftWorkDate { get; set; }
+
+ #endregion
+
+ //جدول مطالبات و کسورات
+ #region PaymentAndDeductionTable
+ ///
+ /// مطالبات
+ ///
+ public List PaymentList { get; set; }
+
+ ///
+ /// کسورات
+ ///
+ public List DeductionList { get; set; }
+
+ ///
+ /// جمع مطالبات
+ ///
+ public string TotalPayment { get; set; }
+
+ ///
+ /// جمع کسورات
+ ///
+ public string TotalDeductions { get; set; }
+
+
+ ///
+ /// مبلغ قابل پرداخت
+ ///
+ public string TotalClaims { get; set; }
+ #endregion
+
+ //لیست ورود و خروج پرسنل
+ //اطلاعات ساعات کار و موظقی
+ #region RollCallData
+ ///
+ /// لیست حضورغیاب
+ ///
+ public List MonthlyRollCall { get; set; }
+
+ ///
+ /// دیتای جدول حضورغیاب
+ ///
+ public CheckoutRollCallViewModel CheckoutRollCall { get; set; }
+
+ #endregion
+
+ //اقساط - مساعده
+ #region SalaryAidAndInstallmentData
+
+ public List Installments { get; set; }
+ public List SalaryAids { get; set; }
+
+ #endregion
+}
+
+///
+/// کسورات
+///
+public class PaymentData
+{
+ ///
+ /// حقوق و مزد
+ ///
+ public string MonthlySalary { get; set; }
+
+ ///
+ /// پایه سنوات
+ ///
+ public string BaseYearsPay { get; set; }
+
+ ///
+ /// کمک هزینه اقلام مصرفی
+ ///
+ public string ConsumableItems { get; set; }
+
+ ///
+ /// کمک هزینه مسکن
+ ///
+ public string HousingAllowance { get; set; }
+
+ ///
+ /// فوق العاده اضافه کاری
+ ///
+ public string OvertimePay { get; set; }
+
+ ///
+ /// فوق العاده شبکاری
+ ///
+ public string NightworkPay { get; set; }
+
+ ///
+ /// فوق العاده جمعه کاری
+ ///
+ public string FridayPay { get; set; }
+
+ ///
+ /// فوق العاده ماموریت
+ ///
+ public string MissionPay { get; set; }
+
+ ///
+ /// فوق العاده نوبت کاری
+ ///
+ public string ShiftPay { get; set; }
+
+ ///
+ /// کمک هزینه عائله مندی
+ ///
+ public string FamilyAllowance { get; set; }
+
+ ///
+ /// حق تاهل
+ ///
+ public string MarriedAllowance { get; set; }
+
+}
+
+///
+/// کسورات
+///
+public class DeductionData
+{
+
+}
+
+public class PaymentAndDeductionList
+{
+ public int RowNumber { get; set; }
+ ///
+ /// عنوان
+ ///
+ public string Title { get; set; }
+
+ ///
+ /// مقدار/روز/ساعت
+ ///
+ public string Value { get; set; }
+
+ ///
+ /// مبلغ
+ ///
+ public string Amount { get; set; }
+}
+
+
+///
+/// لیست کارفرما
+///
+public class CheckoutEmployersList
+{
+ public string IsLegal { get; set; }
+ public string EmployerFullName { get; set; }
+}
+
+
+
+
+public class CheckoutGetData : CheckoutPrintDto
+{
+ public DateTime ContractStart { get; set; }
+
+ public int PersonnelCode { get; set; }
+
+ public long WorkshopId { get; set; }
+ public long EmployeeId { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/ContractsListToCreateCheckoutDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/ContractsListToCreateCheckoutDto.cs
new file mode 100644
index 00000000..e3d5c6c9
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Checkout/Dto/ContractsListToCreateCheckoutDto.cs
@@ -0,0 +1,53 @@
+namespace CompanyManagment.App.Contracts.Checkout.Dto;
+
+public class ContractsListToCreateCheckoutDto
+{
+ ///
+ /// آی دی قراداد
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// کد پرسنلی
+ ///
+ public long PersonnelCode { get; set; }
+
+ ///
+ /// شماره قرارداد
+ ///
+ public string ContractNo { get; set; }
+
+ //نام کارگاه
+ public string WorkshopName { get; set; }
+
+ ///
+ /// نام پرسنل
+ ///
+ public string EmployeeName { get; set; }
+
+ ///
+ /// تاریخ شوع فیش
+ ///
+ public string ContractStart { get; set; }
+ ///
+ /// تاریخ پایان فیش
+ ///
+ public string ContractEnd { get; set; }
+
+ ///
+ /// تاریخ ترک کار
+ ///
+ public string LeftWorkDate { get; set; }
+
+ ///
+ /// وضعیت ایجاد فیش
+ ///
+ public CreateCheckoutStatus CreateCheckoutStatus { get; set; }
+
+
+ ///
+ /// توضیحات
+ ///
+ public string Description { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/CreateCheckoutStatus.cs b/CompanyManagment.App.Contracts/Checkout/Dto/CreateCheckoutStatus.cs
new file mode 100644
index 00000000..f63a750c
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Checkout/Dto/CreateCheckoutStatus.cs
@@ -0,0 +1,22 @@
+namespace CompanyManagment.App.Contracts.Checkout.Dto;
+
+///
+/// وضعیت ایجاد فیش
+///
+public enum CreateCheckoutStatus
+{
+ ///
+ /// آماده ایجاد
+ ///
+ ReadyToCreate,
+
+ ///
+ /// غیر مجاز
+ ///
+ NotValid,
+
+ ///
+ /// دارای فیش حقوقی
+ ///
+ HasCheckout,
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/EmployeeSelectListDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/EmployeeSelectListDto.cs
new file mode 100644
index 00000000..4384aaa3
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Checkout/Dto/EmployeeSelectListDto.cs
@@ -0,0 +1,14 @@
+namespace CompanyManagment.App.Contracts.Checkout.Dto;
+
+public class EmployeeSelectListDto
+{
+ ///
+ /// آی دی پرسنل
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام پرسنل
+ ///
+ public string EmployeeFullName { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs
index 828c631d..01312afa 100644
--- a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs
+++ b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs
@@ -69,6 +69,13 @@ public interface ICheckoutApplication
#region ForApi
+ ///
+ /// دریافت سلکت لیست پرسنل کارگاه
+ ///
+ ///
+ ///
+ Task> GetEmployeeSelectListByWorkshopId(long id);
+
///
/// دریافت لیست فیش های حقوقی ادمین
///
@@ -83,9 +90,41 @@ public interface ICheckoutApplication
///
Task GetRotatingShiftApi(long id);
+ ///
+ /// پرینت فیش حقوقی
+ /// Api
+ ///
+ ///
+ ///
+ Task> CheckoutPrint(List ids);
+
+ ///
+ /// دریافت لیست قراردادها برای ایجاد فیش حقوقی
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task>> GetContractToCreateCheckout(long workshopId,
+ string year, string month, long employeeId);
+
#endregion
}
+public class CheckoutPrintInstallmentDto
+{
+ public string RemainingAmount { get; set; }
+ public string LoanAmount { get; set; }
+ public string Amount { get; set; }
+}
+public class CheckoutPrintSalaryAidDto
+{
+ public string Amount { get; set; }
+ public string SalaryAidDateTimeFa { get; set; }
+}
+}
+
public class CheckoutListClientSearchModel:PaginationRequest
{
public long? EmployeeId { get; set; }
diff --git a/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs b/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs
index 9c938ee9..94b2e283 100644
--- a/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs
+++ b/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs
@@ -45,4 +45,42 @@ namespace CompanyManagment.App.Contracts.RollCall
}
#endregion
+ public class CheckoutPrintRollCallDto
+ {
+
+ public string RollCallDateFa { get; set; }
+ public string StartDate1 { get; set; }
+ public string EndDate1 { get; set; }
+
+ public string StartDate2 { get; set; }
+ public string EndDate2 { get; set; }
+
+ //منقطع بودن شیفت کاری
+ public bool IsSliced { get; set; }
+
+ public string TotalWorkingHours { get; set; }
+
+ public string DayOfWeek { get; set; }
+
+ public string BreakTimeString { get; set; }
+
+ ///
+ /// اگر مرخصی نداشته باشد خالی خواهد بود، اگر داشته باشد نوع مرخصی جانشانی می شود
+ ///
+ public string LeaveType { get; set; }
+
+ public bool IsAbsent { get; set; }
+ public bool IsFriday { get; set; }
+ public bool IsHoliday { get; set; }
+ public bool IsBirthDay { get; set; }
+
+
+ public string EnterDifferencesMinutes1 { get; set; }
+ public string ExitDifferencesMinutes1 { get; set; }
+
+ public string EnterDifferencesMinutes2 { get; set; }
+ public string ExitDifferencesMinutes2 { get; set; }
+
+ }
+
}
diff --git a/CompanyManagment.App.Contracts/Workshop/DTOs/AdminWorkshopSelectListDto.cs b/CompanyManagment.App.Contracts/Workshop/DTOs/AdminWorkshopSelectListDto.cs
new file mode 100644
index 00000000..8ed1da5d
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Workshop/DTOs/AdminWorkshopSelectListDto.cs
@@ -0,0 +1,24 @@
+namespace CompanyManagment.App.Contracts.Workshop.DTOs;
+
+public class AdminWorkshopSelectListDto
+{
+ ///
+ /// آی دی کارگاه
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام کارگاه
+ ///
+ public string WorkshopFullName { get; set; }
+
+ ///
+ /// کد بایگانی
+ ///
+ public string ArchiveCode { get; set; }
+
+ ///
+ /// آیا بلاک شده است
+ ///
+ public bool IsBlock { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs
index 5ac6164b..8bf49865 100644
--- a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs
+++ b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs
@@ -1,5 +1,6 @@
using _0_Framework.Application;
using AccountManagement.Application.Contracts.Account;
+using CompanyManagment.App.Contracts.Checkout.Dto;
using CompanyManagment.App.Contracts.Employee.DTO;
using CompanyManagment.App.Contracts.Workshop.DTOs;
using Microsoft.AspNetCore.Mvc;
@@ -95,6 +96,17 @@ public interface IWorkshopApplication
Task> CreateWorkshopWorkflowRegistration(CreateWorkshopWorkflowRegistration command);
+ #region ForApi
+
+
+ ///
+ /// دریافت لیست کارگاه های ادمین برای سلکت تو
+ /// Api
+ ///
+ ///
+ Task> GetAdminWorkshopSelectList();
+
+ #endregion
}
public class CreateWorkshopWorkflowRegistration
diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs
index 0e68c173..68ec56b1 100644
--- a/CompanyManagment.Application/CheckoutApplication.cs
+++ b/CompanyManagment.Application/CheckoutApplication.cs
@@ -34,135 +34,136 @@ namespace CompanyManagment.Application;
public class CheckoutApplication : ICheckoutApplication
{
- private readonly ICheckoutRepository _checkoutRepository;
- private readonly IYearlySalaryRepository _yearlySalaryRepository;
- private readonly ILeftWorkRepository _leftWorkRepository;
- private readonly IEmployerRepository _employerRepository;
- private readonly IPersonalContractingPartyApp _contractingPartyApp;
- private readonly ILeaveApplication _leaveApplication;
- private readonly IMandatoryHoursApplication _mandatoryHoursApplication;
- private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository;
- private readonly IRollCallRepository _rollCallRepository;
- private readonly IHolidayItemApplication _holidayItemApplication;
- private readonly IWorkingHoursTempRepository _workingHoursTempRepository;
- private readonly IWorkshopRepository _workshopRepository;
+ private readonly ICheckoutRepository _checkoutRepository;
+ private readonly IYearlySalaryRepository _yearlySalaryRepository;
+ private readonly ILeftWorkRepository _leftWorkRepository;
+ private readonly IEmployerRepository _employerRepository;
+ private readonly IPersonalContractingPartyApp _contractingPartyApp;
+ private readonly ILeaveApplication _leaveApplication;
+ private readonly IMandatoryHoursApplication _mandatoryHoursApplication;
+ private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository;
+ private readonly IRollCallRepository _rollCallRepository;
+ private readonly IHolidayItemApplication _holidayItemApplication;
+ private readonly IWorkingHoursTempRepository _workingHoursTempRepository;
+ private readonly IWorkshopRepository _workshopRepository;
+
public CheckoutApplication(ICheckoutRepository checkoutRepository, IYearlySalaryRepository yearlySalaryRepository,
- ILeftWorkRepository leftWorkRepository,
- IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication, IRollCallMandatoryRepository rollCallMandatoryRepository, IRollCallRepository rollCallRepository, IHolidayItemApplication holidayItemApplication, IWorkingHoursTempRepository workingHoursTempRepository, IWorkshopRepository workshopRepository)
- {
- _checkoutRepository = checkoutRepository;
- _yearlySalaryRepository = yearlySalaryRepository;
- _leftWorkRepository = leftWorkRepository;
- _employerRepository = employerRepository;
- _contractingPartyApp = contractingPartyApp;
- _leaveApplication = leaveApplication;
- _mandatoryHoursApplication = mandatoryHoursApplication;
- _rollCallMandatoryRepository = rollCallMandatoryRepository;
- _rollCallRepository = rollCallRepository;
- _holidayItemApplication = holidayItemApplication;
+ ILeftWorkRepository leftWorkRepository,
+ IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication, IRollCallMandatoryRepository rollCallMandatoryRepository, IRollCallRepository rollCallRepository, IHolidayItemApplication holidayItemApplication, IWorkingHoursTempRepository workingHoursTempRepository, IWorkshopRepository workshopRepository)
+ {
+ _checkoutRepository = checkoutRepository;
+ _yearlySalaryRepository = yearlySalaryRepository;
+ _leftWorkRepository = leftWorkRepository;
+ _employerRepository = employerRepository;
+ _contractingPartyApp = contractingPartyApp;
+ _leaveApplication = leaveApplication;
+ _mandatoryHoursApplication = mandatoryHoursApplication;
+ _rollCallMandatoryRepository = rollCallMandatoryRepository;
+ _rollCallRepository = rollCallRepository;
+ _holidayItemApplication = holidayItemApplication;
_workingHoursTempRepository = workingHoursTempRepository;
_workshopRepository = workshopRepository;
}
- [SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records", MessageId = "count: 241")]
- public void Create(CreateCheckout command)
- {
- var operation = new OperationResult();
- var syear = Convert.ToInt32(command.ContractStart.Substring(0, 4));
- var smonth = Convert.ToInt32(command.ContractStart.Substring(5, 2));
- string month = string.Empty;
- switch (smonth)
- {
- case 1:
- month = "فروردین";
- break;
- case 2:
- month = "اردیبهشت";
- break;
- case 3:
- month = "خرداد";
- break;
- case 4:
- month = "تیر";
- break;
- case 5:
- month = "مرداد";
- break;
- case 6:
- month = "شهریور";
- break;
- case 7:
- month = "مهر";
- break;
- case 8:
- month = "آبان";
- break;
- case 9:
- month = "آذر";
- break;
- case 10:
- month = "دی";
- break;
- case 11:
- month = "بهمن";
- break;
- case 12:
- month = "اسفند";
- break;
- }
- var year = syear.ToString();
+ [SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records", MessageId = "count: 241")]
+ public void Create(CreateCheckout command)
+ {
+ var operation = new OperationResult();
+ var syear = Convert.ToInt32(command.ContractStart.Substring(0, 4));
+ var smonth = Convert.ToInt32(command.ContractStart.Substring(5, 2));
+ string month = string.Empty;
+ switch (smonth)
+ {
+ case 1:
+ month = "فروردین";
+ break;
+ case 2:
+ month = "اردیبهشت";
+ break;
+ case 3:
+ month = "خرداد";
+ break;
+ case 4:
+ month = "تیر";
+ break;
+ case 5:
+ month = "مرداد";
+ break;
+ case 6:
+ month = "شهریور";
+ break;
+ case 7:
+ month = "مهر";
+ break;
+ case 8:
+ month = "آبان";
+ break;
+ case 9:
+ month = "آذر";
+ break;
+ case 10:
+ month = "دی";
+ break;
+ case 11:
+ month = "بهمن";
+ break;
+ case 12:
+ month = "اسفند";
+ break;
+ }
+ var year = syear.ToString();
- #region SickLeav
+ #region SickLeav
- //var serachModel = new LeaveSearchModel()
- //{
- // EmployeeId = command.EmployeeId,
- // WorkshopId = command.WorkshopId,
- // LeaveType = "استعلاجی",
- // StartLeave = command.ContractStart,
- // EndLeave = command.ContractEnd,
- // IsAccepted = true,
- //};
- //var leavList = _leaveApplication.search(serachModel);
- // int sickLeaveCount = 0;
- //if (leavList.Count > 0)
- //{
+ //var serachModel = new LeaveSearchModel()
+ //{
+ // EmployeeId = command.EmployeeId,
+ // WorkshopId = command.WorkshopId,
+ // LeaveType = "استعلاجی",
+ // StartLeave = command.ContractStart,
+ // EndLeave = command.ContractEnd,
+ // IsAccepted = true,
+ //};
+ //var leavList = _leaveApplication.search(serachModel);
+ // int sickLeaveCount = 0;
+ //if (leavList.Count > 0)
+ //{
- // foreach (var leave in leavList)
- // {
- // if (leave.StartLeaveGr < command.ContractStartGr && leave.EndLeaveGr <= command.ContractEndGr)
- // {
- // int res = (int)((leave.EndLeaveGr - command.ContractStartGr).TotalDays +1);
- // sickLeaveCount += res;
- // }
- // else if (leave.StartLeaveGr >= command.ContractStartGr && leave.EndLeaveGr > command.ContractEndGr)
- // {
- // int res = (int)((command.ContractEndGr - leave.StartLeaveGr).TotalDays + 1);
- // sickLeaveCount += res;
- // }
- // else
- // {
- // int res = (int)((leave.EndLeaveGr - leave.StartLeaveGr).TotalDays + 1);
- // sickLeaveCount += res;
- // }
+ // foreach (var leave in leavList)
+ // {
+ // if (leave.StartLeaveGr < command.ContractStartGr && leave.EndLeaveGr <= command.ContractEndGr)
+ // {
+ // int res = (int)((leave.EndLeaveGr - command.ContractStartGr).TotalDays +1);
+ // sickLeaveCount += res;
+ // }
+ // else if (leave.StartLeaveGr >= command.ContractStartGr && leave.EndLeaveGr > command.ContractEndGr)
+ // {
+ // int res = (int)((command.ContractEndGr - leave.StartLeaveGr).TotalDays + 1);
+ // sickLeaveCount += res;
+ // }
+ // else
+ // {
+ // int res = (int)((leave.EndLeaveGr - leave.StartLeaveGr).TotalDays + 1);
+ // sickLeaveCount += res;
+ // }
- // }
- //}
+ // }
+ //}
- #endregion
+ #endregion
- var dayliWage = command.DayliWage.MoneyToDouble();
- // کمک هزینه اقلام
- var consumableItem = command.ConsumableItems.MoneyToDouble();
- //حق اولاد
- var familyAllowance = command.FamilyAllowance.MoneyToDouble();
- //کمک هزینه مسکن
- var housingAllowance = command.HousingAllowance.MoneyToDouble();
- //حق تاهل
- var marriedAllowance = command.MarriedAllowance.MoneyToDouble();
+ var dayliWage = command.DayliWage.MoneyToDouble();
+ // کمک هزینه اقلام
+ var consumableItem = command.ConsumableItems.MoneyToDouble();
+ //حق اولاد
+ var familyAllowance = command.FamilyAllowance.MoneyToDouble();
+ //کمک هزینه مسکن
+ var housingAllowance = command.HousingAllowance.MoneyToDouble();
+ //حق تاهل
+ 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, command.ShiftWork);
//دستمزد ماهانه
@@ -183,8 +184,8 @@ public class CheckoutApplication : ICheckoutApplication
//سنوات
var years = command.YearsPay;
- //عیدی و پاداش
- var bunos = command.BonusesPay;
+ //عیدی و پاداش
+ var bunos = command.BonusesPay;
//فاطمه احمدژاد === موقت عیدی و پاداش و سنوات حساب نشه
if (command.EmployeeId == 45104 && command.WorkshopId == 315)
@@ -195,12 +196,12 @@ public class CheckoutApplication : ICheckoutApplication
}
var sumOfWorkingDays = $"{totalDays}";
- if (command.friday > 0)
- {
- var fridayPercent = dayliWage * 40 / 100;
- //فوق العاده جمعه کاری
- command.FridayPay = fridayPercent * command.friday;
- }
+ if (command.friday > 0)
+ {
+ var fridayPercent = dayliWage * 40 / 100;
+ //فوق العاده جمعه کاری
+ command.FridayPay = fridayPercent * command.friday;
+ }
//حق بیمه سهم کارگر
#region InsuranceDeduction
@@ -208,7 +209,7 @@ public class CheckoutApplication : ICheckoutApplication
bool hasInsuranceShareTheSameAsList = false;
if (command.InsuranceDeduction == 0)
{
- var insuranceOverTime = command.HasInsuranceChekoutOverTime ? command.OvertimePay : 0;
+ var insuranceOverTime = command.HasInsuranceChekoutOverTime ? command.OvertimePay : 0;
insuranceDeduction = (monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + insuranceOverTime) * 7 / 100;
}
else
@@ -222,213 +223,213 @@ public class CheckoutApplication : ICheckoutApplication
if (command.OvertimePay > 0 && command.AbsenceDeduction > 0)
- {
- if (command.AbsenceDeduction >= command.OvertimePay)
- {
- command.AbsenceDeduction = command.AbsenceDeduction - command.OvertimePay;
- command.OvertimePay = 0;
+ {
+ if (command.AbsenceDeduction >= command.OvertimePay)
+ {
+ command.AbsenceDeduction = command.AbsenceDeduction - command.OvertimePay;
+ command.OvertimePay = 0;
command.OverTimeWorkValue = "00:00";
}
- else
- {
- command.OvertimePay = command.OvertimePay - command.AbsenceDeduction;
- command.AbsenceDeduction = 0;
- }
+ else
+ {
+ command.OvertimePay = command.OvertimePay - command.AbsenceDeduction;
+ command.AbsenceDeduction = 0;
+ }
- }
- var checkoutStart = $"{command.Year}/{command.Month}/01";
- var checkoutEnd = checkoutStart.FindeEndOfMonth();
- var salaryAids =
- _rollCallMandatoryRepository.SalaryAidsForCheckout(command.EmployeeId, command.WorkshopId, checkoutStart.ToGeorgianDateTime(), checkoutEnd.ToGeorgianDateTime())
- .Select(x => new CheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa, x.Id)).ToList();
+ }
+ var checkoutStart = $"{command.Year}/{command.Month}/01";
+ var checkoutEnd = checkoutStart.FindeEndOfMonth();
+ var salaryAids =
+ _rollCallMandatoryRepository.SalaryAidsForCheckout(command.EmployeeId, command.WorkshopId, checkoutStart.ToGeorgianDateTime(), checkoutEnd.ToGeorgianDateTime())
+ .Select(x => new CheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa, x.Id)).ToList();
- command.SalaryAidDeduction = salaryAids.Sum(x => x.Amount.MoneyToDouble());
-
- var loanInstallments = _rollCallMandatoryRepository.LoanInstallmentForCheckout(command.EmployeeId,
- command.WorkshopId, command.ContractStartGr, command.HasLeft ? DateTime.MaxValue : command.ContractEndGr)
- .Select(x =>
- new CheckoutLoanInstallment(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList();
+ command.SalaryAidDeduction = salaryAids.Sum(x => x.Amount.MoneyToDouble());
- command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());
+ var loanInstallments = _rollCallMandatoryRepository.LoanInstallmentForCheckout(command.EmployeeId,
+ command.WorkshopId, command.ContractStartGr, command.HasLeft ? DateTime.MaxValue : command.ContractEndGr)
+ .Select(x =>
+ new CheckoutLoanInstallment(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList();
-
-
-
- var firstDayOfMonth = $"{command.ContractStart.Substring(0, 8)}01".ToGeorgianDateTime();
- var firstDayOfCurrentMonth = new DateTime(syear, smonth, 1, new PersianCalendar());
-
- LeaveSearchModel sickLeaveSearch = new LeaveSearchModel()
- {
- EmployeeId = command.EmployeeId,
- WorkshopId = command.WorkshopId,
- StartLeaveGr = command.ContractStartGr,
- EndLeaveGr = command.ContractEndGr,
- IsAccepted = true,
- };
- var leaves = _leaveApplication.search(sickLeaveSearch);
-
- firstDayOfMonth.AddMonthsFa(1, out var lastDayOfCurrentMonth);
-
- lastDayOfCurrentMonth = lastDayOfCurrentMonth.AddDays(-1);
-
- int dateRange = (int)(lastDayOfCurrentMonth - firstDayOfCurrentMonth).TotalDays + 1;
-
- var holidays = _holidayItemApplication.Search(new HolidayItemSearchModel()
- {
- HolidayYear = command.ContractStartGr.ToFarsiYear()
- });
- //all the dates from start to end, to be compared with present days to get absent dates
- var completeDaysList = Enumerable.Range(0, dateRange).Select(offset => firstDayOfCurrentMonth.AddDays(offset).Date).ToList();
-
- var absentRecords = completeDaysList
- .ExceptBy(command.GroupedRollCalls.Select(x => x.CreationDate.Date), y => y.Date)
- .Select(x =>
- {
- var leave = leaves.FirstOrDefault(y =>
- y.EmployeeId == command.EmployeeId && y.EndLeaveGr.Date >= x.Date && y.StartLeaveGr.Date <= x.Date);
- var isHoliday = holidays.Any(y => y.HolidaydateGr == x.Date);
- var isFriday = x.Date.DayOfWeek == DayOfWeek.Friday;
- var isNormalWorkingDay = isHoliday == false && isFriday == false;
- return new CheckoutDailyRollCallViewModel()
- {
- StartDate1 = null,
- EndDate1 = null,
- DateTimeGr = x.Date,
- DayOfWeek = x.Date.DayOfWeek.ToString(),
- RollCallDateFa = x.Date.ToFarsi(),
- LeaveType = leave != null ? leave.LeaveType : "",
- IsAbsent = leave == null && isNormalWorkingDay
- };
- });
-
- var presentDays = command.GroupedRollCalls.Select(x =>
- {
-
- var orderedRollcalls = x.ShiftList.OrderBy(y => y.Start);
-
- var rollCallTimeSpanPerDay = x.SumOneDaySpan;
- TimeSpan breakTimePerDay = x.BreakTime;
-
- return new CheckoutDailyRollCallViewModel()
- {
- StartDate1 = orderedRollcalls.FirstOrDefault().Start.ToString("HH:mm"),
- EndDate1 = orderedRollcalls.FirstOrDefault().EndWithOutResTime.ToString("HH:mm"),
-
- StartDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.Start.ToString("HH:mm") ?? "",
- EndDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.EndWithOutResTime.ToString("HH:mm") ?? "",
-
- TotalhourseSpan = rollCallTimeSpanPerDay,
-
- BreakTimeTimeSpan = breakTimePerDay,
-
- DayOfWeek = x.CreationDate.DayOfWeek.DayOfWeeKToPersian(),
- RollCallDateFa = x.CreationDate.Date.ToFarsi(),
- DateTimeGr = x.CreationDate.Date,
- IsSliced = x.ShiftList.Count() > 2,
- IsAbsent = false
- };
- });
-
-
- presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel
- {
- StartDate1 = x.StartDate1,
- EndDate1 = x.EndDate1,
- EndDate2 = x.EndDate2,
- StartDate2 = x.StartDate2,
- TotalWorkingHours = $"{(int)(x.TotalhourseSpan.TotalHours)}:{x.TotalhourseSpan.Minutes:00}",
- BreakTimeString = $"{(int)(x.BreakTimeTimeSpan.TotalHours)}:{x.BreakTimeTimeSpan.Minutes:00}",
- TotalhourseSpan = x.TotalhourseSpan,
- BreakTimeTimeSpan = x.BreakTimeTimeSpan,
- DayOfWeek = x.DayOfWeek,
- RollCallDateFa = x.RollCallDateFa,
- DateTimeGr = x.DateTimeGr,
- IsSliced = x.IsSliced,
- IsAbsent = false
- });
-
- var result = presentDays.Concat(absentRecords).OrderBy(x => x.DateTimeGr).ToList();
- result.ForEach(x =>
- {
- x.IsHoliday = holidays.Any(y => x.DateTimeGr.Date == y.HolidaydateGr.Date);
- x.IsFriday = x.DateTimeGr.DayOfWeek == DayOfWeek.Friday;
- });
-
- var checkoutRollCallDays = result.Select(x => new CheckoutRollCallDay(x.DateTimeGr,
- x.StartDate1, x.EndDate1, x.StartDate2, x.EndDate2,
- x.BreakTimeTimeSpan, x.IsSliced, x.TotalhourseSpan, x.IsAbsent, x.IsFriday, x.IsHoliday, x.LeaveType))
- .ToList();
-
-
- double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(syear, smonth);
- int mandatoryWholeHours = (int)mandatoryHours;
- int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
-
- var totalMandatoryHours = TimeSpan.FromHours(mandatoryWholeHours).Add(TimeSpan.FromMinutes(mandatoryMinutes));
- var checkoutRollCall = new CheckoutRollCall(totalMandatoryHours, command.TotalPresentTimeSpan, command.TotalBreakTimeSpan,
- command.TotalWorkingTimeSpan, command.TotalPaidLeave, command.TotalSickLeave, checkoutRollCallDays);
+ command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());
- var totalClaimsDouble = monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + command.OvertimePay +
- command.NightworkPay + familyAllowance + bunos + years + command.LeavePay + command.FridayPay + command.ShiftPay;
- var totalClaims = totalClaimsDouble.ToMoney();
- var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction + command.InstallmentDeduction + command.SalaryAidDeduction;
- var totalDeductions = totalDeductionDouble.ToMoney();
- var totalPayment = totalClaimsDouble - totalDeductionDouble;
+ var firstDayOfMonth = $"{command.ContractStart.Substring(0, 8)}01".ToGeorgianDateTime();
+ var firstDayOfCurrentMonth = new DateTime(syear, smonth, 1, new PersianCalendar());
- if (_checkoutRepository.Exists(x =>
- x.Month == command.Month && x.Year == command.Year && x.ContractNo == command.ContractNo))
- {
- operation.Failed("امکان ثبت رکورد تکراری وجود ندارد");
- }
- else
- {
- if (string.IsNullOrWhiteSpace(command.Signature))
- {
- command.Signature = "0";
- }
-
+ LeaveSearchModel sickLeaveSearch = new LeaveSearchModel()
+ {
+ EmployeeId = command.EmployeeId,
+ WorkshopId = command.WorkshopId,
+ StartLeaveGr = command.ContractStartGr,
+ EndLeaveGr = command.ContractEndGr,
+ IsAccepted = true,
+ };
+ var leaves = _leaveApplication.search(sickLeaveSearch);
- var checkout = new Checkout(command.EmployeeFullName, command.FathersName, command.NationalCode
- , command.DateOfBirth, command.EmployeeId, command.WorkshopName, command.WorkshopId, command.ContractNo, command.ContractStartGr, command.ContractEndGr, month, year,
- command.ContractId, command.WorkingHoursId, monthlyWage, bacicYears, consumableItem, housingAllowance
- , command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
- command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue
- , command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute,
- loanInstallments, salaryAids,checkoutRollCall,command.EmployeeMandatoryHours, hasInsuranceShareTheSameAsList);
+ firstDayOfMonth.AddMonthsFa(1, out var lastDayOfCurrentMonth);
- _checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
- //_checkoutRepository.SaveChanges();
+ lastDayOfCurrentMonth = lastDayOfCurrentMonth.AddDays(-1);
- //var employeeFullName = new SqlParameter("@EmployeeFullName", SqlDbType.NVarChar, 50);
- //employeeFullName.Value = command.EmployeeFullName;
- //var fathersName = new SqlParameter("@FathersName", SqlDbType.NVarChar, 20);
- //fathersName.Value = command.EmployeeFullName;
+ int dateRange = (int)(lastDayOfCurrentMonth - firstDayOfCurrentMonth).TotalDays + 1;
- }
+ var holidays = _holidayItemApplication.Search(new HolidayItemSearchModel()
+ {
+ HolidayYear = command.ContractStartGr.ToFarsiYear()
+ });
+ //all the dates from start to end, to be compared with present days to get absent dates
+ var completeDaysList = Enumerable.Range(0, dateRange).Select(offset => firstDayOfCurrentMonth.AddDays(offset).Date).ToList();
+
+ var absentRecords = completeDaysList
+ .ExceptBy(command.GroupedRollCalls.Select(x => x.CreationDate.Date), y => y.Date)
+ .Select(x =>
+ {
+ var leave = leaves.FirstOrDefault(y =>
+ y.EmployeeId == command.EmployeeId && y.EndLeaveGr.Date >= x.Date && y.StartLeaveGr.Date <= x.Date);
+ var isHoliday = holidays.Any(y => y.HolidaydateGr == x.Date);
+ var isFriday = x.Date.DayOfWeek == DayOfWeek.Friday;
+ var isNormalWorkingDay = isHoliday == false && isFriday == false;
+ return new CheckoutDailyRollCallViewModel()
+ {
+ StartDate1 = null,
+ EndDate1 = null,
+ DateTimeGr = x.Date,
+ DayOfWeek = x.Date.DayOfWeek.ToString(),
+ RollCallDateFa = x.Date.ToFarsi(),
+ LeaveType = leave != null ? leave.LeaveType : "",
+ IsAbsent = leave == null && isNormalWorkingDay
+ };
+ });
+
+ var presentDays = command.GroupedRollCalls.Select(x =>
+ {
+
+ var orderedRollcalls = x.ShiftList.OrderBy(y => y.Start);
+
+ var rollCallTimeSpanPerDay = x.SumOneDaySpan;
+ TimeSpan breakTimePerDay = x.BreakTime;
+
+ return new CheckoutDailyRollCallViewModel()
+ {
+ StartDate1 = orderedRollcalls.FirstOrDefault().Start.ToString("HH:mm"),
+ EndDate1 = orderedRollcalls.FirstOrDefault().EndWithOutResTime.ToString("HH:mm"),
+
+ StartDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.Start.ToString("HH:mm") ?? "",
+ EndDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.EndWithOutResTime.ToString("HH:mm") ?? "",
+
+ TotalhourseSpan = rollCallTimeSpanPerDay,
+
+ BreakTimeTimeSpan = breakTimePerDay,
+
+ DayOfWeek = x.CreationDate.DayOfWeek.DayOfWeeKToPersian(),
+ RollCallDateFa = x.CreationDate.Date.ToFarsi(),
+ DateTimeGr = x.CreationDate.Date,
+ IsSliced = x.ShiftList.Count() > 2,
+ IsAbsent = false
+ };
+ });
- }
+ presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel
+ {
+ StartDate1 = x.StartDate1,
+ EndDate1 = x.EndDate1,
+ EndDate2 = x.EndDate2,
+ StartDate2 = x.StartDate2,
+ TotalWorkingHours = $"{(int)(x.TotalhourseSpan.TotalHours)}:{x.TotalhourseSpan.Minutes:00}",
+ BreakTimeString = $"{(int)(x.BreakTimeTimeSpan.TotalHours)}:{x.BreakTimeTimeSpan.Minutes:00}",
+ TotalhourseSpan = x.TotalhourseSpan,
+ BreakTimeTimeSpan = x.BreakTimeTimeSpan,
+ DayOfWeek = x.DayOfWeek,
+ RollCallDateFa = x.RollCallDateFa,
+ DateTimeGr = x.DateTimeGr,
+ IsSliced = x.IsSliced,
+ IsAbsent = false
+ });
- public OperationResult Edit(EditCheckout command)
- {
- throw new NotImplementedException();
- }
+ var result = presentDays.Concat(absentRecords).OrderBy(x => x.DateTimeGr).ToList();
+ result.ForEach(x =>
+ {
+ x.IsHoliday = holidays.Any(y => x.DateTimeGr.Date == y.HolidaydateGr.Date);
+ x.IsFriday = x.DateTimeGr.DayOfWeek == DayOfWeek.Friday;
+ });
- public EditCheckout GetDetails(long id)
- {
- return _checkoutRepository.GetDetails(id);
- }
+ var checkoutRollCallDays = result.Select(x => new CheckoutRollCallDay(x.DateTimeGr,
+ x.StartDate1, x.EndDate1, x.StartDate2, x.EndDate2,
+ x.BreakTimeTimeSpan, x.IsSliced, x.TotalhourseSpan, x.IsAbsent, x.IsFriday, x.IsHoliday, x.LeaveType))
+ .ToList();
- public async Task GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month,
- string contractStart, string contractEnd)
- {
- return await _checkoutRepository.GetContractResultToCreateCheckout(workshopId, employeeId, year, month, contractStart,
- contractEnd);
- }
+ double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(syear, smonth);
+ int mandatoryWholeHours = (int)mandatoryHours;
+ int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
+
+ var totalMandatoryHours = TimeSpan.FromHours(mandatoryWholeHours).Add(TimeSpan.FromMinutes(mandatoryMinutes));
+ var checkoutRollCall = new CheckoutRollCall(totalMandatoryHours, command.TotalPresentTimeSpan, command.TotalBreakTimeSpan,
+ command.TotalWorkingTimeSpan, command.TotalPaidLeave, command.TotalSickLeave, checkoutRollCallDays);
+
+
+
+
+ var totalClaimsDouble = monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + command.OvertimePay +
+ command.NightworkPay + familyAllowance + bunos + years + command.LeavePay + command.FridayPay + command.ShiftPay;
+ var totalClaims = totalClaimsDouble.ToMoney();
+ var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction + command.InstallmentDeduction + command.SalaryAidDeduction;
+ var totalDeductions = totalDeductionDouble.ToMoney();
+ var totalPayment = totalClaimsDouble - totalDeductionDouble;
+
+ if (_checkoutRepository.Exists(x =>
+ x.Month == command.Month && x.Year == command.Year && x.ContractNo == command.ContractNo))
+ {
+ operation.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ }
+ else
+ {
+ if (string.IsNullOrWhiteSpace(command.Signature))
+ {
+ command.Signature = "0";
+ }
+
+
+ var checkout = new Checkout(command.EmployeeFullName, command.FathersName, command.NationalCode
+ , command.DateOfBirth, command.EmployeeId, command.WorkshopName, command.WorkshopId, command.ContractNo, command.ContractStartGr, command.ContractEndGr, month, year,
+ command.ContractId, command.WorkingHoursId, monthlyWage, bacicYears, consumableItem, housingAllowance
+ , command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
+ command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue
+ , command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute,
+ loanInstallments, salaryAids, checkoutRollCall, command.EmployeeMandatoryHours, hasInsuranceShareTheSameAsList);
+
+ _checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
+ //_checkoutRepository.SaveChanges();
+
+ //var employeeFullName = new SqlParameter("@EmployeeFullName", SqlDbType.NVarChar, 50);
+ //employeeFullName.Value = command.EmployeeFullName;
+ //var fathersName = new SqlParameter("@FathersName", SqlDbType.NVarChar, 20);
+ //fathersName.Value = command.EmployeeFullName;
+
+ }
+
+
+ }
+
+ public OperationResult Edit(EditCheckout command)
+ {
+ throw new NotImplementedException();
+ }
+
+ public EditCheckout GetDetails(long id)
+ {
+ return _checkoutRepository.GetDetails(id);
+ }
+
+ public async Task GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month,
+ string contractStart, string contractEnd)
+ {
+ return await _checkoutRepository.GetContractResultToCreateCheckout(workshopId, employeeId, year, month, contractStart,
+ contractEnd);
+
+ }
public Task> SearchCheckoutOptimized(CheckoutSearchModel searchModel)
{
@@ -440,32 +441,32 @@ public class CheckoutApplication : ICheckoutApplication
var watch = System.Diagnostics.Stopwatch.StartNew();
watch.Start();
var result = new List();
- var query = await _checkoutRepository.SearchForMainCheckout(searchModel);
- query = query.Select(x => new CheckoutViewModel()
- {
- Id = x.Id,
- EmployeeFullName = x.EmployeeFullName,
- ContractStart = x.ContractStart,
- ContractEnd = x.ContractEnd,
- ContractStartGr = x.ContractStartGr,
- ContractEndGr = x.ContractEndGr,
- PersonnelCode = x.PersonnelCode,
- PersonnelCodeInt = x.PersonnelCodeInt,
- ArchiveCode = x.ArchiveCode,
- SumOfWorkingDays = x.SumOfWorkingDays,
- WorkshopName = x.WorkshopName,
- Month = x.Month,
- Year = x.Year,
- ContractNo = x.ContractNo,
- ContractId = x.ContractId,
- WorkshopId = x.WorkshopId,
- EmployeeId = x.EmployeeId,
- IsActiveString = x.IsActiveString,
- Signature = x.Signature,
- CreationDate = x.CreationDate,
- EmployerName = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.EmployerFullName,
- IsBlockCantracingParty = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.IsBlockContractingParty,
- }).ToList();
+ var query = await _checkoutRepository.SearchForMainCheckout(searchModel);
+ query = query.Select(x => new CheckoutViewModel()
+ {
+ Id = x.Id,
+ EmployeeFullName = x.EmployeeFullName,
+ ContractStart = x.ContractStart,
+ ContractEnd = x.ContractEnd,
+ ContractStartGr = x.ContractStartGr,
+ ContractEndGr = x.ContractEndGr,
+ PersonnelCode = x.PersonnelCode,
+ PersonnelCodeInt = x.PersonnelCodeInt,
+ ArchiveCode = x.ArchiveCode,
+ SumOfWorkingDays = x.SumOfWorkingDays,
+ WorkshopName = x.WorkshopName,
+ Month = x.Month,
+ Year = x.Year,
+ ContractNo = x.ContractNo,
+ ContractId = x.ContractId,
+ WorkshopId = x.WorkshopId,
+ EmployeeId = x.EmployeeId,
+ IsActiveString = x.IsActiveString,
+ Signature = x.Signature,
+ CreationDate = x.CreationDate,
+ EmployerName = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.EmployerFullName,
+ IsBlockCantracingParty = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.IsBlockContractingParty,
+ }).ToList();
//foreach (var items in query)
//{
// var s = _employerRepository.GetEmployerByWorkshopId(items.WorkshopId);
@@ -483,239 +484,239 @@ public class CheckoutApplication : ICheckoutApplication
Console.WriteLine("old : " + watch.Elapsed);
return query;
- }
+ }
- public List SimpleSearch(CheckoutSearchModel searchModel)
- {
- return _checkoutRepository.SimpleSearch(searchModel);
- }
+ public List SimpleSearch(CheckoutSearchModel searchModel)
+ {
+ return _checkoutRepository.SimpleSearch(searchModel);
+ }
- public List PrintAll(List id)
- {
- var result = _checkoutRepository.PrintAll(id);
- var oneRecord = result.FirstOrDefault();
- if (oneRecord == null)
- return new();
- result.ForEach(x =>
- {
+ public List PrintAll(List id)
+ {
+ var result = _checkoutRepository.PrintAll(id);
+ var oneRecord = result.FirstOrDefault();
+ if (oneRecord == null)
+ return new();
+ result.ForEach(x =>
+ {
- int yearFa;
- int monthFa;
- try
- {
- yearFa = int.Parse(oneRecord.Year);
- monthFa = oneRecord.Month.ToMonthByStringValue();
- }
- catch (Exception e)
- {
- return;
- }
- double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(yearFa, monthFa);
- int mandatoryWholeHours = (int)mandatoryHours;
- int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
- var totalWorking = new TimeSpan(x.MonthlyRollCall.Sum(y => y.TotalhourseSpan.Ticks));
- var totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(y => y.BreakTimeTimeSpan.Ticks));
- TimeSpan totalPresent = totalWorking + totalBreakTime;
- if (x.CheckoutRollCall == null)
- {
- if (x.HasRollCall)
- {
- totalWorking = new TimeSpan(x.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks)) -
- x.TotalHourlyLeave;
- totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
- totalPresent = totalWorking + totalBreakTime;
- }
- else
- {
- totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
- totalPresent = new TimeSpan(x.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks));
- totalWorking = totalPresent - totalBreakTime;
- }
+ int yearFa;
+ int monthFa;
+ try
+ {
+ yearFa = int.Parse(oneRecord.Year);
+ monthFa = oneRecord.Month.ToMonthByStringValue();
+ }
+ catch (Exception e)
+ {
+ return;
+ }
+ double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(yearFa, monthFa);
+ int mandatoryWholeHours = (int)mandatoryHours;
+ int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
+ var totalWorking = new TimeSpan(x.MonthlyRollCall.Sum(y => y.TotalhourseSpan.Ticks));
+ var totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(y => y.BreakTimeTimeSpan.Ticks));
+ TimeSpan totalPresent = totalWorking + totalBreakTime;
+ if (x.CheckoutRollCall == null)
+ {
+ if (x.HasRollCall)
+ {
+ totalWorking = new TimeSpan(x.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks)) -
+ x.TotalHourlyLeave;
+ totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
+ totalPresent = totalWorking + totalBreakTime;
+ }
+ else
+ {
+ totalBreakTime = new TimeSpan(x.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
+ totalPresent = new TimeSpan(x.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks));
+ totalWorking = totalPresent - totalBreakTime;
+ }
- x.TotalWorkingTimeStr =
- Tools.ToFarsiHoursAndMinutes((int)totalWorking.TotalHours, totalWorking.Minutes, "-");
- x.TotalBreakTimeStr =
- Tools.ToFarsiHoursAndMinutes((int)totalBreakTime.TotalHours, totalBreakTime.Minutes, "-");
- x.TotalPresentTimeStr =
- Tools.ToFarsiHoursAndMinutes((int)totalPresent.TotalHours, totalPresent.Minutes, "-");
- x.TotalMandatoryTimeStr = Tools.ToFarsiHoursAndMinutes(mandatoryWholeHours, mandatoryMinutes, "-");
-
- }
- });
-
- return result;
- }
+ x.TotalWorkingTimeStr =
+ Tools.ToFarsiHoursAndMinutes((int)totalWorking.TotalHours, totalWorking.Minutes, "-");
+ x.TotalBreakTimeStr =
+ Tools.ToFarsiHoursAndMinutes((int)totalBreakTime.TotalHours, totalBreakTime.Minutes, "-");
+ x.TotalPresentTimeStr =
+ Tools.ToFarsiHoursAndMinutes((int)totalPresent.TotalHours, totalPresent.Minutes, "-");
+ x.TotalMandatoryTimeStr = Tools.ToFarsiHoursAndMinutes(mandatoryWholeHours, mandatoryMinutes, "-");
- public CheckoutViewModel PrintOne(long id)
- {
- var result = _checkoutRepository.PrintOne(id);
+ }
+ });
- int yearFa;
- int monthFa;
- try
- {
- yearFa = int.Parse(result.Year);
- monthFa = result.Month.ToMonthByStringValue();
- }
- catch (Exception e)
- {
- return new();
- }
- double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(yearFa, monthFa);
- int mandatoryWholeHours = (int)mandatoryHours;
- int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
- TimeSpan totalWorking;
- TimeSpan totalBreakTime;
- TimeSpan totalPresent;
- TimeSpan totalHoursLeave;
- if (result.HasRollCall)
- {
- totalWorking = new TimeSpan(result.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks)) - result.TotalHourlyLeave;
- totalBreakTime = new TimeSpan(result.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
- totalPresent = totalWorking + totalBreakTime;
- }
- else
- {
- totalBreakTime = new TimeSpan(result.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
- totalPresent = new TimeSpan(result.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks));
- totalWorking = totalPresent - totalBreakTime;
- }
+ return result;
+ }
- result.TotalWorkingTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalWorking.TotalHours, totalWorking.Minutes, "-");
- result.TotalBreakTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalBreakTime.TotalHours, totalBreakTime.Minutes, "-");
- result.TotalPresentTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalPresent.TotalHours, totalPresent.Minutes, "-");
- result.TotalMandatoryTimeStr = Tools.ToFarsiHoursAndMinutes(mandatoryWholeHours, mandatoryMinutes, "-");
+ public CheckoutViewModel PrintOne(long id)
+ {
+ var result = _checkoutRepository.PrintOne(id);
- return result;
- }
+ int yearFa;
+ int monthFa;
+ try
+ {
+ yearFa = int.Parse(result.Year);
+ monthFa = result.Month.ToMonthByStringValue();
+ }
+ catch (Exception e)
+ {
+ return new();
+ }
+ double mandatoryHours = _mandatoryHoursApplication.GetMandatoryHoursByYearAndMonth(yearFa, monthFa);
+ int mandatoryWholeHours = (int)mandatoryHours;
+ int mandatoryMinutes = (int)((mandatoryHours - mandatoryWholeHours) * 60);
+ TimeSpan totalWorking;
+ TimeSpan totalBreakTime;
+ TimeSpan totalPresent;
+ TimeSpan totalHoursLeave;
+ if (result.HasRollCall)
+ {
+ totalWorking = new TimeSpan(result.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks)) - result.TotalHourlyLeave;
+ totalBreakTime = new TimeSpan(result.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
+ totalPresent = totalWorking + totalBreakTime;
+ }
+ else
+ {
+ totalBreakTime = new TimeSpan(result.MonthlyRollCall.Sum(x => x.BreakTimeTimeSpan.Ticks));
+ totalPresent = new TimeSpan(result.MonthlyRollCall.Sum(x => x.TotalhourseSpan.Ticks));
+ totalWorking = totalPresent - totalBreakTime;
+ }
- public CheckoutLeavePrintViewModel LeavePrint(long id)
- {
- return _checkoutRepository.PrintLeave(id);
- }
+ result.TotalWorkingTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalWorking.TotalHours, totalWorking.Minutes, "-");
+ result.TotalBreakTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalBreakTime.TotalHours, totalBreakTime.Minutes, "-");
+ result.TotalPresentTimeStr = Tools.ToFarsiHoursAndMinutes((int)totalPresent.TotalHours, totalPresent.Minutes, "-");
+ result.TotalMandatoryTimeStr = Tools.ToFarsiHoursAndMinutes(mandatoryWholeHours, mandatoryMinutes, "-");
- public OperationResult Sign(long id)
- {
- var opration = new OperationResult();
- var contract = _checkoutRepository.Get(id);
- if (contract == null)
- return opration.Failed("رکورد مورد نظر یافت نشد");
+ return result;
+ }
- contract.Sign();
+ public CheckoutLeavePrintViewModel LeavePrint(long id)
+ {
+ return _checkoutRepository.PrintLeave(id);
+ }
+
+ public OperationResult Sign(long id)
+ {
+ var opration = new OperationResult();
+ var contract = _checkoutRepository.Get(id);
+ if (contract == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ contract.Sign();
- _checkoutRepository.SaveChanges();
- opration.IsSuccedded = true;
- return opration.Succcedded();
- }
+ _checkoutRepository.SaveChanges();
+ opration.IsSuccedded = true;
+ return opration.Succcedded();
+ }
- public OperationResult UnSign(long id)
- {
- var opration = new OperationResult();
- var contract = _checkoutRepository.Get(id);
- if (contract == null)
- return opration.Failed("رکورد مورد نظر یافت نشد");
+ public OperationResult UnSign(long id)
+ {
+ var opration = new OperationResult();
+ var contract = _checkoutRepository.Get(id);
+ if (contract == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
- contract.UnSign();
+ contract.UnSign();
- _checkoutRepository.SaveChanges();
- opration.IsSuccedded = true;
- return opration.Succcedded();
- }
+ _checkoutRepository.SaveChanges();
+ opration.IsSuccedded = true;
+ return opration.Succcedded();
+ }
- public OperationResult Active(long id)
- {
- var opration = new OperationResult();
- var contract = _checkoutRepository.Get(id);
- if (contract == null)
- return opration.Failed("رکورد مورد نظر یافت نشد");
+ public OperationResult Active(long id)
+ {
+ var opration = new OperationResult();
+ var contract = _checkoutRepository.Get(id);
+ if (contract == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
- contract.Active();
+ contract.Active();
- _checkoutRepository.SaveChanges();
- return opration.Succcedded();
- }
+ _checkoutRepository.SaveChanges();
+ return opration.Succcedded();
+ }
- public OperationResult DeActive(long id)
- {
- var opration = new OperationResult();
- var contract = _checkoutRepository.Get(id);
- if (contract == null)
- return opration.Failed("رکورد مورد نظر یافت نشد");
+ public OperationResult DeActive(long id)
+ {
+ var opration = new OperationResult();
+ var contract = _checkoutRepository.Get(id);
+ if (contract == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
- contract.DeActive();
+ contract.DeActive();
- _checkoutRepository.SaveChanges();
+ _checkoutRepository.SaveChanges();
- return opration.Succcedded();
- }
+ return opration.Succcedded();
+ }
- public OperationResult RemoveCheckout(long id)
- {
- return _checkoutRepository.RemoveCheckout(id);
- }
+ public OperationResult RemoveCheckout(long id)
+ {
+ return _checkoutRepository.RemoveCheckout(id);
+ }
- public OperationResult CustomSet(long id, double rewardPay, double salaryAidDeduction)
- {
- var opration = new OperationResult();
- var checkout = _checkoutRepository.Get(id);
- var totalClaimsDouble = checkout.TotalClaims.MoneyToDouble();
- var totalDeductionsDouble = checkout.TotalDeductions.MoneyToDouble();
- totalClaimsDouble = (double)(totalClaimsDouble - checkout.RewardPay);
- totalDeductionsDouble = totalDeductionsDouble - checkout.SalaryAidDeduction;
+ public OperationResult CustomSet(long id, double rewardPay, double salaryAidDeduction)
+ {
+ var opration = new OperationResult();
+ var checkout = _checkoutRepository.Get(id);
+ var totalClaimsDouble = checkout.TotalClaims.MoneyToDouble();
+ var totalDeductionsDouble = checkout.TotalDeductions.MoneyToDouble();
+ totalClaimsDouble = (double)(totalClaimsDouble - checkout.RewardPay);
+ totalDeductionsDouble = totalDeductionsDouble - checkout.SalaryAidDeduction;
- var totalClaims = totalClaimsDouble + rewardPay;
- var totalDeductions = totalDeductionsDouble + salaryAidDeduction;
+ var totalClaims = totalClaimsDouble + rewardPay;
+ var totalDeductions = totalDeductionsDouble + salaryAidDeduction;
- var totalClaimsString = totalClaims.ToMoney();
- var totalDeductionsString = totalDeductions.ToMoney();
- var totalPayment = totalClaims - totalDeductions;
+ var totalClaimsString = totalClaims.ToMoney();
+ var totalDeductionsString = totalDeductions.ToMoney();
+ var totalPayment = totalClaims - totalDeductions;
- checkout.CustomSet(rewardPay, salaryAidDeduction, totalClaimsString, totalDeductionsString, totalPayment);
+ checkout.CustomSet(rewardPay, salaryAidDeduction, totalClaimsString, totalDeductionsString, totalPayment);
- _checkoutRepository.SaveChanges();
- opration.IsSuccedded = true;
- return opration.Succcedded();
- }
+ _checkoutRepository.SaveChanges();
+ opration.IsSuccedded = true;
+ return opration.Succcedded();
+ }
- #region Client
+ #region Client
- public List SearchForClient(CheckoutSearchModel searchModel)
- {
- return _checkoutRepository.SearchForClient(searchModel);
- }
+ public List SearchForClient(CheckoutSearchModel searchModel)
+ {
+ return _checkoutRepository.SearchForClient(searchModel);
+ }
- #endregion
- #region NewChangeByHeydari
- public List CheckHasSignature(List ids)
- {
- return _checkoutRepository.CheckHasSignature(ids);
- }
- public OperationResult DeleteAllCheckouts(List ids)
- {
- return _checkoutRepository.DeleteAllCheckouts(ids);
- }
- public OperationResult DeleteCheckout(long id)
- {
- return _checkoutRepository.DeleteCheckout(id);
- }
- public async Task> SearchForMainCheckout(CheckoutSearchModel searchModel)
- {
- return await _checkoutRepository.SearchForMainCheckout(searchModel);
- }
- #endregion
- #region Pooya
+ #endregion
+ #region NewChangeByHeydari
+ public List CheckHasSignature(List ids)
+ {
+ return _checkoutRepository.CheckHasSignature(ids);
+ }
+ public OperationResult DeleteAllCheckouts(List ids)
+ {
+ return _checkoutRepository.DeleteAllCheckouts(ids);
+ }
+ public OperationResult DeleteCheckout(long id)
+ {
+ return _checkoutRepository.DeleteCheckout(id);
+ }
+ public async Task> SearchForMainCheckout(CheckoutSearchModel searchModel)
+ {
+ return await _checkoutRepository.SearchForMainCheckout(searchModel);
+ }
+ #endregion
+ #region Pooya
- public List<(long EmployeeId, DateTime CheckoutStart, DateTime CheckoutEnd)> GetLastCheckoutsByWorkshopIdForWorkFlow(long workshopId, DateTime start, DateTime end)
- {
- return _checkoutRepository.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, start, end);
- }
+ public List<(long EmployeeId, DateTime CheckoutStart, DateTime CheckoutEnd)> GetLastCheckoutsByWorkshopIdForWorkFlow(long workshopId, DateTime start, DateTime end)
+ {
+ return _checkoutRepository.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, start, end);
+ }
public async Task> GetListForClient(long workshopId,CheckoutListClientSearchModel searchModel)
{
@@ -731,6 +732,58 @@ public class CheckoutApplication : ICheckoutApplication
#region ForApi
+ #region CreateWorkshop
+
+ ///
+ /// دریافت سلکت لیست پرسنل کارگاه
+ ///
+ ///
+ ///
+ public async Task> GetEmployeeSelectListByWorkshopId(long id)
+ {
+ return await _checkoutRepository.GetEmployeeSelectListByWorkshopId(id);
+ }
+
+ ///
+ /// دریافت لیست قراردادها برای ایجاد فیش حقوقی
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> GetContractToCreateCheckout(long workshopId, string year, string month, long employeeId)
+ {
+ var op = new OperationResult>();
+ if (workshopId < 1)
+ return op.Failed("کارگاه را انتخاب کنید");
+ if (string.IsNullOrWhiteSpace(year) || string.IsNullOrWhiteSpace(month))
+ return op.Failed("سال و ماه را انتخاب کنید");
+ var result = await GetContractResultToCreateCheckout(workshopId, employeeId, year, month, null,
+ null);
+ if(result.CreateCheckoutList.Count == 0)
+ return op.Failed("موردی یافت نشد");
+ var finalResult = result.CreateCheckoutList.Select(x => new ContractsListToCreateCheckoutDto
+ {
+ Id = x.Id,
+ ContractNo = x.ContractNo,
+ WorkshopName = x.WorkshopName,
+ EmployeeName = x.EmployeeName,
+ ContractStart = x.ContractStart,
+ ContractEnd = x.ContractEnd,
+ PersonnelCode = x.PersonnelCode,
+ Description = x.Description,
+ LeftWorkDate = x.LeftWorkDate,
+ CreateCheckoutStatus = x.HasCheckout ? CreateCheckoutStatus.HasCheckout : x.Extension == false ? CreateCheckoutStatus.NotValid : CreateCheckoutStatus.ReadyToCreate
+
+ }).ToList();
+
+ return op.Succcedded(finalResult);
+ }
+
+ #endregion
+
+
public async Task> GetList(CheckoutSearchModelDto searchModel)
{
return await _checkoutRepository.GetList(searchModel);
@@ -745,8 +798,8 @@ public class CheckoutApplication : ICheckoutApplication
var typeOfWorkingHours = "";
if (checkout.HasRollCall)
{
- result = await _rollCallMandatoryRepository.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false);
- typeOfWorkingHours = "دارای حضورغیاب";
+ result = await _rollCallMandatoryRepository.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false);
+ typeOfWorkingHours = "دارای حضورغیاب";
}
else
@@ -778,5 +831,11 @@ public class CheckoutApplication : ICheckoutApplication
RotatingShiftList = items
};
}
+
+ public Task> CheckoutPrint(List ids)
+ {
+ return _checkoutRepository.CheckoutPrint(ids);
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs
index 64ee3c80..1c45a32f 100644
--- a/CompanyManagment.Application/WorkshopAppliction.cs
+++ b/CompanyManagment.Application/WorkshopAppliction.cs
@@ -11,6 +11,7 @@ using Company.Domain.InstitutionContractAgg;
using Company.Domain.LeftWorkAgg;
using Company.Domain.LeftWorkInsuranceAgg;
using Company.Domain.WorkshopAgg;
+using CompanyManagment.App.Contracts.Checkout.Dto;
using CompanyManagment.App.Contracts.Employee;
using CompanyManagment.App.Contracts.Employee.DTO;
using CompanyManagment.App.Contracts.EmployeeChildren;
@@ -1131,5 +1132,16 @@ public class WorkshopAppliction : IWorkshopApplication
}
+
+ #endregion
+
+
+ #region ForApi
+
+ public async Task> GetAdminWorkshopSelectList()
+ {
+ return await _workshopRepository.GetAdminWorkshopSelectList();
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
index 4abe4c9d..29bdd214 100644
--- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
+++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
@@ -956,7 +956,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
- SalaryAidDateTimeGe = s.SalaryAidDateTime
+ SalaryAidDateTimeGe = s.SalaryAidDateTime,
}).ToList(),
CheckoutRollCall = item.CheckoutRollCall != null
? new CheckoutRollCallViewModel()
@@ -2816,10 +2816,44 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
#endregion
-
-
#region ForApi
+ ///ایجاد فیش
+ #region CreateCheckout
+
+
+ ///
+ /// دریافت سلکت لیست پرسنل کارگاه
+ ///
+ ///
+ ///
+ public async Task> GetEmployeeSelectListByWorkshopId(long id)
+ {
+ var employeesHasLeftworkData = _context.LeftWorkList.Where(x => x.WorkshopId == id).Select(x => x.EmployeeId);
+ var employees = await _context.Employees
+ .Where(x => employeesHasLeftworkData.Contains(x.id))
+ .Select(x =>
+ new EmployeeSelectListDto()
+ {
+ Id = x.id,
+ EmployeeFullName = x.FullName
+ })
+ .AsNoTracking()
+ .ToListAsync();
+ return employees;
+ }
+
+
+
+ #endregion
+
+
+
+ ///
+ /// دریافت لیست فیش حقوقی
+ ///
+ ///
+ ///
public async Task> GetList(CheckoutSearchModelDto searchModel)
{
var acountID = _authHelper.CurrentAccountId();
@@ -2827,43 +2861,40 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
.Select(x => x.WorkshopId);
-
var watch = new Stopwatch();
- watch.Start();
- var checkouts =
- (
- from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id))
- join x in _context.CheckoutSet
- on workshop.id equals x.WorkshopId
- select new
- {
- Id = x.id,
- EmployeeFullName = x.EmployeeFullName,
- EmployeeId = x.EmployeeId,
- ContractStart = x.ContractStart,
- ContractEnd = x.ContractEnd,
- PersonnelCode = x.PersonnelCode,
- SumOfWorkingDays = x.SumOfWorkingDays,
- Month = x.Month,
- Year = x.Year,
- ContractNo = x.ContractNo,
- IsActiveString = x.IsActiveString,
- Signature = x.Signature,
- IsUpdateNeeded = x.IsUpdateNeeded,
- WorkshopId = x.WorkshopId,
- ArchiveCode = workshop.ArchiveCode,
- WorkshopName = workshop.WorkshopFullName,
- WorkshopSignCheckout = workshop.SignCheckout,
-
- }
-
- ).OrderByDescending(x => x.Id)
- .ThenByDescending(x => x.Year)
- .ThenByDescending(x=>x.ContractStart)
- .ThenBy(x => x.PersonnelCode).AsNoTracking();
+ watch.Start();
+ var checkouts =
+ (
+ from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id))
+ join x in _context.CheckoutSet
+ on workshop.id equals x.WorkshopId
+ select new
+ {
+ Id = x.id,
+ EmployeeFullName = x.EmployeeFullName,
+ EmployeeId = x.EmployeeId,
+ ContractStart = x.ContractStart,
+ ContractEnd = x.ContractEnd,
+ PersonnelCode = x.PersonnelCode,
+ SumOfWorkingDays = x.SumOfWorkingDays,
+ Month = x.Month,
+ Year = x.Year,
+ ContractNo = x.ContractNo,
+ IsActiveString = x.IsActiveString,
+ Signature = x.Signature,
+ IsUpdateNeeded = x.IsUpdateNeeded,
+ WorkshopId = x.WorkshopId,
+ ArchiveCode = workshop.ArchiveCode,
+ WorkshopName = workshop.WorkshopFullName,
+ WorkshopSignCheckout = workshop.SignCheckout,
+ }
+ ).OrderByDescending(x => x.Id)
+ .ThenByDescending(x => x.Year)
+ .ThenByDescending(x => x.ContractStart)
+ .ThenBy(x => x.PersonnelCode).AsNoTracking();
Console.WriteLine("getList======================= : " + watch.Elapsed);
-
+
#region SercheModel
if (!string.IsNullOrWhiteSpace(searchModel.ContractNo))
@@ -2875,10 +2906,12 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
.OrderByDescending(x => x.ContractStart)
.ThenBy(x => x.PersonnelCode);
}
+
if (!string.IsNullOrWhiteSpace(searchModel.EmployeeFullName))
{
checkouts = checkouts.Where(x => x.EmployeeFullName.Contains(searchModel.EmployeeFullName));
}
+
if (searchModel.EmployerId != 0)
{
var workshopIds = _context.WorkshopEmployers.Where(e => e.EmployerId == searchModel.EmployerId)
@@ -2888,16 +2921,12 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
}
-
-
-
//سرچ سال
if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) &&
(string.IsNullOrWhiteSpace(searchModel.ContractStart) ||
string.IsNullOrWhiteSpace(searchModel.ContractEnd)))
{
-
var startYear = searchModel.Year + "/01/01";
var startyearGr = startYear.ToGeorgianDateTime();
var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth();
@@ -2905,15 +2934,14 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
checkouts = checkouts.Where(x => x.ContractStart >= startyearGr && x.ContractEnd <= endYearGr);
- if (searchModel.WorkshopId > 0 || !string.IsNullOrWhiteSpace(searchModel.EmployeeFullName) || searchModel.EmployerId > 0)
+ if (searchModel.WorkshopId > 0 || !string.IsNullOrWhiteSpace(searchModel.EmployeeFullName) ||
+ searchModel.EmployerId > 0)
checkouts = checkouts.OrderByDescending(x => x.ContractEnd);
-
}
else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) &&
string.IsNullOrWhiteSpace(searchModel.ContractStart) &&
string.IsNullOrWhiteSpace(searchModel.ContractEnd))
{
-
//سرچ سال و ماه
string y1 = $"{searchModel.Year}/{searchModel.Month}/01";
var startDate = y1.ToGeorgianDateTime();
@@ -3027,42 +3055,41 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
endDate >= x.ContractEnd && startDate < x.ContractEnd);
//if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0)
// checkouts = checkouts.OrderBy(x => x.PersonnelCodeInt);
-
}
else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) &&
!string.IsNullOrWhiteSpace(searchModel.ContractEnd) &&
string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month))
{
-
//سرچ تاریخ
var start = searchModel.ContractStart.ToGeorgianDateTime();
var endd = searchModel.ContractEnd.ToGeorgianDateTime();
checkouts = checkouts.Where(x =>
x.ContractStart >= start && x.ContractStart <= endd);
- if (searchModel.WorkshopId > 0 || !string.IsNullOrWhiteSpace(searchModel.EmployeeFullName) || searchModel.EmployerId > 0)
+ if (searchModel.WorkshopId > 0 || !string.IsNullOrWhiteSpace(searchModel.EmployeeFullName) ||
+ searchModel.EmployerId > 0)
checkouts = checkouts.OrderByDescending(x => x.ContractEnd).ThenBy(x => x.PersonnelCode);
}
-
#endregion
watch.Reset();
watch.Start();
-
- var checkoutQueryFilter = await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
+
+ var checkoutQueryFilter =
+ await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
Console.WriteLine("pagination===================== : " + watch.Elapsed);
- var employers =await
+ var employers = await
_context.WorkshopEmployers.Where(x => checkoutQueryFilter
.Select(c => c.WorkshopId).Contains(x.WorkshopId))
- .Select(x=> new {x.Employer, x.WorkshopId}).ToListAsync();
+ .Select(x => new { x.Employer, x.WorkshopId }).ToListAsync();
var contractingPartiesIds = employers.Select(x => x.Employer.ContractingPartyId).ToList();
var warningMessages = await _context.CheckoutWarningMessages.Where(x => checkoutQueryFilter
.Select(c => c.Id).Contains(x.CheckoutId)).ToListAsync();
-
+
var contractnigParties = await _context.PersonalContractingParties
.Where(x => contractingPartiesIds.Contains(x.id)).ToListAsync();
@@ -3077,7 +3104,8 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
{
var warningMessage = warningMessages.Where(wm => wm.CheckoutId == x.Id);
var empl = employers.First(em => em.WorkshopId == x.WorkshopId);
- var isBlock = contractnigParties.Any(cp => cp.id == empl.Employer.ContractingPartyId && cp.IsBlock == "true");
+ var isBlock =
+ contractnigParties.Any(cp => cp.id == empl.Employer.ContractingPartyId && cp.IsBlock == "true");
var option = options.FirstOrDefault(o => o.WorkshopId == x.WorkshopId && o.EmployeeId == x.EmployeeId);
return new CheckoutDto
{
@@ -3102,13 +3130,10 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
{
WarningMessage = wm.WarningMessage,
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
-
}).ToList()
};
-
-
})
- .ToList();
+ .ToList();
var count = await checkouts.CountAsync();
Console.WriteLine("FinalList================================ : " + watch.Elapsed);
return new PagedResult()
@@ -3118,5 +3143,322 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
};
}
+ ///
+ /// پرینت فیش حقوقی
+ /// Api
+ ///
+ ///
+ ///
+ public async Task> CheckoutPrint(List ids)
+ {
+ if (ids.Count == 0)
+ return new List();
+
+ var watch = new Stopwatch();
+ watch.Start();
+
+ var getCheckouts = await _context.CheckoutSet.Where(x => ids.Contains(x.id))
+ .AsNoTracking()
+ .ToListAsync();
+
+ var employers = await _context.WorkshopEmployers
+ .Where(x => x.WorkshopId == getCheckouts.First().WorkshopId).AsNoTracking()
+ .Select(x => new CheckoutEmployersList
+ {
+ IsLegal = x.Employer.IsLegal,
+ EmployerFullName = x.Employer.FullName
+ }).ToListAsync();
+
+ var employees =
+ (from x in _context.Employees.Where(x => getCheckouts.Select(ch => ch.EmployeeId).Contains(x.id))
+ select new
+ {
+ EmployeeId = x.id,
+ MaritalStatus = x.MaritalStatus
+ }
+ ).AsNoTracking();
+ var workshop = await _context.Workshops.AsNoTracking().FirstAsync(x => x.id == getCheckouts.First().WorkshopId);
+ var showSumOfPayments = workshop.TotalPaymentHide;
+ bool isLegal = employers.Any(x => x.IsLegal == "حقوقی");
+
+ var leftWorks = await _context.LeftWorkList.AsNoTracking()
+ .Where(x => x.WorkshopId == workshop.id).ToListAsync();
+
+ var result = getCheckouts.Select(x =>
+ {
+ var leftCheck = leftWorks
+ .FirstOrDefault(l =>
+ l.EmployeeId == x.EmployeeId && x.ContractStart >= l.StartWorkDate &&
+ x.ContractStart <= l.LeftWorkDate && l.HasLeft);
+ bool hasLeft = false;
+ var leftWorkDate = "";
+ var lastDayOfWork = "";
+ if (leftCheck != null)
+ {
+ var contractLeftWorkDate = x.ContractEnd.AddDays(1);
+ if (leftCheck.HasLeft && leftCheck.LeftWorkDate == contractLeftWorkDate)
+ {
+ hasLeft = true;
+ leftWorkDate = leftCheck.LeftWorkDate.ToFarsi();
+ lastDayOfWork = x.ContractEnd.ToFarsi();
+ }
+ }
+
+ var overTimeWorkValue = x.OvertimePay > 0 ? x.OverTimeWorkValue : "-";
+ var overNightWorkValue = x.NightworkPay > 0 ? x.OverNightWorkValue : "-";
+ var fridayWorkValue = x.FridayPay > 0 ? x.FridayWorkValue : "-";
+ var maritalStatus = employees.First(e => e.EmployeeId == x.EmployeeId).MaritalStatus;
+ var rewardPay = x.RewardPay == null ? "-" : x.RewardPay.ToMoneyCheckZeroNullable();
+ var rotatingShiftValue = x.ShiftPay > 0 ? x.RotatingShiftValue : "-";
+ var totalDeduction = "-";
+ var totalPayment = "-";
+ var totalClaims = "-";
+ if (showSumOfPayments)
+ {
+ totalDeduction = x.TotalDeductions;
+ totalPayment = x.TotalPayment.ToMoneyCheckZero();
+ totalClaims = x.TotalClaims;
+ }
+
+ List rollcalls = [];
+ TimeSpan TotalPresentTimeSpan;
+ TimeSpan TotalBreakTimeSpan;
+ TimeSpan TotalWorkingTimeSpan;
+ TimeSpan TotalPaidLeaveTmeSpan;
+ TimeSpan TotalMandatoryTimeSpan;
+ TimeSpan TotalSickLeaveTimeSpan;
+ if (x.CheckoutRollCall != null)
+ {
+ TotalMandatoryTimeSpan = x.CheckoutRollCall.TotalPresentTimeSpan;
+ TotalBreakTimeSpan = x.CheckoutRollCall.TotalBreakTimeSpan;
+ TotalWorkingTimeSpan = x.CheckoutRollCall.TotalWorkingTimeSpan;
+ TotalPaidLeaveTmeSpan = x.CheckoutRollCall.TotalPaidLeaveTmeSpan;
+ TotalMandatoryTimeSpan = x.CheckoutRollCall.TotalMandatoryTimeSpan;
+ TotalSickLeaveTimeSpan = x.CheckoutRollCall.TotalSickLeaveTimeSpan;
+ rollcalls = x.CheckoutRollCall.RollCallDaysCollection.Select(r => new CheckoutPrintRollCallDto()
+ {
+ DayOfWeek = r.Date.DayOfWeek.DayOfWeeKToPersian(),
+ StartDate1 = r.FirstStartDate,
+ EndDate1 = r.FirstEndDate,
+ StartDate2 = r.SecondStartDate,
+ EndDate2 = r.SecondEndDate,
+ IsSliced = r.IsSliced,
+ LeaveType = r.LeaveType,
+ IsAbsent = r.IsAbsent,
+ IsFriday = r.IsFriday,
+ IsHoliday = r.IsHoliday,
+ TotalWorkingHours = $"{(int)(r.WorkingTimeSpan.TotalHours)}:{r.WorkingTimeSpan.Minutes:00}",
+ BreakTimeString = $"{(int)(r.BreakTimeSpan.TotalHours)}:{r.BreakTimeSpan.Minutes:00}",
+ RollCallDateFa = r.Date.ToFarsi()
+
+ }).ToList();
+ }
+ else
+ {
+
+ // if (x.HasRollCall)
+ // x.MonthlyRollCall = _rollCallRepository.GetEmployeeRollCallsForMonth(x.EmployeeId, x.WorkshopId,
+ // x.ContractStartGr, x.ContractEndGr);
+ // else
+ // {
+ // x.CreateWorkingHoursTemp.ContractStartGr = x.ContractStartGr;
+ // x.CreateWorkingHoursTemp.ContractEndGr = x.ContractEndGr;
+ // x.CreateWorkingHoursTemp.ContarctStart = x.ContractStartGr.ToFarsi();
+ // x.CreateWorkingHoursTemp.ContractEnd = x.ContractEndGr.ToFarsi();
+ // x.CreateWorkingHoursTemp.EmployeeId = x.EmployeeId;
+ // x.CreateWorkingHoursTemp.WorkshopId = x.WorkshopId;
+ // x.MonthlyRollCall =
+ // ConvertStaticToRollCall(x.CreateWorkingHoursTemp,
+ // workshopName.WorkshopHolidayWorking);
+ // }
+ }
+
+ return new CheckoutPrintDto()
+ {
+ Id = x.id,
+
+ // هدر فیش
+ // اطلاعات هویتی
+ // اطلاعات کارگاه
+
+ #region Header
+
+ EmployeeFullName = x.EmployeeFullName,
+ FathersName = x.FathersName,
+ NationalCode = x.NationalCode,
+ DateOfBirth = x.DateOfBirth,
+ WorkshopName = workshop.WorkshopName,
+ ContractNo = x.ContractNo,
+ Month = x.Month,
+ Year = x.Year,
+ EmployersLists = employers,
+ EmployerIslegal = isLegal,
+ HasLeft = hasLeft,
+ LastDayOfWork = lastDayOfWork,
+ LeftWorkDate = leftWorkDate,
+
+ #endregion
+
+ //جدول مطالبات و کسورات
+
+ #region PaymentAndDeductionTable
+
+ //مطالبات
+ PaymentList =
+ [
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 1, Title = "حقوق و مزد", Value = $"{x.SumOfWorkingDays}",
+ Amount = x.MonthlySalary.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 2, Title = "پایه سنوات", Value = "-", Amount = x.BaseYearsPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 3, Title = "کمک هزینه اقلام مصرفی خانوار", Value = "-",
+ Amount = x.ConsumableItems.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 4, Title = "کمک هزینه مسکن", Value = "-",
+ Amount = x.HousingAllowance.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 5, Title = "فوق العاده اضافه کاری", Value = overTimeWorkValue,
+ Amount = x.OvertimePay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 6, Title = "فوق العاده شب کاری", Value = overNightWorkValue,
+ Amount = x.NightworkPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 7, Title = "فوق العاده جمعه کاری", Value = fridayWorkValue,
+ Amount = x.FridayPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ { RowNumber = 8, Title = "فوق العاده ماموریت", Value = "-", Amount = "-", },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 9, Title = "فوق العاده نوبت کاری", Value = rotatingShiftValue,
+ Amount = x.ShiftPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 10, Title = "کمک هزینه عائله مندی", Value = "-",
+ Amount = x.FamilyAllowance.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 11, Title = "حق تاهل", Value = maritalStatus,
+ Amount = x.MarriedAllowance.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ { RowNumber = 12, Title = "پاداش", Value = "-", Amount = rewardPay, },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 13, Title = "عیدی و پاداش", Value = "-",
+ Amount = x.BonusesPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 14, Title = "سنوات", Value = "-",
+ Amount = x.YearsPay.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 15, Title = "مزد مرخصی", Value = "-",
+ Amount = x.LeavePay.ToMoneyCheckZero(),
+ }
+ ],
+
+ //کسورات
+ DeductionList =
+ [
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 1, Title = "حق بیمه سهم کارگر", Value = "-",
+ Amount = x.InsuranceDeduction.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 2, Title = "مالیات بر حقوق", Value = "-",
+ Amount = x.TaxDeducation.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 3, Title = "قسط تسهیلات", Value = "-",
+ Amount = x.InstallmentDeduction.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ {
+ RowNumber = 4, Title = "مساعده", Value = "-", Amount = x.SalaryAidDeduction.ToMoneyCheckZero(),
+ },
+
+ new PaymentAndDeductionList()
+ { RowNumber = 5, Title = "غیبت", Value = "-", Amount = "-", }
+ ],
+
+ TotalPayment = totalPayment,
+ TotalDeductions = totalDeduction,
+ TotalClaims = totalClaims,
+
+ #endregion
+
+ //لیست ورود و خروج پرسنل
+ //اطلاعات ساعات کار و موظقی
+
+ #region RollCallData
+
+ MonthlyRollCall =rollcalls,
+ #endregion
+
+
+ //اقساط - مساعده
+
+ #region SalaryAidAndInstallmentData
+ SalaryAids= x.SalaryAids.Select(s=> new CheckoutPrintSalaryAidDto()
+ {
+ Amount = s.Amount,
+ SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
+ }).ToList(),
+
+ Installments = x.LoanInstallments.Select(i=>new CheckoutPrintInstallmentDto()
+ {
+ Amount = i.AmountForMonth,
+ RemainingAmount = i.LoanRemaining,
+ LoanAmount = i.LoanAmount
+ }).ToList(),
+
+
+ #endregion
+ };
+ }).ToList();
+
+ Console.WriteLine("print : " + watch.Elapsed);
+ return result;
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
index 30a06a9f..f8e55f70 100644
--- a/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
+++ b/CompanyManagment.EFCore/Repository/WorkshopRepository.cs
@@ -1187,14 +1187,14 @@ public class WorkshopRepository : RepositoryBase !string.IsNullOrEmpty(x.ArchiveCode))
.Select(x => x.ArchiveCode)
.ToList();
-
+
int maxArchiveCode = 0;
-
+
foreach (var code in archiveCodes)
{
// Remove "b-" prefix if exists
string cleanCode = code.StartsWith("b-") ? code.Substring(2) : code;
-
+
// Try to parse the clean code to an integer
if (int.TryParse(cleanCode, out int codeValue))
{
@@ -1204,7 +1204,7 @@ public class WorkshopRepository : RepositoryBase x.StartWork).ToList();
}
+
+
+
+ #endregion
+
+
+ #region ForApi
+
+ public async Task> GetAdminWorkshopSelectList()
+ {
+ var watch = new Stopwatch();
+ watch.Start();
+ var acountId = _authHelper.CurrentAccountId();
+
+ var workshopIds = _context.WorkshopAccounts.AsNoTracking().Where(x => x.AccountId == acountId).Select(x => x.WorkshopId);
+
+ var employers = await
+ _context.WorkshopEmployers.AsNoTracking().Where(x => workshopIds.Contains(x.WorkshopId))
+ .Select(x => new { x.Employer, x.WorkshopId }).ToListAsync();
+
+ var blockedContractingParties =await _context.PersonalContractingParties
+ .Where(x => x.IsBlock == "true").Select(x=>x.id).ToListAsync();
+
+ var workshops = await _context.Workshops.AsNoTracking()
+ .Where(x => workshopIds.Contains(x.id))
+ .Where(x => x.IsActiveString == "true").ToListAsync();
+
+
+ var result = workshops.Select(x =>
+ {
+ var empl = employers.First(em => em.WorkshopId == x.id);
+ var isBlock = blockedContractingParties.Any(cp => cp == empl.Employer.ContractingPartyId);
+ return new AdminWorkshopSelectListDto
+ {
+ Id = x.id,
+ WorkshopFullName = x.WorkshopFullName,
+ ArchiveCode = x.ArchiveCode,
+ IsBlock = isBlock
+ };
+
+ }).OrderBy(x=>x.IsBlock ? 1 : 0)
+ .ToList();
+
+ Console.WriteLine("workshopSelectList : " +watch.Elapsed);
+ return result;
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
index 8f3df3e9..295d50b7 100644
--- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
+++ b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
@@ -2,18 +2,26 @@
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Checkout.Dto;
using CompanyManagment.App.Contracts.InstitutionPlan;
+using CompanyManagment.App.Contracts.Workshop;
+using CompanyManagment.App.Contracts.Workshop.DTOs;
using Microsoft.AspNetCore.Mvc;
+using NuGet.Packaging.Signing;
using ServiceHost.BaseControllers;
+using WorkFlow.Application.Contracts.WorkFlow;
namespace ServiceHost.Areas.Admin.Controllers;
public class CheckoutController : AdminBaseController
{
private readonly ICheckoutApplication _checkoutApplication;
+ private readonly IWorkshopApplication _workshopApplication;
+ private readonly IWorkFlowApplication _workFlowApplication;
- public CheckoutController(ICheckoutApplication checkoutApplication)
+ public CheckoutController(ICheckoutApplication checkoutApplication, IWorkshopApplication workshopApplication, IWorkFlowApplication workFlowApplication)
{
_checkoutApplication = checkoutApplication;
+ _workshopApplication = workshopApplication;
+ _workFlowApplication = workFlowApplication;
}
///
@@ -39,5 +47,81 @@ public class CheckoutController : AdminBaseController
return result;
}
+ ///
+ /// پرینت گروهی فیش حقوقی
+ ///
+ ///
+ ///
+ [HttpGet("GroupPrint")]
+ public async Task> Print(List ids)
+ {
+ var result =await _checkoutApplication.CheckoutPrint(ids);
+ return result;
+ }
+
+ ///
+ /// پرینت تکی فیش حقوقی
+ ///
+ ///
+ ///
+ [HttpGet("PrintOne")]
+ public async Task> Print(long id)
+ {
+ var result = await _checkoutApplication.CheckoutPrint([id]);
+ return result;
+ }
+
+
+ #region CreateCheckout
+ ///
+ /// سلکت لیست کارگاه
+ ///
+ ///
+ [HttpGet("WorkshopSelectList")]
+ public async Task> GetWorkshopSelectList()
+ {
+ var result =await _workshopApplication.GetAdminWorkshopSelectList();
+ return result;
+ }
+
+ ///
+ /// سلک لیست پرسنل
+ ///
+ ///
+ ///
+ [HttpGet("EmployeeSelectList")]
+ public async Task> GetEmployeeSelectListByWorkshopId(long workshopId)
+ {
+ var result = await _checkoutApplication.GetEmployeeSelectListByWorkshopId(workshopId);
+ return result;
+ }
+
+
+ ///
+ /// دریافت لیست قراردادها برای ایجاد فیش حقوقی
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("GetContractsToCreateCheckout")]
+ public async Task>> GetContractsToCreateCheckout(long workshopId, string year, string month, long employeeId)
+ {
+
+ var result =await _checkoutApplication.GetContractToCreateCheckout(workshopId, year, month, employeeId);
+ if (!result.IsSuccedded)
+ return result;
+
+ var hasWorkFlow =await _workFlowApplication.HasWorkFlow(workshopId, year, month);
+
+ if (hasWorkFlow)
+ return new OperationResult>().Failed(
+ "این کارگاه به دلیل داشتن کارپوشه مجاز به ایجاد تصفیه حساب نمی باشد");
+ return result;
+
+ }
+ #endregion
+
}
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs
index a98a852a..a1a37028 100644
--- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs
+++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs
@@ -22,9 +22,12 @@ public class CheckoutPrintAllModel : PageModel
}
public void OnGet(string idlist)
- {
- var ids = ExtractNumbers(idlist);
- var resultList = new List();
+ {
+
+
+ var ids = ExtractNumbers(idlist);
+
+ var resultList = new List();
var res = _checkoutApplication.PrintAll(ids);
diff --git a/ServiceHost/Program.cs b/ServiceHost/Program.cs
index 218871e3..98953155 100644
--- a/ServiceHost/Program.cs
+++ b/ServiceHost/Program.cs
@@ -386,17 +386,17 @@ if (builder.Environment.IsDevelopment())
{
var logConfig = configuration
.ReadFrom.Configuration(context.Configuration)
- .ReadFrom.Services(services)
- .Enrich.FromLogContext();
+ .ReadFrom.Services(services);
+
- logConfig.WriteTo.File(
- path: Path.Combine(logDirectory, "gozareshgir_log.txt"),
- rollingInterval: RollingInterval.Day,
- retainedFileCountLimit: 30,
- shared: true,
- outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
- );
+ //logConfig.WriteTo.File(
+ // path: Path.Combine(logDirectory, "gozareshgir_log.txt"),
+ // rollingInterval: RollingInterval.Day,
+ // retainedFileCountLimit: 30,
+ // shared: true,
+ // outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
+ //);
}, writeToProviders: true); // این باعث میشه کنسول پیشفرض هم کار کنه
}
diff --git a/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs
index e000f514..6ac9791c 100644
--- a/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs
+++ b/WorkFlow/Application/WorkFlow.Application.Contracts/WorkFlow/IWorkFlowApplication.cs
@@ -73,4 +73,15 @@ public interface IWorkFlowApplication
Task> GetEmployeesWithoutLunchBreak(long workshopId);
Task> GetEmployeesWithoutGroup(long workshopId);
+
+ #region ForApi
+ ///
+ /// در زمان ایجاد فیش کارپوشه کارگاه را چک میکند
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task HasWorkFlow(long workshopId, string year, string month);
+ #endregion
}
\ No newline at end of file
diff --git a/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs b/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs
index d644bb5f..ac28f42f 100644
--- a/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs
+++ b/WorkFlow/Application/WorkFlow.Application/WorkFlowApplication.cs
@@ -781,5 +781,66 @@ public class WorkFlowApplication : IWorkFlowApplication
return _customizedWorkshopSettingsACL.GetEmployeesWithoutGroup(workshopId);
}
+ #region ForApi
+
+
+ public async Task HasWorkFlow(long workshopId, string year, string month)
+ {
+ var workshop = _workshopRepository.GetDetails(workshopId);
+ bool hasWorkFlow = false;
+
+ var skipRollCallByWorkshopId = workshopId is 368 or 610;
+ if (workshop.HasRollCallFreeVip == "true" && !skipRollCallByWorkshopId)
+ {
+ DateTime startSreach;
+ DateTime endSearch;
+
+ if (month == "0" && year == "0")
+ {
+ DateTime now = DateTime.Now;
+ string startStr = $"{now.ToFarsi().Substring(0, 8)}01";
+ startSreach = startStr.ToGeorgianDateTime();
+ endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
+ }
+ else if (month == "0" && year != "0")
+ {
+ DateTime now = DateTime.Now;
+
+ string startStr = $"{year}/{now.ToFarsi().Substring(5, 2)}/01";
+ startSreach = startStr.ToGeorgianDateTime();
+ endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
+ }
+ else if (month != "0" && year == "0")
+ {
+ DateTime now = DateTime.Now;
+
+ string startStr = $"{now.ToFarsi().Substring(0, 4)}/{month}/01";
+ startSreach = startStr.ToGeorgianDateTime();
+ endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
+ }
+ else
+ {
+ string startStr = $"{year}/{month}/01";
+ startSreach = startStr.ToGeorgianDateTime();
+ endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
+ }
+
+
+ DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
+ if (lastMonthEnd == endSearch)
+ {
+ var countWorkFlowCut = await CountCutByBgServiceLastMonth(workshopId);
+ var countWorkFlowAbsent = await CountAbsentRollCallLastMonth(workshopId);
+ var countWorkFlowLunchBreak = await CountEmployeesWithoutLunchBreakLastMonth(workshopId);
+ var countUndefinedRollCalls = await CountUndefinedLastMonth(workshopId);
+
+ hasWorkFlow = countWorkFlowCut > 0 || countWorkFlowAbsent > 0 || countWorkFlowLunchBreak > 0 ||
+ countUndefinedRollCalls > 0;
+ }
+ }
+
+ return hasWorkFlow;
+ }
+ #endregion
}
\ No newline at end of file