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
@@ -0,0 +1,69 @@
using General_Ledger_Service.DTOs.Reports;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
namespace General_Ledger_Service.Services.PdfDocuments
{
// 05_LKAS_Report_PDF_Templates.md Section 6 - one continuous table (not separate boxed
// sections per account), account boundaries marked by an inline full-width group-header row.
// Response is already sorted by accountCode then entryDate - no re-sorting needed here.
public class GeneralLedgerPdfDocument(string companyName, string currencyCode, DateOnly periodStart, DateOnly periodEnd, List<GeneralLedgerLineDto> rows) : IDocument
{
public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
public void Compose(IDocumentContainer container)
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
ReportPageHeader.Compose(page, companyName, "General Ledger", ReportPageHeader.RangePeriodLine(periodStart, periodEnd), currencyCode);
page.Content().PaddingTop(10).Table(table =>
{
table.ColumnsDefinition(columns =>
{
columns.RelativeColumn(2);
columns.RelativeColumn(4);
columns.RelativeColumn(3);
columns.RelativeColumn(2);
columns.RelativeColumn(2);
columns.RelativeColumn(2);
});
table.Header(header =>
{
header.Cell().Text("Date").Bold();
header.Cell().Text("Particulars").Bold();
header.Cell().Text("Description/Reference (J.R.)").Bold();
header.Cell().AlignRight().Text("Debit").Bold();
header.Cell().AlignRight().Text("Credit").Bold();
header.Cell().AlignRight().Text("Balance").Bold();
header.Cell().ColumnSpan(6).PaddingTop(3).LineHorizontal(1);
});
string? currentAccountCode = null;
foreach (var row in rows)
{
if (row.AccountCode != currentAccountCode)
{
currentAccountCode = row.AccountCode;
table.Cell().ColumnSpan(6).Background(Colors.Grey.Lighten3).Padding(3)
.Text($"Account: {row.AccountCode} — {row.AccountName}").Bold();
}
table.Cell().Text(row.EntryDate.ToString("yyyy-MM-dd"));
table.Cell().Text(row.Narration ?? string.Empty);
table.Cell().Text(row.JournalNo);
table.Cell().AlignRight().Text(PdfFormatting.FormatAmountOrBlank(row.DebitAmount));
table.Cell().AlignRight().Text(PdfFormatting.FormatAmountOrBlank(row.CreditAmount));
table.Cell().AlignRight().Text(PdfFormatting.FormatAmount(row.RunningBalance));
}
table.Cell().ColumnSpan(6).PaddingTop(3).LineHorizontal(1);
});
});
}
}
}