merge from api createApigateway

This commit is contained in:
MahanCh
2025-07-19 13:25:58 +03:30
35 changed files with 10906 additions and 344 deletions

View File

@@ -40,11 +40,11 @@ public class AqayePardakhtPaymentGateway:IPaymentGateway
callback = command.CallBackUrl,
card_number = command.CardNumber,
invoice_id = command.InvoiceId,
mobile = command.Mobile,
email = command.Email,
mobile = command.Mobile,
email = command.Email??"",
description = command.Description,
}, cancellationToken: cancellationToken);
var resStr = await response.Content.ReadAsStringAsync(cancellationToken);
var result = await response.Content.ReadFromJsonAsync<PaymentGatewayResponse>(cancellationToken: cancellationToken);
return result;
}

View File

@@ -30,6 +30,8 @@ public class PaymentGatewayResponse
[JsonPropertyName("transid")]
public string TransactionId { get; set; }
public bool IsSuccess => Status == "success";
}
public class WalletAmountResponse

View File

@@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.FinancialStatment;
using Microsoft.AspNetCore.Mvc;
namespace Company.Domain.FinancialStatmentAgg;
@@ -16,5 +18,7 @@ public interface IFinancialStatmentRepository : IRepository<long, FinancialStatm
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
ClientFinancialStatementSearchModel searchModel);
Task<ActionResult<OperationResult<ClientFinancialStatementViewModel>>> GetDetailsByHashCode(string hashCode);
Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id);
Task<double> GetClientDebtAmount(long accountId);
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.FinancilTransaction;
@@ -13,4 +14,15 @@ public interface IFinancialTransactionRepository : IRepository<long, FinancialTr
{
EditFinancialTransaction GetDetails(long id);
void RemoveFinancialTransaction(long id);
/// <summary>
/// ایجاد بدهی استند حضور غیاب برای اکسل
/// </summary>
/// <param name="contractingPartyId"></param>
/// <param name="transactionDate"></param>
/// <param name="debt"></param>
/// <param name="description"></param>
/// <returns></returns>
OperationResult CreateDebtFromExcel(long contractingPartyId, string transactionDate, double debt,
string description);
}

View File

@@ -9,4 +9,6 @@ public interface IPaymentTransactionRepository:IRepository<long,PaymentTransacti
{
Task<List<GetPaymentTransactionListViewModel>> GetPaymentTransactionList(
GetPaymentTransactionListSearchModel searchModel);
Task<PaymentTransactionDetailsViewModel> GetDetails(long id);
}

View File

@@ -2,103 +2,87 @@
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.PaymentTransaction;
namespace Company.Domain.PaymentTransactionAgg
namespace Company.Domain.PaymentTransactionAgg;
/// <summary>
/// نمایانگر یک تراکنش پرداخت شامل جزئیات طرف قرارداد، اطلاعات بانکی، وضعیت تراکنش و مبلغ.
/// </summary>
public class PaymentTransaction:EntityBase
{
/// <summary>
/// نمایانگر یک تراکنش پرداخت شامل جزئیات طرف قرارداد، اطلاعات بانکی، وضعیت تراکنش و مبلغ.
/// سازنده کلاس PaymentTransaction با دریافت اطلاعات تراکنش.
/// </summary>
public class PaymentTransaction:EntityBase
/// <param name="contractingPartyId">شناسه طرف قرارداد</param>
/// <param name="amount">مبلغ تراکنش</param>
/// <param name="contractingPartyName"></param>
/// <param name="callBackUrl"></param>
public PaymentTransaction(long contractingPartyId,
double amount,
string contractingPartyName,string callBackUrl)
{
/// <summary>
/// سازنده کلاس PaymentTransaction با دریافت اطلاعات تراکنش.
/// </summary>
/// <param name="contractingPartyId">شناسه طرف قرارداد</param>
/// <param name="bankAccountHolderName">نام صاحب حساب بانکی</param>
/// <param name="bankName">نام بانک</param>
/// <param name="cardNumber">شماره کارت</param>
/// <param name="shebaNumber">شماره شبا</param>
/// <param name="accountNumber">شماره حساب بانکی</param>
/// <param name="status">وضعیت تراکنش پرداخت</param>
/// <param name="amount">مبلغ تراکنش</param>
/// <param name="transactionId">شناسه یکتای تراکنش</param>
/// <param name="contractingPartyName"></param>
public PaymentTransaction(long contractingPartyId,
string bankAccountHolderName,
string bankName,
string cardNumber,
string shebaNumber,
string accountNumber,
PaymentTransactionStatus status,
double amount,
string transactionId,
string contractingPartyName)
{
TransactionDate = DateTime.Now;
ContractingPartyId = contractingPartyId;
BankAccountHolderName = bankAccountHolderName;
BankName = bankName;
CardNumber = cardNumber;
ShebaNumber = shebaNumber;
AccountNumber = accountNumber;
Status = status;
Amount = amount;
TransactionId = transactionId;
ContractingPartyName = contractingPartyName;
}
ContractingPartyId = contractingPartyId;
Status = PaymentTransactionStatus.Pending;
Amount = amount;
ContractingPartyName = contractingPartyName;
CallBackUrl = callBackUrl;
}
/// <summary>
/// تاریخ و زمان انجام پرداخت
/// </summary>
public DateTime TransactionDate { get; set; }
/// <summary>
/// تاریخ و زمان انجام پرداخت
/// </summary>
public DateTime TransactionDate { get; private set; }
/// <summary>
/// شناسه طرف حساب
/// </summary>
public long ContractingPartyId { get; set; }
/// <summary>
/// شناسه طرف حساب
/// </summary>
public long ContractingPartyId { get; private set; }
/// <summary>
/// نام طرف حساب
/// </summary>
public string ContractingPartyName { get; set; }
/// <summary>
/// نام طرف حساب
/// </summary>
public string ContractingPartyName { get; private set; }
/// <summary>
/// نام صاحب حساب بانکی
/// </summary>
public string BankAccountHolderName { get; set; }
/// <summary>
/// نام بانک
/// </summary>
public string BankName { get; private set; }
/// <summary>
/// نام بانک
/// </summary>
public string BankName { get; set; }
/// <summary>
/// شماره کارت
/// </summary>
public string CardNumber { get; private set; }
/// <summary>
/// شماره کارت
/// </summary>
public string CardNumber { get; set; }
/// <summary>
/// وضعیت تراکنش پرداخت
/// </summary>
public PaymentTransactionStatus Status { get; private set; }
/// <summary>
/// شماره شبا
/// </summary>
public string ShebaNumber { get; set; }
/// <summary>
/// مبلغ تراکنش
/// </summary>
public double Amount { get; private set; }
/// <summary>
/// شماره حساب بانکی
/// </summary>
public string AccountNumber { get; set; }
/// <summary>
/// شناسه یکتای تراکنش
/// </summary>
public string TransactionId { get; private set; }
/// <summary>
/// وضعیت تراکنش پرداخت
/// </summary>
public PaymentTransactionStatus Status { get; set; }
public string CallBackUrl { get; private set; }
/// <summary>
/// مبلغ تراکنش
/// </summary>
public double Amount { get; set; }
/// <summary>
/// شناسه یکتای تراکنش
/// </summary>
public string TransactionId { get; set; }
public void SetPaid(string cardNumber,string bankName)
{
Status = PaymentTransactionStatus.Success;
TransactionDate = DateTime.Now;
CardNumber = cardNumber;
BankName = bankName;
}
public void SetFailed()
{
Status = PaymentTransactionStatus.Failed;
TransactionDate = DateTime.Now;
}
public void SetTransactionId(string transactionId)
{
TransactionId = transactionId;
}
}

