Completed DailYWage and BaseYear report For Contract

This commit is contained in:
SamSys
2025-08-28 06:09:02 +03:30
parent c40b457d1f
commit 7e3f7d1dcf
22 changed files with 14901 additions and 3864 deletions

View File

@@ -0,0 +1,375 @@
@using _0_Framework.Application
@model CompanyManagment.App.Contracts.Contract.ContractDailyWageAndBaseYearReport
@{
<style>
.modal .modal-dialog .modal-content {
width: 110% !important;
padding: 0 !important;
}
.trTable {
background-color: cadetblue;
color: aliceblue;
border-radius: 5px;
padding: 3px;
margin: 3px;
}
.st {
background: #cecece;
border-radius: 8px;
padding: 0;
overflow: hidden;
box-sizing: border-box;
direction: rtl;
font-family: "IranSans", sans-serif;
margin: 5px 0px;
font-size: 13px;
}
.st .header {
background: #0d4c4c;
color: #fff;
padding: 10px 14px;
text-align: center;
font-weight: 700;
border-radius: 8px 8px 0 0;
}
.st .trTable {
padding: 4px 9px;
margin: 0;
display: block;
margin: 3px 3px;
}
.st .trTable .content {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.st .trTable.green {
background: forestgreen;
color: #fff;
}
.st .trTable.red {
background: #d9534f;
color: #fff;
}
.st .trTable.teal {
background: #5fb0b0;
color: #fff;
}
.st .trTable.orange {
background: orangered;
color: #fff;
}
.date {
font-family: 'IranText' !important;
font-size: 12px;
}
</style>
}
<div class="container" style="margin: 10px 0px">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>نام پرسنل</div>
<div>@Model.EmployeeName</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>نام کارگاه</div>
<div>@Model.WorkshopName</div>
</div>
</div>
</div>
</div>
</div>
@if (Model.OldComputeMethod)
{
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<div class="trTable" style="background-color: #fbddda">
<div class="content" style="background-color: #fbddda">
<div style="color:red">این قراداد با روش قدیم محاسبه مزد ایجاد شده است</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12">
<button type="button" class="btn btn-warning btn-rounded waves-effect waves-light m-b-10" data-dismiss="modal">بستن فرم</button>
</div>
</div>
}
else
{
@if (Model.Contradiction)
{
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<div class="trTable" style="background-color: #fbddda">
<div class="content" style="background-color: #fbddda">
<div style="color:red">
<p>مقادیر محاسبه شده در این گزارش با مقادیر ذخیره شده در قراداد مغایرت دارد</p>
<p>احتمالا مواردی مانند شروع بکار/ترک کار پرسنل تغییر کرده است</p>
</div>
</div>
</div>
</div>
</div>
</div>
}
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header">محاسبه پایه سنوات</div>
@if (Model.BaseYearDataViewModel.BaseYearResult > 0)
{
@foreach (var item in Model.BaseYearDataViewModel.BaseYearDataList)
{
if (item.HasStartWork)
{
<div class="trTable green">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div>شروع بکار</div>
</div>
</div>
}
else if (item.HasLeftWork)
{
<div class="trTable red">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div>ترک کار</div>
</div>
</div>
}
else
{
if (item.BaseYearPayDay == "-")
{
<div class="trTable orange">
<div class="content">
<div>
<span class="date"> @item.BaseYearPayDayGr.ToFarsi()</span>
<span>فقط ارتقاء</span>
</div>
<div class="date">@item.BaseYear.ToMoney()</div>
</div>
</div>
}
else
{
<div class="trTable teal">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div class="date">@item.BaseYear.ToMoney()</div>
</div>
</div>
}
}
}
}
else
{
<div class="trTable">
<div class="trTable teal">
<div class="content">
<div>پایه سنوات ندارد</div>
</div>
</div>
</div>
}
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header"> محاسبه مزد روزانه </div>
@{
if (@Model.DailyWageType == "UpgradedDailyWage")
{
<div class="trTable">
<div class="content">
<div>بازه ارتقاء</div>
<div> ارتقاء مزد</div>
</div>
</div>
@foreach (var dailyWage in @Model.UpgradeManualDailyWageLists)
{
<div class="trTable">
<div class="content date">
<div>@dailyWage.StartEndDate</div>
<div>@dailyWage.DailyWage</div>
</div>
</div>
}
}
else if (@Model.DailyWageType == "ManualDailyWage")
{
<div class="trTable">
<div class="content date">
<div>مزد دلخواه</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
}
else
{
<div class="trTable">
<div class="content date">
<div>مزد سالانه</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
}
}
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #ff6100"> نتایج محاسبه پایه سنوات </div>
<div class="trTable date" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div> بدون تاثیر ساعت کار</div>
<div> @Model.BaseYearDataViewModel.BaseYearResult.ToMoney() </div>
</div>
</div>
<div class="trTable date" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>متاثر از ساعت کار</div>
<div> @Model.BaseYearAffected </div>
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #ff6100"> نتایج محاسبه مزد روزانه </div>
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>بدون تاثیر ساعت کار</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>متاثر از ساعت کار</div>
<div class="date"> @Model.DailySalaryAffected </div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #596059; padding: 3px"> دستمزد روزانه تجمیعی</div>
<div class="trTable" style="background-color: #3d7373">
<div class="content" style="background-color: #3d7373">
<div>@Model.ContractDate</div>
<div>@Model.DailyWage</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12">
<button type="button" class="btn btn-warning btn-rounded waves-effect waves-light m-b-10" data-dismiss="modal">بستن فرم</button>
</div>
</div>
}
</div>

View File

@@ -47,6 +47,13 @@
position: relative;
}
.dailyWageReportIcon {
font-size: 20px !important;
top: 2px !important;
position: relative;
padding :6px !important;
}
.ionRad {
border-radius: 8px !important;
padding: 0px 7px 0px 7px !important;
@@ -797,9 +804,13 @@
<i class="ion-medkit ionSize"></i>
</a>
<a permission="20121" class="btn btn-inverse pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
<a permission="20121" class="btn btn-inverse pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
href="#showmodal=@Url.Page("./Index", "CreatePaidLeave", new {employeeId = item.EmployeeId, workshopId = item.WorkshopIds})">
<i class="ion-briefcase ionSize"></i>
</a>
<a permission="20121" class="btn btn-success pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
style="background-color: #c630fa !important; border-color: #c630fa !important;" href="#showmodal=@Url.Page("./Index", "DailyWageAndBaseYearReport", new {contractId = item.Id})">
<i class="ion-alert dailyWageReportIcon"></i>
</a>
</div>
<div class="flexible-div op-td mobile-view" style="justify-content: flex-end;">

View File

@@ -135,6 +135,69 @@ public class IndexModel : PageModel
employeeFullName = searchModel.EmployeeName;
}
/// <summary>
/// نحوه محاسبه پایه سنوات و ارتقاء مزد رو نمایش میده
/// </summary>
/// <param name="contractId"></param>
/// <returns></returns>
public async Task<IActionResult> OnGetDailyWageAndBaseYearReport(long contractId)
{
var res = new ContractDailyWageAndBaseYearReport();
var contract = _contractApplication.GetDetails(contractId);
var employeeName = _employeeApplication.GetDetails(contract.EmployeeId).EmployeeFullName;
var workshopName = _workshopApplication.GetWorkshopInfo(contract.WorkshopIds).WorkshopFullName;
var baseYearResult =await _yearlySalaryApplication.BaseYearComputeByContractId(contractId);
if (contract.DailySalaryUnAffected == 0 || string.IsNullOrWhiteSpace(contract.DailyWageType))
{
res = new ContractDailyWageAndBaseYearReport()
{
EmployeeName = employeeName,
WorkshopName = workshopName,
Contradiction = false,
OldComputeMethod = true,
};
return Partial("DailyWageAndBaseYearReport", res);
}
var dailyWageListResult = new List<UpgradeManualDailyWageList>();
bool contradiction = false;
if (contract.DailyWageType == "UpgradedDailyWage")
{
var upgradeDailyWageResult = _contractRepository.GetManualDailWageList(contract.WorkshopIds,
contract.EmployeeId, contract.ContractStartGr).GetAwaiter().GetResult();
dailyWageListResult = upgradeDailyWageResult.UpgradeManualDailyWageLists;
//اگر مغایرت داشت
if (contract.DailySalaryUnAffected.ToMoney().MoneyToDouble() != upgradeDailyWageResult.DailyWage.ToMoney().MoneyToDouble()
|| baseYearResult.BaseYearResult.ToMoney().MoneyToDouble() != contract.BaseYearUnAffected.ToMoney().MoneyToDouble())
contradiction = true;
}
res = new ContractDailyWageAndBaseYearReport()
{
BaseYearDataViewModel = baseYearResult,
BaseYearAffected = contract.BaseYearAffected > 0 ? contract.BaseYearAffected.ToMoney() : "0",
DailySalaryAffected = contract.DailySalaryAffected > 0 ? contract.DailySalaryAffected.ToMoney() : "0",
DailySalaryUnAffected = contract.DailySalaryUnAffected > 0 ? contract.DailySalaryUnAffected.ToMoney() : "0",
DailyWage = contract.DayliWage,
ContractDate = $"تا تاریخ {contract.ContarctStart.FindeEndOfMonth()}",
DailyWageType = contract.DailyWageType,
UpgradeManualDailyWageLists = dailyWageListResult,
EmployeeName = employeeName,
WorkshopName = workshopName,
Contradiction = contradiction,
};
return Partial("DailyWageAndBaseYearReport", res);
}
public async Task<IActionResult> OnGetPersonelMainList(string searchEmployee)
{

View File

@@ -724,12 +724,25 @@ public class AutoExtensionModel : PageModel
foreach (var item in createContarctList)
{
#region NewManualDailyWage
double normaldailyWage = item.NormalDailyWage.MoneyToDouble();
double dailySalaryUnAffected = item.DailySalaryUnAffectedStr.MoneyToDouble();
item.HasManualDailyWage = dailySalaryUnAffected > normaldailyWage;
item.DailySalaryUnAffected = dailySalaryUnAffected;
switch (item.DailyWageType)
{
case "1": item.DailyWageType = "NormalDailyWage";
break;
case "2":
item.DailyWageType = item.HasManualDailyWage == true ? "UpgradedDailyWage" : "NormalDailyWage";
break;
case "3":
item.DailyWageType = "ManualDailyWage";
break;
}
#endregion
var result =

View File

@@ -573,6 +573,7 @@ $('#startProcess').on('click',
createContractModel.NormalDailyWage = $(this).find("input[name=normalDailyWage]").val();
createContractModel.DailySalaryUnAffectedStr = $(this).find("input[name=dailySalaryUnAffectedStr]").val();
createContractModel.DailyWageType = $(this).find("select[name=dailyWageType]").val();
if (createContractModel.DailySalaryUnAffectedStr == "0") {
$(this).find("input[name=dailySalaryUnAffectedStr]").addClass("erroreManual");
startCreate = false;