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

@@ -17,7 +17,7 @@ public class Contract : EntityBase
public Contract(long personnelCode, long employeeId, long employerId,
long workshopIds, long yearlySalaryId, DateTime contarctStart, DateTime contractEnd, string dayliWage,
string archiveCode, DateTime getWorkDate, DateTime setContractDate, string jobType,
string contractType, string workshopAddress1, string workshopAddress2, string consumableItems, long jobTypeId, string housingAllowance, string agreementSalary, string workingHoursWeekly, string familyAllowance, string contractPeriod, double dailySalaryAffected, double baseYearAffected, double dailySalaryUnAffected, double baseYearUnAffected, bool hasManualDailyWage)
string contractType, string workshopAddress1, string workshopAddress2, string consumableItems, long jobTypeId, string housingAllowance, string agreementSalary, string workingHoursWeekly, string familyAllowance, string contractPeriod, double dailySalaryAffected, double baseYearAffected, double dailySalaryUnAffected, double baseYearUnAffected, bool hasManualDailyWage, string dailyWageType)
{
PersonnelCode = personnelCode;
EmployeeId = employeeId;
@@ -53,6 +53,8 @@ public class Contract : EntityBase
DailySalaryUnAffected = dailySalaryUnAffected;
BaseYearUnAffected = baseYearUnAffected;
HasManualDailyWage = hasManualDailyWage;
DailyWageType = dailyWageType;
#endregion
@@ -107,6 +109,10 @@ public class Contract : EntityBase
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
public string IsActiveString { get; private set; }
public string ArchiveCode { get; private set; }
@@ -131,6 +137,7 @@ public class Contract : EntityBase
public Contract()
{
WorkingHoursList = new List<WorkingHours>();
}
public void Edit(long pesrsonnelCode, long employeeId, long employerId, long workshopId, long yearlySalaryId,

View File

@@ -18,6 +18,16 @@ public interface IContractRepository : IRepository<long, Contract>
/// <param name="yearlySalaryId"></param>
/// <returns></returns>
Task<double> GetManualDailWage(long workshopId, long employeeId, long yearlySalaryId, DateTime contractStart);
/// <summary>
/// دریافت لیست مزد ارتقاء یافته
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="contractStart"></param>
/// <returns></returns>
Task<UpgradeManualDailyWageModel> GetManualDailWageList(long workshopId, long employeeId,
DateTime contractStart);
EditContract GetDetails(long id);
EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId);

View File

@@ -6,6 +6,7 @@ using CompanyManagment.App.Contracts.YearlySalary;
using System.Threading.Tasks;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.Contract;
namespace Company.Domain.YearlySalaryAgg;
@@ -38,7 +39,7 @@ public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
/// <param name="lastContractStart"></param>
/// <param name="lastContractManualDailyWage"></param>
/// <returns></returns>
Task<double> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
double lastContractManualDailyWage);
/// <summary>

View File

@@ -0,0 +1,70 @@
using CompanyManagment.App.Contracts.YearlySalary;
using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.Contract;
/// <summary>
/// نمایش نحوه محاسبه پایه سنوات و دستمزد روزانه
/// </summary>
public class ContractDailyWageAndBaseYearReport
{
/// <summary>
/// لیست داده های محاسبه پایه سنوات
/// </summary>
public BaseYearDataViewModel BaseYearDataViewModel { get; set; }
/// <summary>
/// پایه سنوات متاثر از ساعت کار
/// </summary>
public string BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه متاثر از ساعت کار
/// </summary>
public string DailySalaryAffected { get; set; }
/// <summary>
/// دستمزد روزانه بدون تاثیر ساعت کار
/// </summary>
public string DailySalaryUnAffected { get; set; }
/// <summary>
/// دستمزد روزانه تجمیعی
/// </summary>
public string DailyWage { get; set; }
/// <summary>
/// تاریخ قراداد
/// </summary>
public string ContractDate { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
/// <summary>
/// لیست ارتقاء
/// </summary>
public List<UpgradeManualDailyWageList> UpgradeManualDailyWageLists { get; set; }
/// <summary>
/// نام پرسنل
/// </summary>
public string EmployeeName { get; set; }
/// <summary>
/// نام کارگاه
/// </summary>
public string WorkshopName { get; set; }
/// <summary>
/// آیا با متد جدید محاسبه شده
/// </summary>
public bool OldComputeMethod { get; set; }
/// <summary>
/// آیا محاسبات با مقادیر ذخیره شده مغایرت دارد
/// </summary>
public bool Contradiction { get; set; }
}

View File

@@ -165,6 +165,11 @@ public class CreateContract
/// آیا دستمزد روزانه دستی وارد شده است؟
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
public List<ContractViweModel> Contracts { get; set; }
public List<WorkshopViewModel> Workshops { get; set; }
public List<EmployerViewModel> Employers { get; set; }

View File

@@ -0,0 +1,36 @@
using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.Contract;
/// <summary>
/// ویو مدل رتقاء دستمزد روزانه و لیست ارتقاء
/// </summary>
public class UpgradeManualDailyWageModel
{
/// <summary>
/// دستمزد روزانه
/// </summary>
public double DailyWage{ get; set; }
/// <summary>
/// لیست ارتقاء
/// </summary>
public List<UpgradeManualDailyWageList> UpgradeManualDailyWageLists { get; set; }
}
/// <summary>
/// لیست ارتقاء
/// </summary>
public class UpgradeManualDailyWageList
{
/// <summary>
/// تاریخ شروع و پایان بازه ارتقاء
/// </summary>
public string StartEndDate { get; set; }
/// <summary>
/// دستمزد روزانه
/// </summary>
public string DailyWage { get; set; }
}

View File

@@ -75,4 +75,9 @@ public class createContractModel
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
}

