Distribution_GL Initialization

This commit is contained in:
2026-10-20 13:07:07 +05:30
commit 3f16e0cb44
194 changed files with 35659 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Accounts
{
public class AccountDetailResponse
{
public Account Account { get; set; } = null!;
public string? AncestorBreadcrumb { get; set; }
public List<AccountTreeNode>? DescendantTree { get; set; }
}
}
+12
View File
@@ -0,0 +1,12 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Accounts
{
public class AccountListResponse
{
public List<Account> Items { get; set; } = [];
public int TotalCount { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.Accounts
{
public class AccountTreeNode
{
public long AccountId { get; set; }
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public long? ParentAccountId { get; set; }
public int Depth { get; set; }
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace General_Ledger_Service.DTOs.Accounts
{
public class CreateAccountRequest
{
public string AccountName { get; set; } = string.Empty;
public long? ParentAccountId { get; set; }
public short AccountTypeId { get; set; }
public bool IsControlAccount { get; set; }
public bool IsPostable { get; set; } = true;
public string? CurrencyCode { get; set; }
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.Accounts
{
public class ListAccountsRequest
{
public short? AccountTypeId { get; set; }
public bool? IsActive { get; set; }
public bool? IsPostable { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+18
View File
@@ -0,0 +1,18 @@
namespace General_Ledger_Service.DTOs.Accounts
{
public class UpdateAccountRequest
{
public string? AccountName { get; set; }
public bool ParentAccountIdProvided { get; set; }
public long? ParentAccountId { get; set; }
public short? AccountTypeId { get; set; }
public bool? IsControlAccount { get; set; }
public bool? IsPostable { get; set; }
public string? CurrencyCode { get; set; }
public string? CashFlowCategory { get; set; }
public string? IncomeStatementSection { get; set; }
public string? BalanceSheetClassification { get; set; }
public bool? IsTaxDeductible { get; set; }
public bool? IsActive { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace General_Ledger_Service.DTOs.AuditLog
{
public class AuditLogListResponse
{
public List<General_Ledger_Service.Models.AuditLog> Items { get; set; } = [];
public int TotalCount { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+14
View File
@@ -0,0 +1,14 @@
namespace General_Ledger_Service.DTOs.AuditLog
{
public class ListAuditLogRequest
{
public List<string>? Category { get; set; }
public string? EntityName { get; set; }
public string? Action { get; set; }
public string? PerformedBy { get; set; }
public DateOnly? From { get; set; }
public DateOnly? To { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+22
View File
@@ -0,0 +1,22 @@
namespace General_Ledger_Service.DTOs.Bank
{
// Combined read shape for GET /bank-accounts?accountType=Cash|Bank|Both - BankAccount and
// CashAccount are separate tables (decided 2026-07-22), but a caller listing "cash and bank
// accounts" together needs one flat, filterable list rather than two separate calls.
public class CashAndBankAccountDto
{
public string AccountType { get; set; } = string.Empty; // "Cash" | "Bank"
public long AccountId { get; set; }
public string AccountName { get; set; } = string.Empty;
public string? BankName { get; set; } // Bank only
public string? CashAccountTypeName { get; set; } // Cash only
public string? AccountNumber { get; set; }
public long GlAccountId { get; set; }
public string GlAccountCode { get; set; } = string.Empty;
public string CurrencyCode { get; set; } = string.Empty;
public DateTime CreatedAt { get; set; }
// Cash only - Bank accounts carry no such protection yet.
public bool? IsActive { get; set; }
public bool? IsDefault { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace General_Ledger_Service.DTOs.Bank
{
public class CreateBankAccountRequest
{
public string AccountName { get; set; } = string.Empty;
public string? BankName { get; set; }
public string? AccountNumber { get; set; }
public string? CurrencyCode { get; set; }
}
}
+13
View File
@@ -0,0 +1,13 @@
namespace General_Ledger_Service.DTOs.Bank
{
public class CreateCashAccountRequest
{
public string AccountName { get; set; } = string.Empty;
// Matched case-insensitively against cash_account_type.name; a name that doesn't match
// an existing row causes a new one to be created on the fly (the frontend's "Other" flow).
public string CashAccountTypeName { get; set; } = string.Empty;
// Optional - if omitted, BankService.CreateCashAccountAsync auto-generates one.
public string? AccountNumber { get; set; }
public string? CurrencyCode { get; set; }
}
}
+16
View File
@@ -0,0 +1,16 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Bank
{
public class ImportStatementLinesResponse
{
public List<BankStatementLine> Imported { get; set; } = [];
public List<FailedRow> FailedRows { get; set; } = [];
}
public class FailedRow
{
public int RowNumber { get; set; }
public string Reason { get; set; } = string.Empty;
}
}
@@ -0,0 +1,7 @@
namespace General_Ledger_Service.DTOs.Bank
{
public class ReconcileStatementLineRequest
{
public string MatchedJournalNo { get; set; } = string.Empty;
}
}
+15
View File
@@ -0,0 +1,15 @@
namespace General_Ledger_Service.DTOs.Bank
{
// Rename only - CashAccountTypeId/GlAccountId/CurrencyCode are fixed at creation (changing
// them would mean re-pointing posted history at a different GL leaf). Always allowed, even
// on the default cash account - only delete/deactivate are blocked for that one.
public class UpdateCashAccountRequest
{
public string AccountName { get; set; } = string.Empty;
}
public class SetCashAccountStatusRequest
{
public bool IsActive { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace General_Ledger_Service.DTOs.Budget
{
public class BudgetLineRequest
{
public string AccountCode { get; set; } = string.Empty;
public int PeriodId { get; set; }
public string? CostCenterCode { get; set; }
public decimal BudgetedAmount { get; set; }
}
}
+8
View File
@@ -0,0 +1,8 @@
namespace General_Ledger_Service.DTOs.Budget
{
public class CreateBudgetRequest
{
public int FiscalYearId { get; set; }
public string Name { get; set; } = string.Empty;
}
}
+12
View File
@@ -0,0 +1,12 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ChequeBookListResponse
{
public List<ChequeBook> Items { get; set; } = [];
public int TotalCount { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+12
View File
@@ -0,0 +1,12 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ChequePageListResponse
{
public List<ChequePage> Items { get; set; } = [];
public int TotalCount { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+15
View File
@@ -0,0 +1,15 @@
namespace General_Ledger_Service.DTOs.Cheques
{
public class CreateChequeBookRequest
{
public long BranchId { get; set; }
public long BankAccountId { get; set; }
public string ChequeBookNo { get; set; } = string.Empty;
public string StartChequeNo { get; set; } = string.Empty;
public string EndChequeNo { get; set; } = string.Empty;
public int TotalLeaves { get; set; }
public DateOnly ReceivedDate { get; set; }
public string? Description { get; set; }
public string? CreatedBy { get; set; }
}
}
@@ -0,0 +1,22 @@
namespace General_Ledger_Service.DTOs.Cheques
{
public class CreateReceivedChequeRequest
{
public long CompanyId { get; set; }
public long? BranchId { get; set; }
public string ReceivedFromType { get; set; } = string.Empty;
public long? ReceivedFromId { get; set; }
public string ReceivedFromName { get; set; } = string.Empty;
public string? DrawerBankName { get; set; }
public string? DrawerBankBranch { get; set; }
public string? AccountHolderName { get; set; }
public string ChequeNo { get; set; } = string.Empty;
public DateOnly ChequeDate { get; set; }
public decimal Amount { get; set; }
public DateOnly ReceivedDate { get; set; }
public string? ReferenceType { get; set; }
public long? ReferenceId { get; set; }
public string? Notes { get; set; }
public string? CreatedBy { get; set; }
}
}
+20
View File
@@ -0,0 +1,20 @@
namespace General_Ledger_Service.DTOs.Cheques
{
public class IssueChequePageRequest
{
public string PayeeType { get; set; } = string.Empty;
public long? PayeeId { get; set; }
public string PayeeName { get; set; } = string.Empty;
public DateOnly IssueDate { get; set; }
public decimal Amount { get; set; }
public string? CurrencyCode { get; set; }
public long? VoucherId { get; set; }
public string? ReferenceNo { get; set; }
public string? Purpose { get; set; }
public bool IsCrossCheque { get; set; }
public bool IsAccountPayee { get; set; }
public bool IsPostDated { get; set; }
public string? Notes { get; set; }
public string? PrintedBy { get; set; }
}
}
+13
View File
@@ -0,0 +1,13 @@
using General_Ledger_Service.Enums;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ListChequeBooksRequest
{
public long? BankAccountId { get; set; }
public long? BranchId { get; set; }
public ChequeBookStatus? Status { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+14
View File
@@ -0,0 +1,14 @@
using General_Ledger_Service.Enums;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ListChequePagesRequest
{
public string? ChequeBookNo { get; set; }
public ChequeIssueStatus? IssueStatus { get; set; }
public ChequePayeeType? PayeeType { get; set; }
public long? PayeeId { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
@@ -0,0 +1,14 @@
using General_Ledger_Service.Enums;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ListReceivedChequesRequest
{
public long? CompanyId { get; set; }
public long? BranchId { get; set; }
public ReceivedChequeStatus? Status { get; set; }
public ReceivedChequeFromType? ReceivedFromType { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
@@ -0,0 +1,12 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.Cheques
{
public class ReceivedChequeListResponse
{
public List<ReceivedCheque> Items { get; set; } = [];
public int TotalCount { get; set; }
public int? Page { get; set; }
public int? PageSize { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace General_Ledger_Service.DTOs.Common
{
public class ApiResponse
{
public int StatusCode { get; set; }
public bool Success { get; set; }
public string Message { get; set; } = string.Empty;
public object? Data { get; set; }
}
}
@@ -0,0 +1,11 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.CostCenters
{
public class CostCenterDetailResponse
{
public CostCenter CostCenter { get; set; } = null!;
public string? AncestorBreadcrumb { get; set; }
public List<CostCenterTreeNode>? DescendantTree { get; set; }
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.CostCenters
{
public class CostCenterTreeNode
{
public long CostCenterId { get; set; }
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public long? ParentCostCenterId { get; set; }
public int Depth { get; set; }
}
}
@@ -0,0 +1,9 @@
namespace General_Ledger_Service.DTOs.CostCenters
{
public class CreateCostCenterRequest
{
public string Name { get; set; } = string.Empty;
public long? ParentCostCenterId { get; set; }
public bool IsActive { get; set; } = true;
}
}
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.FiscalCalendar
{
public class CreateFiscalYearRequest
{
public string YearName { get; set; } = string.Empty;
public DateOnly StartDate { get; set; }
public DateOnly EndDate { get; set; }
public bool AutoGeneratePeriods { get; set; }
public int? PeriodCount { get; set; }
}
}
@@ -0,0 +1,10 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.FiscalCalendar
{
public class CreateFiscalYearResponse
{
public FiscalYear FiscalYear { get; set; } = null!;
public List<AccountingPeriod> GeneratedPeriods { get; set; } = [];
}
}
@@ -0,0 +1,7 @@
namespace General_Ledger_Service.DTOs.FiscalCalendar
{
public class GeneratePeriodsRequest
{
public int? PeriodCount { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
using General_Ledger_Service.Models;
namespace General_Ledger_Service.DTOs.FiscalCalendar
{
public class LockPeriodResponse
{
public AccountingPeriod Period { get; set; } = null!;
public PeriodLockLog LockLog { get; set; } = null!;
}
}
@@ -0,0 +1,17 @@
namespace General_Ledger_Service.DTOs.FixedAssets
{
public class CreateFixedAssetRequest
{
public string AssetName { get; set; } = string.Empty;
public string AssetAccountCode { get; set; } = string.Empty;
public string AccumDeprAccountCode { get; set; } = string.Empty;
public string DeprExpenseAccountCode { get; set; } = string.Empty;
public string GainLossAccountCode { get; set; } = string.Empty;
public DateOnly AcquisitionDate { get; set; }
public decimal AcquisitionCost { get; set; }
public decimal ResidualValue { get; set; }
public int UsefulLifeMonths { get; set; }
public string DepreciationMethod { get; set; } = string.Empty;
public decimal? DepreciationRatePercent { get; set; }
}
}
@@ -0,0 +1,15 @@
namespace General_Ledger_Service.DTOs.FixedAssets
{
public class CreateFixedAssetTransactionRequest
{
public string TransactionType { get; set; } = string.Empty;
// Depreciate
public int? PeriodId { get; set; }
// Dispose
public DateOnly? DisposalDate { get; set; }
public decimal? Proceeds { get; set; }
public string? ProceedsAccountCode { get; set; }
}
}
@@ -0,0 +1,15 @@
namespace General_Ledger_Service.DTOs.JournalEntries
{
public class CreateJournalEntryRequest
{
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 string? PreparedBy { get; set; }
public List<JournalEntryLineRequest>? Lines { get; set; }
public JournalEntryCorrectionRequest? Correction { get; set; }
}
}
@@ -0,0 +1,10 @@
namespace General_Ledger_Service.DTOs.JournalEntries
{
public class JournalEntryCorrectionRequest
{
public string OriginalJournalNo { get; set; } = string.Empty;
public string CorrectionType { get; set; } = string.Empty;
public string Reason { get; set; } = string.Empty;
public string? CorrectedBy { get; set; }
}
}
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.JournalEntries
{
public class JournalEntryLineRequest
{
public string AccountCode { get; set; } = string.Empty;
public decimal DebitAmount { get; set; }
public decimal CreditAmount { get; set; }
public string? CostCenterCode { get; set; }
public string? Memo { get; set; }
}
}
@@ -0,0 +1,18 @@
namespace General_Ledger_Service.DTOs.RecurringTemplates
{
public class CreateRecurringTemplateRequest
{
public string TemplateName { get; set; } = string.Empty;
public string RecurrencePattern { get; set; } = string.Empty;
public DateOnly NextRunDate { get; set; }
public DateOnly? EndDate { get; set; }
public List<RecurringTemplateLineRequest> Lines { get; set; } = [];
}
public class RecurringTemplateLineRequest
{
public string AccountCode { get; set; } = string.Empty;
public decimal DebitAmount { get; set; }
public decimal CreditAmount { get; set; }
}
}
+20
View File
@@ -0,0 +1,20 @@
namespace General_Ledger_Service.DTOs.Reports
{
public class ListReportsRequest
{
public string ReportType { get; set; } = string.Empty;
public string OutputFormat { get; set; } = string.Empty;
public string? AccountCode { get; set; }
public DateOnly? PeriodStart { get; set; }
public DateOnly? PeriodEnd { get; set; }
public DateOnly? AsOfDate { get; set; }
public long? BudgetId { get; set; }
// TaxSummary (Income Tax Computation) - optional, default 0 except where noted.
public decimal? AllowableDeductions { get; set; }
public decimal? OtherTaxableIncome { get; set; }
public decimal? QualifyingPaymentsReliefs { get; set; } // defaults from STATUTORY_RELIEF_AMOUNT
public decimal? SurchargeAmount { get; set; }
public decimal? TaxRateOverride { get; set; } // defaults from CORPORATE_INCOME_TAX_RATE
}
}
+207
View File
@@ -0,0 +1,207 @@
namespace General_Ledger_Service.DTOs.Reports
{
public class GeneralLedgerLineDto
{
public DateOnly EntryDate { get; set; }
public string JournalNo { get; set; } = string.Empty;
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public string? Narration { get; set; }
public decimal DebitAmount { get; set; }
public decimal CreditAmount { get; set; }
public decimal RunningBalance { get; set; }
}
// Retrofit 2026-07-22 - flat, no depth/indentation (05_LKAS_Report_PDF_Templates.md Section 2).
public class TrialBalanceRowDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public decimal Debit { get; set; }
public decimal Credit { get; set; }
}
// Retrofit 2026-07-31 - restructured around accounts.balance_sheet_classification
// (Accounting_System_Design_LKAS.md Section 11.3), replacing the old flat
// {depth, lineItem, accountType, balance} recursive-rollup array entirely - same
// leaf-rows-plus-tag pattern as ProfitAndLossLeafRowDto/income_statement_section below.
public class BalanceSheetLineDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public decimal Balance { get; set; }
}
public class BalanceSheetSectionDto
{
public List<BalanceSheetLineDto> Lines { get; set; } = [];
public decimal Total { get; set; }
}
public class BalanceSheetReportDto
{
public DateOnly AsOfDate { get; set; }
public BalanceSheetSectionDto NonCurrentAssets { get; set; } = new();
public BalanceSheetSectionDto CurrentAssets { get; set; } = new();
public BalanceSheetSectionDto UnclassifiedAssets { get; set; } = new();
public decimal TotalAssets { get; set; }
public BalanceSheetSectionDto Equity { get; set; } = new();
public BalanceSheetSectionDto NonCurrentLiabilities { get; set; } = new();
public BalanceSheetSectionDto CurrentLiabilities { get; set; } = new();
public BalanceSheetSectionDto UnclassifiedLiabilities { get; set; } = new();
public decimal TotalEquityAndLiabilities { get; set; }
}
// Leaf-row shape for AccountRepository.GetBalanceSheetLeafRowsAsync - Balance is
// already sign-adjusted per account type (debit-normal Asset vs credit-normal
// Liability/Equity), same convention the old recursive-rollup query used. ReportService
// groups these into BalanceSheetReportDto's sections by AccountTypeId + BalanceSheetClassification
// (same raw-projection -> public-DTO split as ProfitAndLossLeafRowDto above).
public class BalanceSheetLeafRowDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public short AccountTypeId { get; set; }
public string? BalanceSheetClassification { get; set; }
public decimal Balance { get; set; }
}
// Retrofit 2026-07-22 - restructured around accounts.income_statement_section
// (Accounting_System_Design_LKAS.md Section 11.4), replacing the old flat
// {depth, lineItem, accountType, amount} array entirely.
public class ProfitAndLossLineDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public decimal Amount { get; set; }
}
public class ProfitAndLossSectionDto
{
public List<ProfitAndLossLineDto> Lines { get; set; } = [];
public decimal Total { get; set; }
}
public class ProfitAndLossReportDto
{
public DateOnly PeriodStart { get; set; }
public DateOnly PeriodEnd { get; set; }
public ProfitAndLossSectionDto Sales { get; set; } = new();
public ProfitAndLossSectionDto CostOfSales { get; set; } = new();
public decimal GrossProfit { get; set; }
public ProfitAndLossSectionDto OtherIncome { get; set; } = new();
public ProfitAndLossSectionDto DistributionExpenses { get; set; } = new();
public ProfitAndLossSectionDto AdministrationExpenses { get; set; } = new();
public ProfitAndLossSectionDto OtherExpenses { get; set; } = new();
public ProfitAndLossSectionDto FinancialExpenses { get; set; } = new();
public ProfitAndLossSectionDto Unclassified { get; set; } = new();
public decimal NetProfitForPeriod { get; set; }
}
// Leaf-row shape for AccountRepository.GetProfitAndLossLeafRowsAsync - Amount is
// the unflipped credit - debit; ReportService applies the sign convention
// per income_statement_section when building ProfitAndLossReportDto.
public class ProfitAndLossLeafRowDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public short AccountTypeId { get; set; }
public string? IncomeStatementSection { get; set; }
public decimal Amount { get; set; }
}
// Full LKAS 7 indirect-method cash flow — Accounting_System_Design_LKAS.md Section 11.5.
public class CashFlowReportDto
{
public DateOnly PeriodStart { get; set; }
public DateOnly PeriodEnd { get; set; }
public CashFlowOperatingActivitiesDto OperatingActivities { get; set; } = new();
public CashFlowInvestingActivitiesDto InvestingActivities { get; set; } = new();
public CashFlowFinancingActivitiesDto FinancingActivities { get; set; } = new();
public decimal NetIncreaseDecreaseInCash { get; set; }
public decimal OpeningCashBalance { get; set; }
public decimal ClosingCashBalance { get; set; }
}
public class CashFlowOperatingActivitiesDto
{
public decimal ProfitForPeriod { get; set; }
public List<CashFlowNonCashAdjustmentDto> NonCashAdjustments { get; set; } = [];
public List<CashFlowWorkingCapitalChangeDto> WorkingCapitalChanges { get; set; } = [];
public decimal NetCashFromOperatingActivities { get; set; }
}
public class CashFlowNonCashAdjustmentDto
{
public string Description { get; set; } = string.Empty;
public decimal Amount { get; set; }
}
public class CashFlowWorkingCapitalChangeDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
// Retrofit 2026-07-22 - the account balance's own movement ("Increase"/"Decrease"),
// independent of ChangeAmount's sign (cash impact, which flips between asset/liability
// accounts) - see Accounting_System_Design_LKAS.md Section 11.5's retrofit note.
public string Direction { get; set; } = string.Empty;
public decimal ChangeAmount { get; set; }
}
public class CashFlowLineDto
{
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public decimal Amount { get; set; }
}
public class CashFlowInvestingActivitiesDto
{
public List<CashFlowLineDto> Lines { get; set; } = [];
public decimal NetCashFromInvestingActivities { get; set; }
}
public class CashFlowFinancingActivitiesDto
{
public List<CashFlowLineDto> Lines { get; set; } = [];
public decimal NetCashFromFinancingActivities { get; set; }
}
public class BudgetVsActualRowDto
{
public long BudgetLineId { get; set; }
public string AccountCode { get; set; } = string.Empty;
public string AccountName { get; set; } = string.Empty;
public int PeriodId { get; set; }
public decimal BudgetedAmount { get; set; }
public decimal ActualAmount { get; set; }
public decimal Variance { get; set; }
}
// Retrofit 2026-07-22 - Accounting_System_Design_LKAS.md Section 11.7. Replaces the
// 2026-07-21 VAT/WHT/NBT per-tax_code summary wholesale, under the same TaxSummary
// reportType name - a full corporate Income Tax Computation, current tax only (no deferred
// tax anywhere in this schema). The superseded design is kept in the design doc marked
// Section 11.7 (dagger) for reference only - not implemented here.
public class IncomeTaxComputationDto
{
public DateOnly PeriodStart { get; set; }
public DateOnly PeriodEnd { get; set; }
public decimal ProfitBeforeTax { get; set; }
public decimal NonDeductibleExpenses { get; set; }
public decimal AllowableDeductions { get; set; }
public decimal AdjustedBusinessProfit { get; set; }
public decimal OtherTaxableIncome { get; set; }
public decimal AssessableIncome { get; set; }
public decimal QualifyingPaymentsReliefs { get; set; }
public decimal TaxableIncome { get; set; }
public decimal TaxRatePercent { get; set; }
public decimal CorporateIncomeTax { get; set; }
public decimal SurchargeAmount { get; set; }
public decimal GrossTaxLiability { get; set; }
public decimal ApitCredit { get; set; }
public decimal WhtCredit { get; set; }
public decimal QuarterlyTaxPayments { get; set; }
public decimal BalanceTaxPayable { get; set; }
}
}
@@ -0,0 +1,7 @@
namespace General_Ledger_Service.DTOs.SystemConfig
{
public class UpdateSystemConfigRequest
{
public string ConfigValue { get; set; } = string.Empty;
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace General_Ledger_Service.DTOs.Tax
{
public class CalculateTaxRequest
{
public string TaxCode { get; set; } = string.Empty;
public decimal Amount { get; set; }
public DateOnly TxnDate { get; set; }
}
}
+11
View File
@@ -0,0 +1,11 @@
namespace General_Ledger_Service.DTOs.Tax
{
public class CalculateTaxResponse
{
public long TaxCodeId { get; set; }
public string Code { get; set; } = string.Empty;
public decimal RatePercent { get; set; }
public decimal LineTotal { get; set; }
public decimal TaxAmount { get; set; }
}
}
+15
View File
@@ -0,0 +1,15 @@
namespace General_Ledger_Service.DTOs.Tax
{
public class CreateTaxCodeRequest
{
public string TaxTypeCode { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public decimal RatePercent { get; set; }
public string CalculationBasis { get; set; } = string.Empty;
public string AppliesTo { get; set; } = string.Empty;
public string? OutputTaxAccountCode { get; set; }
public string? InputTaxAccountCode { get; set; }
public DateOnly EffectiveFrom { get; set; }
public DateOnly? EffectiveTo { get; set; }
}
}