View File

@@ -0,0 +1,31 @@
namespace CompanyManagment.App.Contracts.FinancialStatment;
public class ClientFinancialStatementSearchModel
{
/// <summary>
/// از تاریخ
/// </summary>
public string FromDate { get; set; }
/// <summary>
/// تا تاریخ
/// </summary>
public string ToDate { get; set; }
/// <summary>
/// از مبلغ
/// </summary>
public double FromAmount { get; set; }
/// <summary>
/// تا مبلغ
/// </summary>
public double ToAmount { get; set; }
/// <summary>
/// نوع عملیات تراکنش
/// </summary>
public FinancialTransactionType? Type { get; set; }
/// <summary>
/// صفحه بندی
/// </summary>
public int PageIndex { get; set; }
}

View File

@@ -0,0 +1,29 @@
using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.FinancialStatment;
public class ClientFinancialStatementViewModel
{
/// <summary>
/// آیدی FinancialStatement
/// </summary>
public long Id { get; set; }
/// <summary>
/// جمع بدهکاری
/// </summary>
public double TotalDebt { get; set; }
/// <summary>
/// جمع بستانکاری
/// </summary>
public double TotalCredit { get; set; }
/// <summary>
/// مبلغ قابل پرداخت
/// </summary>
public double TotalAmountPayable { get; set; }
/// <summary>
/// تراکنش ها
/// </summary>
public List<ClientFinancialTransactionViewModel> Transactions { get; set; }
}

View File

@@ -0,0 +1,44 @@
using System;
namespace CompanyManagment.App.Contracts.FinancialStatment;
public class ClientFinancialTransactionViewModel
{
/// <summary>
/// زمان و تاریخ میلادی
/// </summary>
public DateTime DateTimeGr { get; set; }
/// <summary>
/// تاریخ
/// </summary>
public string DateFa { get; set; }
/// <summary>
/// زمان
/// </summary>
public string TimeFa { get; set; }
/// <summary>
/// شرح
/// </summary>
public string Description { get; set; }
/// <summary>
/// نوع عملیات پرداخت
/// </summary>
public FinancialTransactionType Type { get; set; }
/// <summary>
/// نوع عملیات پرداخت به صورت استرینگ
/// </summary>
public string TypeStr { get; set; }
/// <summary>
/// بدهکار
/// </summary>
public double Debtor { get; set; }
/// <summary>
/// بستانکار
/// </summary>
public double Creditor { get; set; }
/// <summary>
/// باقی مانده
/// </summary>
public double Balance { get; set; }
}

View File

@@ -0,0 +1,13 @@
namespace CompanyManagment.App.Contracts.FinancialStatment;
public enum FinancialTransactionType
{
/// <summary>
/// ایجاد درآمد
/// </summary>
Debt,
/// <summary>
/// دریافت درآمد
/// </summary>
Credit
}

View File