View File

@@ -24,6 +24,11 @@ public class BaseYearDataViewModel
/// </summary>
public double BaseYearResult { get; set; }
/// <summary>
/// اولین روز شروع بکار
/// </summary>
public string FirstWorkDayInLeftWork { get; set; }
/// <summary>
/// لیست تمام پایه سنوات های محاسبه شده
/// </summary>
@@ -64,4 +69,29 @@ public class BaseYearDataList
/// سالی که در آن پایه سنوات تعلق گرفته
/// </summary>
public string Year { get; set; }
/// <summary>
///روزی که پایه سنوات تعلق گرفته
///یا شروع بکار. ترک کار
/// شمسی
/// </summary>
public string BaseYearPayDay { get; set; }
/// <summary>
/// روزی که پایه سنوات تعلق گرفته
///یا شروع بکار. ترک کار
/// میلادی
/// </summary>
public DateTime BaseYearPayDayGr { get; set; }
/// <summary>
/// آیا تاریخ شروع بکار دارد
/// </summary>
public bool HasStartWork { get; set; }
/// <summary>
/// آیا تاریخ پایان کار دارد
/// </summary>
public bool HasLeftWork { get; set; }
}

View File

@@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.LeftWork;
namespace CompanyManagment.App.Contracts.YearlySalary;
@@ -15,6 +17,26 @@ public interface IYearlySalaryApplication
EditYearlySalary GetDetails(long id);
List<YearlySalaryViewModel> GetYearlySalary();
/// <summary>
/// متد ارتقاء مزد دلخواه
/// </summary>
/// <param name="newContractStart"></param>
/// <param name="lastContractStart"></param>
/// <param name="lastContractManualDailyWage"></param>
/// <returns></returns>
Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
double lastContractManualDailyWage);
/// <summary>
/// متد محاسبه پایه سنوات و لیست پایه سنوات های پرسنل
/// </summary>
/// <param name="contractStart"></param>
/// <param name="contractEnd"></param>
/// <param name="employeeId"></param>
/// <param name="workshopId"></param>
/// <param name="leftWorkList"></param>
/// <returns></returns>
Task<BaseYearDataViewModel> BaseYearComputeByContractId(long contractId);
/// <summary>
/// دریافت مزد روزانه بر اساس تاریخ شروع و پایان
/// </summary>

View File

@@ -149,7 +149,7 @@ public class ContractApplication : IContractApplication
command.JobType, command.ContractType, command.WorkshopAddress1, command.WorkshopAddress2,
command.ConsumableItems, command.JobTypeId, command.HousingAllowance, command.AgreementSalary,
command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod,command.DailySalaryAffected,
command.BaseYearAffected, command.DailySalaryUnAffected,command.BaseYearUnAffected, command.HasManualDailyWage);
command.BaseYearAffected, command.DailySalaryUnAffected,command.BaseYearUnAffected, command.HasManualDailyWage, command.DailyWageType);
_contractRepository.Create(makeContract);
_contractRepository.SaveChanges();
@@ -365,7 +365,7 @@ public class ContractApplication : IContractApplication
command.JobName, command.ContractType, command.WorkshopAddress1, command.WorkshopAddress2,
command.ConsumableItems, command.JobId, command.HousingAllowance, "0", command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod,
command.DailySalaryAffected,
command.BaseYearAffected, command.DailySalaryUnAffected, command.BaseYearUnAffected, command.HasManualDailyWage);
command.BaseYearAffected, command.DailySalaryUnAffected, command.BaseYearUnAffected, command.HasManualDailyWage, command.DailyWageType);
_contractRepository.Create(makeContract);
_contractRepository.SaveChanges();

View File

