23 lines
1.0 KiB
C#
23 lines
1.0 KiB
C#
namespace General_Ledger_Service.Services.PdfDocuments
|
|
{
|
|
// Shared amount-formatting rules for every report PDF (05_LKAS_Report_PDF_Templates.md
|
|
// Section 9): thousands separator, 2 decimal places, round-half-up, negatives in
|
|
// parentheses. Same rounding rule as CLAUDE.md Rule 13's FormatCellValue.
|
|
public static class PdfFormatting
|
|
{
|
|
public static string FormatAmount(decimal value)
|
|
{
|
|
var rounded = Math.Round(value, 2, MidpointRounding.AwayFromZero);
|
|
return rounded < 0 ? $"({Math.Abs(rounded):N2})" : rounded.ToString("N2");
|
|
}
|
|
|
|
// Blank instead of "0.00" - Trial Balance's Debit/Credit split (Section 2).
|
|
public static string FormatAmountOrBlank(decimal value) =>
|
|
value == 0 ? string.Empty : FormatAmount(value);
|
|
|
|
// "—" instead of "0.00" - Tax Summary's Output/Input Tax columns (Section 8).
|
|
public static string FormatAmountOrDash(decimal value) =>
|
|
value == 0 ? "—" : FormatAmount(value);
|
|
}
|
|
}
|