@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.FinancilTransaction;
using Microsoft.AspNetCore.Mvc;
namespace CompanyManagment.App.Contracts.FinancialStatment;
@@ -24,120 +24,33 @@ public interface IFinancialStatmentApplication
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(ClientFinancialStatementSearchModel searchModel,
long accountId);
/// <summary>
/// نمایش اطلاعات صورت حساب مالی کلاینت بر اساس کد هش
/// </summary>
/// <param name="hashCode"></param>
/// <returns></returns>
Task<ActionResult<OperationResult<ClientFinancialStatementViewModel>>> GetDetailsByHashCode(string hashCode);
/// <summary>
/// مقدار مانده صورت حساب مالی را برمی گرداند
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id);
/// <summary>
/// مقدار بدهی کلاینت را برمی گرداند
/// </summary>
/// <param name="AccountId"></param>
/// <param name="accountId"></param>
/// <returns></returns>
Task<double> GetClientDebtAmount(long AccountId);
Task<double> GetClientDebtAmount(long accountId);
}
public class ClientFinancialStatementSearchModel
public class GetFinancialStatementBalanceAmount
{
/// <summary>
/// از تاریخ
/// مبلغ
/// </summary>
public string FromDate { get; set; }
/// <summary>
/// تا تاریخ
/// </summary>
public string ToDate { get; set; }
/// <summary>
/// از مبلغ
/// </summary>
public double FromAmount { get; set; }
/// <summary>
/// تا مبلغ
/// </summary>
public double ToAmount { get; set; }
/// <summary>
/// نوع عملیات تراکنش
/// </summary>
public FinancialTransactionType? Type { get; set; }
/// <summary>
/// صفحه بندی
/// </summary>
public int PageIndex { get; set; }
}
public enum FinancialTransactionType
{
/// <summary>
/// ایجاد درآمد
/// </summary>
Debt,
/// <summary>
/// دریافت درآمد
/// </summary>
Credit
}
public class ClientFinancialStatementViewModel
{
/// <summary>
/// آیدی FinancialStatement
/// </summary>
public long Id { get; set; }
/// <summary>
/// جمع بدهکاری
/// </summary>
public double TotalDebt { get; set; }
/// <summary>
/// جمع بستانکاری
/// </summary>
public double TotalCredit { get; set; }
/// <summary>
/// مبلغ قابل پرداخت
/// </summary>
public double TotalAmountPayable { get; set; }
/// <summary>
/// تراکنش ها
/// </summary>
public List<ClientFinancialTransactionViewModel> Transactions { get; set; }
}
public class ClientFinancialTransactionViewModel
{
/// <summary>
/// زمان و تاریخ میلادی
/// </summary>
public DateTime DateTimeGr { get; set; }
/// <summary>
/// تاریخ
/// </summary>
public string DateFa { get; set; }
/// <summary>
/// زمان
/// </summary>
public string TimeFa { get; set; }
/// <summary>
/// شرح
/// </summary>
public string Description { get; set; }
/// <summary>
/// نوع عملیات پرداخت
/// </summary>
public FinancialTransactionType Type { get; set; }
/// <summary>
/// نوع عملیات پرداخت به صورت استرینگ
/// </summary>
public string TypeStr { get; set; }
/// <summary>
/// بدهکار
/// </summary>
public double Debtor { get; set; }
/// <summary>
/// بستانکار
/// </summary>
public double Creditor { get; set; }
/// <summary>
/// باقی مانده
/// </summary>
public double Balance { get; set; }
}
public double Amount { get; set; }
public long ContractingPartyId { get; set; }
}

View File

@@ -7,35 +7,6 @@ public class CreatePaymentTransaction
/// </summary>
public long ContractingPartyId { get; set; }
/// <summary>
/// نام صاحب حساب بانکی
/// </summary>
public string BankAccountHolderName { get; set; }
/// <summary>
/// نام بانک
/// </summary>
public string BankName { get; set; }
/// <summary>
/// شماره کارت
/// </summary>
public string CardNumber { get; set; }
/// <summary>
/// شماره شبا
/// </summary>
public string ShebaNumber { get; set; }
/// <summary>
/// شماره حساب بانکی
/// </summary>
public string AccountNumber { get; set; }
/// <summary>
/// وضعیت تراکنش پرداخت
/// </summary>
public PaymentTransactionStatus Status { get; set; }
/// <summary>
/// مبلغ تراکنش
@@ -43,12 +14,7 @@ public class CreatePaymentTransaction
public double Amount { get; set; }
/// <summary>
/// شناسه یکتای تراکنش
/// مسیر برگشت پس از پرداخت
/// </summary>
public string TransactionId { get; set; }
/// <summary>
/// نام طرف حساب
/// </summary>
public string ContractingPartyName { get; set; }
public string CallBackUrl { get; set; }
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using _0_Framework.Application;
@@ -26,5 +27,77 @@ public interface IPaymentTransactionApplication
Task<OperationResult> Create(CreatePaymentTransaction command);
Task<WalletAmountResponse> GetWalletAmount(CancellationToken cancellationToken);
/// <summary>
/// گرفتن جزئیات تراکنش
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<PaymentTransactionDetailsViewModel> GetDetails(long id);
/// <summary>
/// تغییر وضعیت تراکنش به ناموفق
/// </summary>
/// <param name="paymentTransactionId"></param>
/// <param name="status"></param>
/// <returns></returns>
OperationResult SetFailed(long paymentTransactionId);
/// <summary>
/// تغییر وضعیت تراکنش به موفق
/// </summary>
/// <param name="paymentTransactionId"></param>
/// <param name="cardNumber"></param>
/// <param name="bankName"></param>
/// <returns></returns>
OperationResult SetSuccess(long paymentTransactionId, string cardNumber, string bankName);
}
public class PaymentTransactionDetailsViewModel
{
/// <summary>
/// آیدی
/// </summary>
public long Id { get; set; }
/// <summary>
/// تاریخ و زمان انجام پرداخت
/// </summary>
public DateTime TransactionDate { get; set; }
/// <summary>
/// شناسه طرف حساب
/// </summary>
public long ContractingPartyId { get; set; }
/// <summary>
/// نام طرف حساب
/// </summary>
public string ContractingPartyName { get; set; }
/// <summary>
/// نام بانک
/// </summary>
public string BankName { get; set; }
/// <summary>
/// شماره کارت
/// </summary>
public string CardNumber { get; set; }
/// <summary>
/// وضعیت تراکنش پرداخت
/// </summary>
public PaymentTransactionStatus Status { get; set; }
/// <summary>
/// مبلغ تراکنش
/// </summary>
public double Amount { get; set; }
/// <summary>
/// شناسه یکتای تراکنش
/// </summary>
public string TransactionId { get; set; }
public string CallBackUrl { get; set; }
}

View File

@@ -5,6 +5,10 @@
/// </summary>
public enum PaymentTransactionStatus
{
/// <summary>
/// تراکنش در انتظار انجام است.
/// </summary>
Pending,
/// <summary>
/// تراکنش با شکست مواجه شد.
/// </summary>

View File

@@ -4,6 +4,7 @@ using _0_Framework.Application;
using Company.Domain.FinancialStatmentAgg;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.FinancilTransaction;
using Microsoft.AspNetCore.Mvc;
namespace CompanyManagment.Application;
@@ -118,8 +119,19 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
return await _financialStatmentRepository.GetClientFinancialStatement(accountId, searchModel);
}
public async Task<double> GetClientDebtAmount(long accountId)
public async Task<ActionResult<OperationResult<ClientFinancialStatementViewModel>>> GetDetailsByHashCode(
string hashCode)
{
return await _financialStatmentRepository.GetClientDebtAmount(accountId);
return await _financialStatmentRepository.GetDetailsByHashCode(hashCode);
}
public Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id)
{
return _financialStatmentRepository.GetBalanceAmount(id);
}
public Task<double> GetClientDebtAmount(long accountId)
{
return _financialStatmentRepository.GetClientDebtAmount(accountId);
}
}