@@ -1,12 +1,17 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.YearlySalaryAgg;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.LeftWork;
using CompanyManagment.App.Contracts.YearlySalary;
using CompanyManagment.EFCore;
using Microsoft.EntityFrameworkCore;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace CompanyManagment.Application;
@@ -128,6 +133,36 @@ public class YearlySalaryApplication : IYearlySalaryApplication
return _yearlySalaryRepository.GetYearlySalary();
}
public Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart, double lastContractManualDailyWage)
{
return _yearlySalaryRepository.UpgradeManualDailyWage(newContractStart, lastContractStart,
lastContractManualDailyWage);
}
public async Task<BaseYearDataViewModel> BaseYearComputeByContractId(long contractId)
{
var contract = await _context.Contracts.FirstOrDefaultAsync(x => x.id == contractId);
var leftWorkList = await _context.LeftWorkList.Where(x=>x.EmployeeId ==contract.EmployeeId && x.WorkshopId == contract.WorkshopIds).Select(x => new LeftWorkViewModel()
{
Id = x.id,
LeftWorkDate = x.LeftWorkDate.ToFarsi(),
StartWorkDate = x.StartWorkDate.ToFarsi(),
LeftWorkDateGr = x.LeftWorkDate,
StartWorkDateGr = x.StartWorkDate,
WorkshopId = x.WorkshopId,
EmployeeId = x.EmployeeId,
HasLeft = x.HasLeft,
}).ToListAsync();
var baseYearResult = await _yearlySalaryRepository.BaseYearCompute(contract.ContarctStart, contract.ContractEnd,
contract.EmployeeId, contract.WorkshopIds, leftWorkList);
return baseYearResult;
}
public async Task<(double dailyWage, long yearlySalaryId)> GetDailyWageByStartEnd(DateTime start, DateTime end)
{
return await _yearlySalaryRepository.GetDailyWageByStartEnd(start, end);

View File

@@ -26,6 +26,7 @@ public class ContractMapping : IEntityTypeConfiguration<Contract>
builder.Property(x => x.ContractPeriod).HasMaxLength(2).IsRequired(false);
builder.Property(x => x.AgreementSalary).HasMaxLength(50).IsRequired(false);
builder.Property(x => x.Signature).HasMaxLength(1).IsRequired(false);
builder.Property(x=>x.DailyWageType).HasMaxLength(30).IsRequired(false);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class DailyWageTypeoContract : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "DailyWageType",
table: "Contracts",
type: "nvarchar(30)",
maxLength: 30,
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DailyWageType",
table: "Contracts");
}
}
}

View File

@@ -788,6 +788,10 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<double>("DailySalaryUnAffected")
.HasColumnType("float");
b.Property<string>("DailyWageType")
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<string>("DayliWage")
.IsRequired()
.HasMaxLength(50)

View File

@@ -66,17 +66,33 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
return lastContract.DailySalaryUnAffected;
double dailyWage = _yearlySalaryRepository.UpgradeManualDailyWage(contractStart,
var dailyWageResult = _yearlySalaryRepository.UpgradeManualDailyWage(contractStart,
lastContractYearlySalary.StartDate, lastContract.DailySalaryUnAffected).GetAwaiter().GetResult();
return dailyWage;
return dailyWageResult.DailyWage;
}
public async Task<UpgradeManualDailyWageModel> GetManualDailWageList(long workshopId, long employeeId,
DateTime contractStart)
{
var oldContracts = await _context.Contracts
.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.IsActiveString == "true" && x.DailyWageType == "ManualDailyWage" && x.ContarctStart < contractStart)
.OrderByDescending(x => x.ContarctStart)
.FirstOrDefaultAsync();
if (oldContracts == null)
return new UpgradeManualDailyWageModel();
//var endOfMonthFromStart = ($"{contractStart.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
var result =await _yearlySalaryRepository.UpgradeManualDailyWage(contractStart, oldContracts.ContarctStart,
oldContracts.DailySalaryUnAffected);
return result;
}
public EditContract GetDetails(long id)
{
return _context.Contracts.Select(x => new EditContract
@@ -107,8 +123,12 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
ContractPeriod = x.ContractPeriod,
AgreementSalary = x.AgreementSalary,
ArchiveCode = x.ArchiveCode,
BaseYearAffected = x.BaseYearAffected,
BaseYearUnAffected = x.BaseYearUnAffected,
DailySalaryAffected = x.DailySalaryAffected,
DailySalaryUnAffected = x.DailySalaryUnAffected,
HasManualDailyWage = x.HasManualDailyWage,
DailyWageType = x.DailyWageType,

File diff suppressed because it is too large Load Diff

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;
@@ -801,6 +808,10 @@
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;">
<div class="more-buttons flexible-div">

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

@@ -730,6 +730,19 @@ public class AutoExtensionModel : PageModel
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;