refactor: rename namespace to FiscalFlow and upgrade to .NET 10
- Rename InvoiceMaster.* to FiscalFlow.* namespace - Upgrade from .NET 8 to .NET 10 - Update all NuGet packages to latest versions - Update C# language version to 14.0
This commit is contained in:
163
backend/src/FiscalFlow.Core/Entities/Invoice.cs
Normal file
163
backend/src/FiscalFlow.Core/Entities/Invoice.cs
Normal file
@@ -0,0 +1,163 @@
|
||||
namespace FiscalFlow.Core.Entities;
|
||||
|
||||
public enum InvoiceStatus
|
||||
{
|
||||
Pending,
|
||||
Uploading,
|
||||
Processing,
|
||||
Preview,
|
||||
Importing,
|
||||
Imported,
|
||||
Failed
|
||||
}
|
||||
|
||||
public enum SupplierMatchAction
|
||||
{
|
||||
UseExisting,
|
||||
CreateNew,
|
||||
SuggestMatch
|
||||
}
|
||||
|
||||
public class Invoice : BaseEntity
|
||||
{
|
||||
public Guid ConnectionId { get; private set; }
|
||||
public AccountingConnection Connection { get; private set; } = null!;
|
||||
public string Provider { get; private set; } = string.Empty;
|
||||
|
||||
public string OriginalFilename { get; private set; } = string.Empty;
|
||||
public string StoragePath { get; private set; } = string.Empty;
|
||||
public long? FileSize { get; private set; }
|
||||
public string? FileHash { get; private set; }
|
||||
|
||||
public string? ExtractionData { get; private set; }
|
||||
public decimal? ExtractionConfidence { get; private set; }
|
||||
|
||||
public string? ExtractedSupplierName { get; private set; }
|
||||
public string? ExtractedSupplierOrgNumber { get; private set; }
|
||||
public string? ExtractedInvoiceNumber { get; private set; }
|
||||
public DateTime? ExtractedInvoiceDate { get; private set; }
|
||||
public DateTime? ExtractedDueDate { get; private set; }
|
||||
public decimal? ExtractedAmountTotal { get; private set; }
|
||||
public decimal? ExtractedAmountVat { get; private set; }
|
||||
public int? ExtractedVatRate { get; private set; }
|
||||
public string? ExtractedOcrNumber { get; private set; }
|
||||
public string? ExtractedBankgiro { get; private set; }
|
||||
public string? ExtractedPlusgiro { get; private set; }
|
||||
public string ExtractedCurrency { get; private set; } = "SEK";
|
||||
|
||||
public string? SupplierNumber { get; private set; }
|
||||
public decimal? SupplierMatchConfidence { get; private set; }
|
||||
public SupplierMatchAction? SupplierMatchAction { get; private set; }
|
||||
|
||||
public string? VoucherSeries { get; private set; }
|
||||
public string? VoucherNumber { get; private set; }
|
||||
public string? VoucherUrl { get; private set; }
|
||||
public string? VoucherRows { get; private set; }
|
||||
|
||||
public InvoiceStatus Status { get; private set; } = InvoiceStatus.Pending;
|
||||
public string? ErrorMessage { get; private set; }
|
||||
public string? ErrorCode { get; private set; }
|
||||
|
||||
public Guid? ReviewedBy { get; private set; }
|
||||
public DateTime? ReviewedAt { get; private set; }
|
||||
|
||||
public string? AttachmentId { get; private set; }
|
||||
public string? AttachmentUrl { get; private set; }
|
||||
public DateTime? ProcessedAt { get; private set; }
|
||||
|
||||
public static Invoice Create(
|
||||
Guid connectionId,
|
||||
string provider,
|
||||
string originalFilename,
|
||||
string storagePath,
|
||||
long? fileSize = null,
|
||||
string? fileHash = null)
|
||||
{
|
||||
return new Invoice
|
||||
{
|
||||
ConnectionId = connectionId,
|
||||
Provider = provider,
|
||||
OriginalFilename = originalFilename,
|
||||
StoragePath = storagePath,
|
||||
FileSize = fileSize,
|
||||
FileHash = fileHash,
|
||||
Status = InvoiceStatus.Uploading
|
||||
};
|
||||
}
|
||||
|
||||
public void SetExtractionData(
|
||||
string extractionData,
|
||||
decimal confidence,
|
||||
string? supplierName,
|
||||
string? supplierOrgNumber,
|
||||
string? invoiceNumber,
|
||||
DateTime? invoiceDate,
|
||||
DateTime? dueDate,
|
||||
decimal? amountTotal,
|
||||
decimal? amountVat,
|
||||
int? vatRate,
|
||||
string? ocrNumber,
|
||||
string? bankgiro,
|
||||
string? plusgiro,
|
||||
string currency = "SEK")
|
||||
{
|
||||
ExtractionData = extractionData;
|
||||
ExtractionConfidence = confidence;
|
||||
ExtractedSupplierName = supplierName;
|
||||
ExtractedSupplierOrgNumber = supplierOrgNumber;
|
||||
ExtractedInvoiceNumber = invoiceNumber;
|
||||
ExtractedInvoiceDate = invoiceDate;
|
||||
ExtractedDueDate = dueDate;
|
||||
ExtractedAmountTotal = amountTotal;
|
||||
ExtractedAmountVat = amountVat;
|
||||
ExtractedVatRate = vatRate;
|
||||
ExtractedOcrNumber = ocrNumber;
|
||||
ExtractedBankgiro = bankgiro;
|
||||
ExtractedPlusgiro = plusgiro;
|
||||
ExtractedCurrency = currency;
|
||||
Status = InvoiceStatus.Preview;
|
||||
}
|
||||
|
||||
public void SetSupplierMatch(string supplierNumber, decimal confidence, SupplierMatchAction action)
|
||||
{
|
||||
SupplierNumber = supplierNumber;
|
||||
SupplierMatchConfidence = confidence;
|
||||
SupplierMatchAction = action;
|
||||
}
|
||||
|
||||
public void SetVoucher(string series, string number, string url, string rows)
|
||||
{
|
||||
VoucherSeries = series;
|
||||
VoucherNumber = number;
|
||||
VoucherUrl = url;
|
||||
VoucherRows = rows;
|
||||
}
|
||||
|
||||
public void SetStatus(InvoiceStatus status)
|
||||
{
|
||||
Status = status;
|
||||
if (status == InvoiceStatus.Imported)
|
||||
{
|
||||
ProcessedAt = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetError(string errorCode, string errorMessage)
|
||||
{
|
||||
ErrorCode = errorCode;
|
||||
ErrorMessage = errorMessage;
|
||||
Status = InvoiceStatus.Failed;
|
||||
}
|
||||
|
||||
public void SetReviewed(Guid reviewedBy)
|
||||
{
|
||||
ReviewedBy = reviewedBy;
|
||||
ReviewedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void SetAttachment(string attachmentId, string attachmentUrl)
|
||||
{
|
||||
AttachmentId = attachmentId;
|
||||
AttachmentUrl = attachmentUrl;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user