View File

@@ -8,6 +8,11 @@ using System.Net.Http;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Application.PaymentGateway;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.PaymentTransactionAgg;
using CompanyManagment.App.Contracts.PaymentTransaction;
namespace CompanyManagment.Application;
@@ -15,10 +20,12 @@ public class PaymentTransactionApplication : IPaymentTransactionApplication
{
private readonly IPaymentTransactionRepository _paymentTransactionRepository;
private readonly IPaymentGateway _paymentGateway;
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
public PaymentTransactionApplication(IPaymentTransactionRepository paymentTransactionRepository,IHttpClientFactory httpClientFactory, IOptions<AppSettingConfiguration> appSetting)
public PaymentTransactionApplication(IPaymentTransactionRepository paymentTransactionRepository,IHttpClientFactory httpClientFactory, IOptions<AppSettingConfiguration> appSetting, IPersonalContractingPartyRepository personalContractingPartyRepository)
{
_paymentTransactionRepository = paymentTransactionRepository;
_personalContractingPartyRepository = personalContractingPartyRepository;
_paymentGateway = new AqayePardakhtPaymentGateway(httpClientFactory, appSetting);
}
@@ -31,21 +38,23 @@ public class PaymentTransactionApplication : IPaymentTransactionApplication
public async Task<OperationResult> Create(CreatePaymentTransaction command)
{
var operationResult = new OperationResult();
var contractingPartyName = _personalContractingPartyRepository.GetFullName(command.ContractingPartyId);
if (string.IsNullOrWhiteSpace(contractingPartyName))
{
return operationResult.Failed("مشتری مورد نظر یافت نشد");
}
var entity = new PaymentTransaction(
command.ContractingPartyId,
command.BankAccountHolderName,
command.BankName,
command.CardNumber,
command.ShebaNumber,
command.AccountNumber,
command.Status,
command.Amount,
command.TransactionId,
command.ContractingPartyName);
contractingPartyName,
command.CallBackUrl);
await _paymentTransactionRepository.CreateAsync(entity);
await _paymentTransactionRepository.SaveChangesAsync();
return operationResult.Succcedded();
return operationResult.Succcedded(entity.id);
}
@@ -55,4 +64,42 @@ public class PaymentTransactionApplication : IPaymentTransactionApplication
var result = await _paymentGateway.GetWalletAmount(cancellationToken);
return result;
}
public async Task<PaymentTransactionDetailsViewModel> GetDetails(long id)
{
var result = await _paymentTransactionRepository.GetDetails(id);
return result;
}
public OperationResult SetFailed(long paymentTransactionId)
{
var op = new OperationResult();
var paymentTransaction = _paymentTransactionRepository.Get(paymentTransactionId);
if (paymentTransaction == null)
{
return op.Failed("تراکنش مورد نظر یافت نشد");
}
paymentTransaction.SetFailed();
_paymentTransactionRepository.SaveChanges();
return op.Succcedded();
}
public OperationResult SetSuccess(long paymentTransactionId,string cardNumber, string bankName)
{
var op = new OperationResult();
var paymentTransaction = _paymentTransactionRepository.Get(paymentTransactionId);
if (paymentTransaction == null)
{
return op.Failed("تراکنش مورد نظر یافت نشد");
}
paymentTransaction.SetPaid(cardNumber, bankName);
_paymentTransactionRepository.SaveChanges();
return op.Succcedded();
}
}

View File

@@ -99,8 +99,8 @@ public class SalaryAidApplication : ISalaryAidApplication
var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
calculationDateGr, command.WorkshopId, command.EmployeeIds);
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
//if (existsCheckouts.Checkout)
// return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
var (userId, userType, _) = _authHelper.GetUserTypeWithId();
@@ -198,8 +198,8 @@ public class SalaryAidApplication : ISalaryAidApplication
var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
calculationDateGr, entity.WorkshopId, [entity.EmployeeId]);
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
// if (existsCheckouts.Checkout)
// return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
using var transaction = new TransactionScope();
@@ -336,8 +336,8 @@ public class SalaryAidApplication : ISalaryAidApplication
calculationDateGr, command.WorkshopId, command.EmployeeIds);
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
// if (existsCheckouts.Checkout)
// return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
var month = Convert.ToInt32(command.CalculationMonth);
var year = Convert.ToInt32(command.CalculationYear);

View File

@@ -13,12 +13,10 @@ public class PaymentTransactionMapping:IEntityTypeConfiguration<PaymentTransacti
builder.Property(x => x.TransactionId).HasMaxLength(60);
builder.Property(x => x.CardNumber).HasMaxLength(25);
builder.Property(x => x.AccountNumber).HasMaxLength(25);
builder.Property(x => x.BankName).HasMaxLength(50);
builder.Property(x => x.BankAccountHolderName).HasMaxLength(255);
builder.Property(x => x.Status).HasConversion<string>().HasMaxLength(35);
builder.Property(x => x.ShebaNumber).HasMaxLength(30);
builder.Property(x => x.ContractingPartyName).HasMaxLength(255);
builder.Property(x => x.CallBackUrl).HasMaxLength(500);
}
}

View File

@@ -0,0 +1,62 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addcallbackurltopaymenttransaction : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "AccountNumber",
table: "PaymentTransactions");
migrationBuilder.DropColumn(
name: "BankAccountHolderName",
table: "PaymentTransactions");
migrationBuilder.DropColumn(
name: "ShebaNumber",
table: "PaymentTransactions");
migrationBuilder.AddColumn<string>(
name: "CallBackUrl",
table: "PaymentTransactions",
type: "nvarchar(500)",
maxLength: 500,
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "CallBackUrl",
table: "PaymentTransactions");
migrationBuilder.AddColumn<string>(
name: "AccountNumber",
table: "PaymentTransactions",
type: "nvarchar(25)",
maxLength: 25,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "BankAccountHolderName",
table: "PaymentTransactions",
type: "nvarchar(255)",
maxLength: 255,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ShebaNumber",
table: "PaymentTransactions",
type: "nvarchar(30)",
maxLength: 30,
nullable: true);
}
}
}

