diff --git a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
index 2c50a187..8fcfc6a5 100644
--- a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
+++ b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
@@ -10,6 +10,12 @@ namespace CompanyManagment.App.Contracts.FinancialStatment;
public interface IFinancialStatmentApplication
{
+ ///
+ /// ایجاد سند مالی از طریق درگاه بانکی
+ ///
+ ///
+ ///
+ OperationResult CreateFromBankGateway(CreateFinancialStatment command);
OperationResult Create(CreateFinancialStatment command);
List Search(FinancialStatmentSearchModel searchModel);
diff --git a/CompanyManagment.Application/FinancialStatmentApplication.cs b/CompanyManagment.Application/FinancialStatmentApplication.cs
index 6bd9a1dd..74adafd7 100644
--- a/CompanyManagment.Application/FinancialStatmentApplication.cs
+++ b/CompanyManagment.Application/FinancialStatmentApplication.cs
@@ -1,9 +1,12 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
+using Company.Domain.ContarctingPartyAgg;
using Company.Domain.FinancialStatmentAgg;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.FinancilTransaction;
+using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Mvc;
namespace CompanyManagment.Application;
@@ -12,11 +15,70 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
{
private readonly IFinancialStatmentRepository _financialStatmentRepository;
private readonly IFinancialTransactionApplication _financialTransactionApplication;
+ private readonly IPersonalContractingPartyRepository _contractingPartyRepository;
- public FinancialStatmentApplication(IFinancialStatmentRepository financialStatmentRepository, IFinancialTransactionApplication financialTransactionApplication)
+ public FinancialStatmentApplication(IFinancialStatmentRepository financialStatmentRepository, IFinancialTransactionApplication financialTransactionApplication, IPersonalContractingPartyRepository contractingPartyRepository)
{
_financialStatmentRepository = financialStatmentRepository;
_financialTransactionApplication = financialTransactionApplication;
+ _contractingPartyRepository = contractingPartyRepository;
+ }
+
+ public OperationResult CreateFromBankGateway(CreateFinancialStatment command)
+ {
+ var op = new OperationResult();
+
+ if (command.Creditor == 0)
+ return op.Failed("فیلد بدهکار خالیاست");
+
+ if (_financialStatmentRepository.Exists(x => x.ContractingPartyId == command.ContractingPartyId))
+ {
+ var financialStatment =
+ _financialStatmentRepository.GetDetailsByContractingPartyId(command.ContractingPartyId);
+ var transaction = new CreateFinancialTransaction()
+ {
+ FinancialStatementId = financialStatment.Id,
+ TdateGr = DateTime.Now,
+ TdateFa = DateTime.Now.ToFarsi(),
+ Description = command.Description,
+ Deptor = 0,
+ Creditor = command.Creditor,
+ TypeOfTransaction = command.TypeOfTransaction,
+ DescriptionOption = command.DescriptionOption
+ };
+
+ var createTransaction = _financialTransactionApplication.Create(transaction);
+ if (createTransaction.IsSuccedded)
+ return op.Succcedded();
+ return op.Failed("خطا در انجام عملیات");
+
+ }
+ else
+ {
+ var contractingPartyName = _contractingPartyRepository.GetFullName(command.ContractingPartyId);
+ var statement = new FinancialStatment(command.ContractingPartyId, contractingPartyName);
+ _financialStatmentRepository.Create(statement);
+ _financialStatmentRepository.SaveChanges();
+
+ var transaction = new CreateFinancialTransaction()
+ {
+ FinancialStatementId = statement.id,
+ TdateGr = DateTime.Now,
+ TdateFa = DateTime.Now.ToFarsi(),
+ Description = command.Description,
+ Deptor = 0,
+ Creditor = command.Creditor,
+ Balance = 0,
+ TypeOfTransaction = command.TypeOfTransaction,
+ DescriptionOption = command.DescriptionOption
+
+
+ };
+ var createTransaction = _financialTransactionApplication.Create(transaction);
+ if (createTransaction.IsSuccedded)
+ return op.Succcedded();
+ return op.Failed("خطا در انجام عملیات");
+ }
}
public OperationResult Create(CreateFinancialStatment command)
diff --git a/ServiceHost/Controllers/GeneralController.cs b/ServiceHost/Controllers/GeneralController.cs
index f75588f8..eba3bf55 100644
--- a/ServiceHost/Controllers/GeneralController.cs
+++ b/ServiceHost/Controllers/GeneralController.cs
@@ -85,19 +85,16 @@ public class GeneralController : GeneralBaseController
{
var command = new CreateFinancialStatment()
{
-
ContractingPartyId = transaction.ContractingPartyId,
- TdateFa = DateTime.Now.ToFarsi(),
Deptor = 0,
Creditor = transaction.Amount,
DeptorString = "0",
- CreditorString = transaction.Amount.ToMoney(),
TypeOfTransaction = "credit",
DescriptionOption = "بابت قرارداد مابین (روابط کار)",
- Description = "درگاه بانکی ",
+ Description = "درگاه بانکی",
};
- var statementResult = _financialStatmentApplication.Create(command);
+ var statementResult = _financialStatmentApplication.CreateFromBankGateway(command);
if (!statementResult.IsSuccedded)
{
return await HandleFailedTransaction(transaction, paymentTransactionId);