///|
/// A report pack groups the statements normally shown together.
pub struct ReportPack {
period : String
reports : Array[Report]
} derive(Debug, Eq)
///|
pub fn build_report_pack(
period : String,
entries : Array[Entry],
mappings : Array[AccountMapping],
) -> ReportPack {
let reports = [
generate(BalanceSheet, period, entries, mappings),
generate(IncomeStatement, period, entries, mappings),
generate(CashFlowStatement, period, entries, mappings),
generate(Management, period, entries, mappings),
]
{ period, reports }
}
///|
pub fn ReportPack::to_markdown(self : ReportPack) -> String {
let out = StringBuilder()
out.write_string("# Financial report pack — ")
out.write_string(self.period)
out.write_string("\n\n")
for report in self.reports {
out.write_string("## ")
out.write_string(statement_name(report.kind))
out.write_string("\n\n")
out.write_string(report.to_markdown())
out.write_string("\n")
}
out.to_string()
}