View File

@@ -4347,21 +4347,17 @@ namespace CompanyManagment.EFCore.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
b.Property<string>("AccountNumber")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b.Property<double>("Amount")
.HasColumnType("float");
b.Property<string>("BankAccountHolderName")
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.Property<string>("BankName")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("CallBackUrl")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<string>("CardNumber")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
@@ -4376,10 +4372,6 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<string>("ShebaNumber")
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(35)

View File

@@ -10,6 +10,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AccountManagement.Application.Contracts.SubAccount;
using Microsoft.AspNetCore.Mvc;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace CompanyManagment.EFCore.Repository;
@@ -147,6 +148,33 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
}
public Task<ActionResult<OperationResult<ClientFinancialStatementViewModel>>> GetDetailsByHashCode(string hashCode)
{
throw new NotImplementedException();
}
public async Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id)
{
var financialTransactions = _context.FinancialTransactions.Where(x=>x.FinancialStatementId == id);
if (!financialTransactions.Any())
throw new BadRequestException("تراکنش مالی یافت نشد");
var totalCredit = await financialTransactions.SumAsync(x => x.Creditor);
var totalDebt = await financialTransactions.SumAsync(x => x.Deptor);
var balance = totalDebt - totalCredit;
var contractingPartyId = await _context.FinancialStatments
.Where(x => x.id == id)
.Select(x => x.ContractingPartyId)
.FirstOrDefaultAsync();
return new GetFinancialStatementBalanceAmount
{
Amount = balance,
ContractingPartyId = contractingPartyId
};
}
public async Task<double> GetClientDebtAmount(long accountId)
{
var contractingPartyId = (await _context.ContractingPartyAccounts.FirstOrDefaultAsync(x => x.AccountId == accountId))?.PersonalContractingPartyId ?? 0;
@@ -158,7 +186,7 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
return 0;
return resStatement.FinancialTransactionList.Sum(x => x.Deptor) -
resStatement.FinancialTransactionList.Sum(x => x.Creditor);
resStatement.FinancialTransactionList.Sum(x => x.Creditor);
}
}

View File

@@ -1,8 +1,12 @@
using System.Linq;
using System;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.FinancialStatmentAgg;
using Company.Domain.FinancialTransactionAgg;
using CompanyManagment.App.Contracts.FinancilTransaction;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace CompanyManagment.EFCore.Repository;
@@ -49,4 +53,55 @@ public class FinancialTransactionRepository : RepositoryBase<long, FinancialTran
}
}
public OperationResult CreateDebtFromExcel(long contractingPartyId, string transactionDate, double debt, string description)
{
var op = new OperationResult();
var now = DateTime.Now;
#region Validation
var contractingParty = _context.PersonalContractingParties.FirstOrDefault(x => x.id == contractingPartyId);
if (contractingParty == null)
return op.Failed("طرف حساب وجود ندارد");
var activeInstitutionContract = _context.InstitutionContractSet.FirstOrDefault(x => x.ContractingPartyId == contractingPartyId &&
x.IsActiveString == "true" && x.ContractStartGr <= now && x.ContractEndGr >= now);
if (activeInstitutionContract == null)
return op.Failed("قرارداد مالی فعال برای این طرف حساب وجود ندارد");
if (debt <= 0)
return op.Failed("مبلغ را وارد کنید");
#endregion
var descriptionOption = "بابت خرید استند حضور غیاب";
var financialStatment = _context.FinancialStatments.FirstOrDefault(x => x.ContractingPartyId == contractingPartyId);
if (financialStatment != null)
{
var transaction = new FinancialTransaction(financialStatment.id, now, now.ToFarsi(),
description,
"debt", descriptionOption, debt, 0, 0);
_context.FinancialTransactions.Add(transaction);
_context.SaveChanges();
return op.Succcedded();
}
else
{
var statement = new FinancialStatment(contractingPartyId, activeInstitutionContract.ContractingPartyName);
_context.FinancialStatments.Add(statement);
_context.SaveChanges();
var transaction = new FinancialTransaction(statement.id, now, now.ToFarsi(),
description,
"debt", descriptionOption, debt, 0, 0);
_context.FinancialTransactions.Add(transaction);
_context.SaveChanges();
return op.Succcedded();
}
}
}

View File

@@ -66,11 +66,8 @@ public class PaymentTransactionRepository : RepositoryBase<long, PaymentTransact
{
Id = x.id,
ContractingPartyName = x.ContractingPartyName,
BankAccountHolderName = x.BankAccountHolderName,
BankName = x.BankName,
CardNumber = x.CardNumber,
ShebaNumber = x.ShebaNumber,
AccountNumber = x.AccountNumber,
Status = x.Status switch
{
PaymentTransactionStatus.Failed => "ناموفق",
@@ -88,4 +85,27 @@ public class PaymentTransactionRepository : RepositoryBase<long, PaymentTransact
return result;
}
public async Task<PaymentTransactionDetailsViewModel> GetDetails(long id)
{
var transaction = await _companyContext.PaymentTransactions.FirstOrDefaultAsync(x => x.id == id);
if (transaction == null)
return null;
var result = new PaymentTransactionDetailsViewModel()
{
Amount = transaction.Amount,
CallBackUrl = transaction.CallBackUrl,
ContractingPartyId = transaction.ContractingPartyId,
CardNumber = transaction.CardNumber,
TransactionId = transaction.TransactionId,
Status = transaction.Status,
ContractingPartyName = transaction.ContractingPartyName,
BankName = transaction.BankName,
TransactionDate = transaction.TransactionDate
};
return result;
}
}

View File

@@ -110,8 +110,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
Email = "mahanch83@gmail.com",
CallBackUrl = Url.Page("/CallBack/Index", null, null, Request.Scheme, Request.Host.Value),
InvoiceId = "{C771E841-B810-413D-9D4C-9F659575B8CC}",
};
var createResponse = await _paymentGateway.Create(command, cancellationToken);

