diff --git a/Company.Domain/Company.Domain.csproj b/Company.Domain/Company.Domain.csproj
index 76106517..c1cbaff9 100644
--- a/Company.Domain/Company.Domain.csproj
+++ b/Company.Domain/Company.Domain.csproj
@@ -16,6 +16,7 @@
+
diff --git a/Company.Domain/FinancialInvoiceAgg/FinancialInvoice.cs b/Company.Domain/FinancialInvoiceAgg/FinancialInvoice.cs
new file mode 100644
index 00000000..ffbead06
--- /dev/null
+++ b/Company.Domain/FinancialInvoiceAgg/FinancialInvoice.cs
@@ -0,0 +1,64 @@
+using System;
+using _0_Framework.Domain;
+using Company.Domain.FinancialStatmentAgg;
+
+namespace Company.Domain.FinancialInvoiceAgg;
+
+public class FinancialInvoice:EntityBase
+{
+ public int Month { get; private set; }
+ public int Year { get; private set; }
+
+ public FinancialInvoiceStatus Status { get; private set; }
+ public DateTime? PaidAt { get; private set; }
+ public double Amount { get; private set; }
+ public string SmsCode { get; private set; }
+ public long? FinancialStatementId { get; private set; }
+ public FinancialStatment FinancialStatement { get; private set; }
+
+ public FinancialInvoice(int month, int year, FinancialInvoiceStatus status, double amount)
+ {
+ Month = month;
+ Year = year;
+ Status = status;
+ Amount = amount;
+ SmsCode = Guid.NewGuid().ToString("N");
+ }
+ public void SetFinancialStatement(long financialStatementId)
+ {
+ FinancialStatementId = financialStatementId;
+ }
+ public void SetPaid(DateTime paidAt)
+ {
+ Status = FinancialInvoiceStatus.Paid;
+ PaidAt = paidAt;
+ }
+ public void SetUnpaid()
+ {
+ Status = FinancialInvoiceStatus.Unpaid;
+ PaidAt = null;
+ }
+ public void SetCancelled()
+ {
+ Status = FinancialInvoiceStatus.Cancelled;
+ PaidAt = null;
+ }
+ public void SetRefunded()
+ {
+ Status = FinancialInvoiceStatus.Refunded;
+ PaidAt = null;
+ }
+ public void SetNewSmsCode()
+ {
+ SmsCode = Guid.NewGuid().ToString("N");
+ }
+
+}
+
+public enum FinancialInvoiceStatus
+{
+ Unpaid = 0, // پرداخت نشده
+ Paid = 1, // پرداخت شده کامل
+ Cancelled = 4, // فاکتور لغو شده
+ Refunded = 5, // بازپرداخت شده (در صورت برگشت وجه)
+}
\ No newline at end of file
diff --git a/Company.Domain/FinancialStatmentAgg/FinancialStatment.cs b/Company.Domain/FinancialStatmentAgg/FinancialStatment.cs
index fecad98f..a1fb2830 100644
--- a/Company.Domain/FinancialStatmentAgg/FinancialStatment.cs
+++ b/Company.Domain/FinancialStatmentAgg/FinancialStatment.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Domain;
+using Company.Domain.FinancialInvoiceAgg;
using Company.Domain.FinancialTransactionAgg;
namespace Company.Domain.FinancialStatmentAgg;
@@ -27,6 +28,7 @@ public class FinancialStatment : EntityBase
public List FinancialTransactionList { get; set; }
+ public List FinancialInvoices { get; set; }
}
\ No newline at end of file