diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 47de9e95..4a7ee562 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -650,7 +650,115 @@ public static class Tools
return y2;
}
+ ///
+ /// تاریخ شمسی میگیرد و پایان ماه را به میلادی برمیگرداند
+ ///
+ ///
+ ///
+ public static DateTime FindeEndOfMonthReturnGr(this string date)
+ {
+ string y2 = string.Empty;
+ var year = Convert.ToInt32(date.Substring(0, 4));
+ var month = Convert.ToInt32(date.Substring(5, 2));
+ var YearD = date.Substring(0, 4);
+ var MonthD = date.Substring(5, 2);
+ if (month <= 6)
+ {
+ y2 = $"{YearD}/{MonthD}/31";
+ }
+ else if (month > 6 && month < 12)
+ {
+ y2 = $"{YearD}/{MonthD}/30";
+ }
+ else if (month == 12)
+ {
+ switch (year)
+ {
+ case 1346:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1350:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1354:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1358:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1362:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1366:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1370:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1375:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1379:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1383:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1387:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1391:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1395:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1399:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1403:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1408:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1412:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1416:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1420:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1424:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1428:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1432:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1436:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1441:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ case 1445:
+ y2 = $"{YearD}/{MonthD}/30";
+ break;
+ default:
+ y2 = $"{YearD}/{MonthD}/29";
+ break;
+
+ }
+ }
+
+ return y2.ToGeorgianDateTime();
+ }
///
/// تعداد روزهای سال را برمیگرداند
/// اگر کبیسهد بود سال 366 روزه برمیگرداند
diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
index 23a6b262..4b110f84 100644
--- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
+++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs
@@ -111,11 +111,12 @@ public interface ICheckoutRepository : IRepository
/// دریافت قردادها و جداول وابسته برای ایجاد فیش
///
///
+ ///
///
///
///
Task> GetContractsAndIncludeDataDataToCreateCheckout(
- List ids, string month, long workshopId);
+ List ids, string year, string month, long workshopId);
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs
index 035aeeba..11eedd3b 100644
--- a/CompanyManagment.Application/CheckoutApplication.cs
+++ b/CompanyManagment.Application/CheckoutApplication.cs
@@ -840,7 +840,7 @@ public class CheckoutApplication : ICheckoutApplication
#endregion
var getContcatsData = await
- _checkoutRepository.GetContractsAndIncludeDataDataToCreateCheckout(ids, month, workshopId);
+ _checkoutRepository.GetContractsAndIncludeDataDataToCreateCheckout(ids, year, month, workshopId);
return getContcatsData;
}
#endregion
diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
index b9ca4e43..0fffff4f 100644
--- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
+++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs
@@ -2762,8 +2762,11 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
return employees;
}
- public async Task> GetContractsAndIncludeDataDataToCreateCheckout(List ids, string month, long workshopId)
+ public async Task> GetContractsAndIncludeDataDataToCreateCheckout(List ids,string year, string month, long workshopId)
{
+ var checkoutSelectedStartFa = $"{year}/{month}/01";
+ var checkoutSelectedStart = checkoutSelectedStartFa.ToGeorgianDateTime();
+ var checkoutSelectedEnd = checkoutSelectedStartFa.FindeEndOfMonthReturnGr();
var op = new OperationResult();
var watcher = new Stopwatch();
watcher.Start();
@@ -3923,6 +3926,26 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos
timer.Start();
var separation = new List();
var seprationData = getContracts.Select(x => new { x.EmployeeId, x.ContarctStart, x.ContractEnd }).ToList();
+
+ foreach (var contract in seprationData)
+ {
+ var start = new DateTime();
+ var end = new DateTime();
+ for (var current = contract.ContarctStart; current <= contract.ContractEnd; current=current.AddDays(1))
+ {
+ if (start == new DateTime() && current >= checkoutSelectedStart && current <= checkoutSelectedEnd)
+ {
+ start = current;
+ }
+
+ if (end == new DateTime() && current == checkoutSelectedEnd)
+ {
+ end = current;
+ }
+ }
+ }
+
+
foreach (var item in seprationData)
{
bool hasLeft = false;
diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
index a3bc805b..9be056d6 100644
--- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
+++ b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs
@@ -133,8 +133,13 @@ public class CheckoutController : AdminBaseController
}
+ ///
+ /// ایجاد فیش حقوقی
+ ///
+ ///
+ ///
[HttpPost]
- public async Task> CreateCheckout()
+ public async Task> CreateCheckout([FromBody]TestCreateCheckout command)
{
var ids = new
List()
@@ -164,10 +169,16 @@ public class CheckoutController : AdminBaseController
};
- var test = await _checkoutApplication.CreateCheckoutApi(ids, "1404", "10", 499);
+ var test = await _checkoutApplication.CreateCheckoutApi(ids, command.year, command.Month, command.WorkshopId);
return test;
}
#endregion
}
+public class TestCreateCheckout
+{
+ public string year { get; set; }
+ public string Month { get; set; }
+ public long WorkshopId { get; set; }
+}
\ No newline at end of file