View File

@@ -1,6 +1,11 @@
using _0_Framework.Application;
using _0_Framework.Application.PaymentGateway;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.FinancilTransaction;
using CompanyManagment.App.Contracts.PaymentTransaction;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Client.Controllers;
@@ -9,11 +14,15 @@ public class FinancialController : ClientBaseController
{
private readonly IFinancialStatmentApplication _financialStatementApplication;
private readonly IAuthHelper _authHelper;
private readonly IPaymentGateway _paymentGateway;
private readonly IPaymentTransactionApplication _paymentTransactionApplication;
public FinancialController(IFinancialStatmentApplication financialStatementApplication, IAuthHelper authHelper)
public FinancialController(IFinancialStatmentApplication financialStatementApplication, IAuthHelper authHelper,IHttpClientFactory httpClientFactory, IPaymentTransactionApplication paymentTransactionApplication,IOptions<AppSettingConfiguration> appSetting)
{
_financialStatementApplication = financialStatementApplication;
_authHelper = authHelper;
_paymentTransactionApplication = paymentTransactionApplication;
_paymentGateway = new AqayePardakhtPaymentGateway(httpClientFactory, appSetting);
}
[HttpGet]
@@ -23,4 +32,67 @@ public class FinancialController : ClientBaseController
var result =await _financialStatementApplication.GetClientFinancialStatement(searchModel,accountId);
return result;
}
[AllowAnonymous]
[HttpGet("{hashCode}")]
public async Task<ActionResult<OperationResult<ClientFinancialStatementViewModel>>> GetStatementDetails(string hashCode)
{
var result = await _financialStatementApplication.GetDetailsByHashCode(hashCode);
return result;
}
/// <summary>
/// ساخت
/// </summary>
/// <param name="id"></param>
/// <param name="baseUrl"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("CreatePay")]
public async Task<ActionResult<OperationResult<string>>> CreatePay(long id,string baseUrl,CancellationToken cancellationToken)
{
var op = new OperationResult<string>();
var balanceAmount = await _financialStatementApplication.GetBalanceAmount(id);
if (balanceAmount.Amount<=0)
{
return op.Failed("موجودی حساب شما صفر است");
}
var callBack = baseUrl+ "/api/CallBack";
var transactionCommand = new CreatePaymentTransaction()
{
Amount = balanceAmount.Amount,
ContractingPartyId = balanceAmount.ContractingPartyId,
CallBackUrl = baseUrl
};
var transaction = await _paymentTransactionApplication.Create(transactionCommand);
if (!transaction.IsSuccedded)
{
return op.Failed(transaction.Message);
}
var command = new CreatePaymentGatewayRequest()
{
CallBackUrl = callBack,
Amount = balanceAmount.Amount/10,
InvoiceId = transaction.SendId.ToString(),
};
var gatewayResponse = await _paymentGateway.Create(command, cancellationToken);
if (gatewayResponse.IsSuccess)
{
return op.Succcedded(_paymentGateway.GetStartPayUrl(gatewayResponse.TransactionId));
}
if (gatewayResponse.ErrorCode.HasValue)
{
return op.Failed($"خطا در ایجاد درگاه پرداخت: {gatewayResponse.ErrorCode.Value}");
}
return op.Failed("خطا در ایجاد درگاه پرداخت");
}
}

View File

@@ -0,0 +1,8 @@
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Client.Controllers;
public class PaymentController:ClientBaseController
{
}

View File

@@ -1,15 +1,26 @@
using System.Globalization;
using _0_Framework.Application;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.PaymentTransaction;
using CompanyManagment.EFCore.Migrations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers;
using System.Globalization;
using _0_Framework.Application.PaymentGateway;
using Microsoft.Extensions.Options;
namespace ServiceHost.Controllers;
public class GeneralController:GeneralBaseController
public class GeneralController : GeneralBaseController
{
private readonly IPaymentTransactionApplication _paymentTransactionApplication;
private readonly IPaymentGateway _paymentGateway;
public GeneralController(IPaymentTransactionApplication paymentTransactionApplication,IHttpClientFactory clientFactory,IOptions<AppSettingConfiguration> appSetting)
{
_paymentTransactionApplication = paymentTransactionApplication;
_paymentGateway = new AqayePardakhtPaymentGateway(clientFactory, appSetting);
}
/// <summary>
/// نمایش اطلاعات عمومی مانند تاریخ ها و سال ها
@@ -26,9 +37,73 @@ public class GeneralController:GeneralBaseController
var currentDate = new { Year = currentYear, Month = pc.GetMonth(now), Day = pc.GetDayOfMonth(now) };
return new JsonResult(new
{
years,months,currentDate
years,
months,
currentDate
});
}
[HttpPost("/api/callback")]
public async Task<IActionResult> OnGetCallBack(string? transid, string? cardnumber, string? tracking_number,
string bank, string invoice_id, string? status,CancellationToken cancellationToken)
{
if (!long.TryParse(invoice_id, out var paymentTransactionId))
{
return BadRequest("Invalid invoice_id");
}
var transaction = await _paymentTransactionApplication.GetDetails(paymentTransactionId);
if (transaction == null)
{
return NotFound("Transaction not found");
}
// اگر شماره کارت یا شماره پیگیری خالی باشد، تراکنش ناموفق است
if (string.IsNullOrWhiteSpace(cardnumber) || string.IsNullOrWhiteSpace(tracking_number))
{
return await HandleFailedTransaction(transaction, paymentTransactionId);
}
var verifyCommand = new VerifyPaymentGateWayRequest()
{
Amount = transaction.Amount,
TransactionId = transid
};
var verifyRes =await _paymentGateway.Verify(verifyCommand, cancellationToken);
// اگر استاتوس 1 باشد، تراکنش موفق است
if (verifyRes.IsSuccess)
{
var setSuccessResult = _paymentTransactionApplication.SetSuccess(paymentTransactionId, cardnumber, bank);
//TODO : افزودن دریافت درآمد به وضعیت مالی
if (!setSuccessResult.IsSuccedded)
{
return new JsonResult(setSuccessResult);
}
return Redirect(BuildCallbackUrl(transaction.CallBackUrl, true, transaction.Id));
}
// در غیر این صورت تراکنش ناموفق است
return await HandleFailedTransaction(transaction, paymentTransactionId);
}
private async Task<IActionResult> HandleFailedTransaction(PaymentTransactionDetailsViewModel transaction, long transactionId)
{
var result = _paymentTransactionApplication.SetFailed(transactionId);
if (!result.IsSuccedded)
{
return new JsonResult(result);
}
return Redirect(BuildCallbackUrl(transaction.CallBackUrl, false, transaction.Id));
}
private string BuildCallbackUrl(string baseUrl, bool isSuccess, long transactionId)
{
var statusCode = isSuccess ? "1" : "0";
return $"{baseUrl}/callback?Status={statusCode}&transactionId={transactionId}";
}
}

