using General_Ledger_Service.Enums; namespace General_Ledger_Service.Models { public class JournalEntry { public long JournalId { get; set; } public string JournalNo { get; set; } = string.Empty; public int PeriodId { get; set; } public DateOnly EntryDate { get; set; } public string JournalType { get; set; } = string.Empty; public string? SourceModule { get; set; } public string? Reference { get; set; } public string? Narration { get; set; } public bool IsPosted { get; set; } public bool IsReversed { get; set; } public long? ReversalOfId { get; set; } public JournalEntryStatus EntryStatus { get; set; } public string? PreparedBy { get; set; } public DateTime CreatedAt { get; set; } public AccountingPeriod Period { get; set; } = null!; public JournalEntry? ReversalOf { get; set; } public ICollection Lines { get; set; } = new List(); } public class JournalEntryLine { public long LineId { get; set; } public long JournalId { get; set; } public long AccountId { get; set; } public decimal DebitAmount { get; set; } public decimal CreditAmount { get; set; } public string CurrencyCode { get; set; } = string.Empty; public decimal ExchangeRate { get; set; } public decimal BaseDebit { get; set; } public decimal BaseCredit { get; set; } public long? CostCenterId { get; set; } public string? Memo { get; set; } public DateTime CreatedAt { get; set; } public JournalEntry Journal { get; set; } = null!; public Account Account { get; set; } = null!; public CostCenter? CostCenter { get; set; } public Currency Currency { get; set; } = null!; } public class JournalCorrection { public long CorrectionId { get; set; } public long OriginalJournalId { get; set; } public long CorrectionJournalId { get; set; } public JournalCorrectionType CorrectionType { get; set; } public string Reason { get; set; } = string.Empty; public string? CorrectedBy { get; set; } public DateTime CreatedAt { get; set; } public JournalEntry OriginalJournal { get; set; } = null!; public JournalEntry CorrectionJournal { get; set; } = null!; } }