View File

@@ -37,35 +37,37 @@ namespace ServiceHost.Pages.CallBack
}
public async Task OnPost(string? transid, string? cardnumber, string? tracking_number, string bank, string invoice_id, string? status)
{
//var verify =await _paymentGateway.Verify(new VerifyPaymentGateWayRequest { Amount = 1000, TransactionId = transid });
var command = new CreatePaymentTransaction()
{
CardNumber = cardnumber,
Amount = 10000,
TransactionId = transid,
ContractingPartyId = 0,
ContractingPartyName = "تست تستی",
BankName = bank
//var command = new CreatePaymentTransaction()
//{
// CardNumber = cardnumber,
// Amount = 10000,
// BankAccountHolderName = "تست",
// ShebaNumber = "",
// TransactionId = transid,
// ContractingPartyId = 0,
// ContractingPartyName = "نام طرف حساب",
// AccountNumber = "",
// BankName = "سامان"
};
if (string.IsNullOrEmpty(cardnumber) || string.IsNullOrEmpty(tracking_number))
{
ViewData["message"] = "پرداخت ناموفق بوده است";
command.Status = PaymentTransactionStatus.Failed;
}
else if (status == "1")
{
ViewData["message"] = "پرداخت موفق بوده است";
command.Status = PaymentTransactionStatus.Success;
//};
//if (string.IsNullOrEmpty(cardnumber) || string.IsNullOrEmpty(tracking_number))
//{
// ViewData["message"] = "پرداخت ناموفق بوده است";
// command.Status = PaymentTransactionStatus.Failed;
//}
//else if (status == "1")
//{
// ViewData["message"] = "پرداخت موفق بوده است";
// command.Status = PaymentTransactionStatus.Success;
}
else
{
ViewData["message"] = "پرداخت ناموفق بوده است";
command.Status = PaymentTransactionStatus.Failed;
}
//}
//else
//{
// ViewData["message"] = "پرداخت ناموفق بوده است";
// command.Status = PaymentTransactionStatus.Failed;
//}
await _paymentTransactionApplication.Create(command);
//_paymentTransactionApplication.Create(command);
}
}

View File

@@ -9,11 +9,13 @@ $(document).ready(function () {
<option class="debtOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="debtOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="debtOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت خرید" > بابت خرید </option>
<option class="debtOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="debtOption" value = "بابت خرید استند حضور غیاب" > بابت خرید استند حضور غیاب </option>
<option class="debtOption" value = "بابت بدهی سایر" > بابت بدهی سایر </option>
`
);
const creditorOptions = $(
@@ -23,10 +25,10 @@ $(document).ready(function () {
<option class="creditOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="creditOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="creditOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت بدهی سایر" > بابت بدهی سایر </option>
<option class="creditOption" value = "بابت حق بیمه کارگاه" > بابت حق بیمه کارگاه </option>
<option class="creditOption" value = "بابت حق بیمه خویش فرما" > بابت حق بیمه خویش فرما </option>
<option class="creditOption" value = "بابت خرید" > بابت خرید </option>
@@ -74,11 +76,12 @@ let debtorOptions = $(
<option class="debtOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="debtOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="debtOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت خرید" > بابت خرید </option>
<option class="debtOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="debtOption" value = "بابت خرید استند حضور غیاب" > بابت خرید استند حضور غیاب </option>
<option class="debtOption" value = "بابت بدهی سایر" > بابت بدهی سایر </option>
`
);
let creditorOptions = $(
@@ -88,9 +91,9 @@ let creditorOptions = $(
<option class="creditOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="creditOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="creditOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="creditOption" value = "بابت حق بیمه کارگاه" > بابت حق بیمه کارگاه </option>
<option class="creditOption" value = "بابت حق بیمه خویش فرما" > بابت حق بیمه خویش فرما </option>

View File

@@ -167,11 +167,12 @@ let debtorOptions = $(
<option class="debtOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="debtOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="debtOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="debtOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="debtOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="debtOption" value = "بابت خرید" > بابت خرید </option>
<option class="debtOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="debtOption" value = "بابت خرید استند حضور غیاب" > بابت خرید استند حضور غیاب </option>
<option class="debtOption" value = "بابت بدهی سایر" > بابت بدهی سایر </option>
`
);
let creditorOptions = $(
@@ -181,10 +182,10 @@ let creditorOptions = $(
<option class="creditOption" value = " بابت قراردادهای گذشته پرسنل" > بابت قراردادهای گذشته پرسنل </option>
<option class="creditOption" value = "بابت پرونده" > بابت پرونده</option>
<option class="creditOption" value = "بابت مبلغ بیمه کارگاه" > بابت مبلغ بیمه کارگاه </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما " > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری " > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل " > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت بدهی سایر " > بابت بدهی سایر </option>
<option class="creditOption" value = "بابت مبلغ بیمه خویش فرما" > بابت مبلغ بیمه خویش فرما </option>
<option class="creditOption" value = "بابت فیش کارگزاری" > بابت فیش کارگزاری </option>
<option class="creditOption" value = "بابت بدهی از قرارداد قبل" > بابت بدهی از قرارداد قبل </option>
<option class="creditOption" value = "بابت بدهی سایر" > بابت بدهی سایر </option>
<option class="creditOption" value = "بابت حق بیمه کارگاه" > بابت حق بیمه کارگاه </option>
<option class="creditOption" value = "بابت حق بیمه خویش فرما" > بابت حق بیمه خویش فرما </option>
<option class="creditOption" value = "بابت خرید" > بابت خرید </option>

View File

@@ -552,7 +552,7 @@ function generateButtons(item, pathDSKKAR00, pathDSKWOR00) {
// Confirm List and Print Button
if (hasPermission_80215) {
html += `
<a href="${insuranceConfirmUrl + `&id=` + item.id}" class="printModal tw-flex tw-items-center tw-justify-center tw-rounded-[5px] tw-bg-[#38BBF6] tw-w-full md:tw-w-[25px] tw-h-[25px] ">
<a href="${insuranceConfirmUrl + `&id=` + item.id}" class="printModal tw-flex tw-items-center tw-justify-center tw-rounded-[5px] tw-bg-[#38BBF6] tw-w-full md:tw-w-[25px] tw-h-[25px] ${isDisabled} ">
<svg width="22" height="22" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="16" height="16" fill="#38BBF6"/>
<path d="M12 9.0026H12.1111C12.6293 9.0026 12.8883 9.0026 13.0893 8.90891C13.3023 8.80955 13.4736 8.6383 13.573 8.42522C13.6666 8.2243 13.6666 7.96522 13.6666 7.44705V7.44705C13.6666 6.41071 13.6666 5.89255 13.4793 5.4907C13.2805 5.06455 12.938 4.72204 12.5119 4.52332C12.11 4.33594 11.5919 4.33594 10.5555 4.33594H6.06665C4.43893 4.33594 3.62508 4.33594 3.07467 4.78165C2.96606 4.8696 2.86697 4.96869 2.77902 5.0773C2.33331 5.6277 2.33331 6.44156 2.33331 8.06927V8.06927C2.33331 8.4762 2.33331 8.67966 2.44474 8.81726C2.46673 8.84442 2.4915 8.86919 2.51865 8.89118C2.65625 9.0026 2.85972 9.0026 3.26665 9.0026H3.99998" stroke="#FFFEFE"/>

View File

@@ -345,14 +345,14 @@ function CheckExistAjax() {
var checkoutType = "";
if (response.customizeCheckout) {
checkoutType = "نهایی";
checkoutType = "غیررسمی نهایی";
} else if (response.customizeCheckoutTemp) {
checkoutType = "موقت";
checkoutType = "غیررسمی موقت";
}
if (response.customizeCheckout || response.customizeCheckoutTemp) {
if (response.checkout) {
swal({
title: `برای این پرسنل فیش حقوقی غیررسمی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
title: `پرسنل دارای فیش رسمی است با تایید این پیغام مساعده شما ثبت میشود ولی در فیش حقوقی رسمی پرسنل اعمال نمیشود. درصورت نیاز به ثبت مساعده در فیش رسمی میبایست فیش حقوقی رسمی را مجددا ایجاد کنید. آیا ادامه میدهید؟`,
text: "",
type: "warning",
showCancelButton: true,
@@ -368,7 +368,27 @@ function CheckExistAjax() {
$('#createData').removeClass('disable');
}
});
} else {
}
else if (response.customizeCheckout || response.customizeCheckoutTemp) {
swal({
title: `برای این پرسنل فیش حقوقی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true,
closeOnCancel: true
}, function (isConfirm) {
if (isConfirm) {
SaveDataAjax();
} else {
$('#createData').removeClass('disable');
}
});
}
else {
SaveDataAjax();
}
},

View File

@@ -276,14 +276,33 @@ function CheckExistAjax() {
var checkoutType = "";
if (response.customizeCheckout) {
checkoutType = "نهایی";
checkoutType = "غیررسمی نهایی";
} else if (response.customizeCheckoutTemp) {
checkoutType = "موقت";
checkoutType = "غیررسمی موقت";
}
if (response.customizeCheckout || response.customizeCheckoutTemp) {
if (response.checkout) {
swal({
title: `برای این پرسنل فیش حقوقی غیررسمی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
title: `پرسنل دارای فیش رسمی است با تایید این پیغام مساعده شما ثبت میشود ولی در فیش حقوقی رسمی پرسنل اعمال نمیشود. درصورت نیاز به اعمال مساعده در فیش رسمی میبایست فیش حقوقی رسمی را مجددا ایجاد کنید. آیا ادامه میدهید؟`,
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true,
closeOnCancel: true
}, function (isConfirm) {
if (isConfirm) {
SaveDataAjax();
} else {
$('#createData').removeClass('disable');
}
});
}
else if (response.customizeCheckout || response.customizeCheckoutTemp) {
swal({
title: `برای این پرسنل فیش حقوقی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
text: "",
type: "warning",
showCancelButton: true,

View File

@@ -766,14 +766,33 @@ function CheckExistAjax() {
var checkoutType = "";
if (response.customizeCheckout) {
checkoutType = "نهایی";
checkoutType = "غیررسمی نهایی";
} else if (response.customizeCheckoutTemp) {
checkoutType = "موقت";
checkoutType = "غیررسمی موقت";
}
if (response.customizeCheckout || response.customizeCheckoutTemp) {
if (response.checkout) {
swal({
title: `برای این پرسنل فیش حقوقی غیررسمی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
title: `پرسنل دارای فیش رسمی است با تایید این پیغام مساعده شما ثبت میشود ولی در فیش حقوقی رسمی پرسنل اعمال نمیشود. درصورت نیاز به اعمال مساعده در فیش رسمی میبایست فیش حقوقی رسمی را مجددا ایجاد کنید. آیا ادامه میدهید؟`,
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true,
closeOnCancel: true
}, function (isConfirm) {
if (isConfirm) {
SaveDataAjax();
} else {
$('#createData').removeClass('disable');
}
});
}
else if (response.customizeCheckout || response.customizeCheckoutTemp) {
swal({
title: `برای این پرسنل فیش حقوقی ${checkoutType} صادر شده است. در صورت تایید، این فیش حقوقی به صورت خودکار تغییر پیدا میکند.`,
text: "",
type: "warning",
showCancelButton: true,