UNPKG

@pingleware/bestbooks-reports

Version:

Reports module for BestBooks Accounting Application Framework

73 lines (64 loc) 2.15 kB
"use strict" const path = require('path'); const fs = require('fs'); const os = require('os'); const { info, warn, error } = require('@pingleware/bestbooks-core'); const report_list = { accountPayablesAging: "account-payables-aging.xslt", accountReceivablesAging: "account-receivables-aging.xslt", balanceSheet: "balance-sheet.xslt", breakevenAnalysis: "breakeven-analysis.xslt", budgetVsActual: "budget-vs-actual.xslt", customerEstimate: "customer-estimate.xslt", incomeStatement: "income-statement.xslt", incomeStatementGeographic: "income-statement-geographic.xslt", purchaseOrder: "purchase-order.xslt", statementChangeInEquity: "statement-in-change-in-equity.xslt", statementCashFlows: "statement-of-cash-flows.xslt", trialBalance: "trial-balance.xslt", retainedEarnings: "retained-earnings.xslt" }; function getReportFileName(reportName) { return report_list[reportName]; } function getReportRootFileName(reportName) { return report_list[reportName].split(".")[0]; } async function transform_xml_xslt(xml_content, xslt_content) { const {Xslt, XmlParser} = require('xslt-processor'); const xslt = new Xslt(); const xmlParser = new XmlParser(); return await xslt.xsltProcess( xmlParser.xmlParse(xml_content), xmlParser.xmlParse(xslt_content.toString()) ); } function format(reportName,xml_content) { try { if (report_list[reportName]) { var xsltString = fs.readFileSync(path.join(os.homedir(),`.bestbooks/${report_list[reportName]}`)); return transform_xml_xslt(xml_content,xsltString); } else { // report does not exist? } } catch(err) { //console.error(formattedData) console.error(err); } return ""; } function array2xml(topLevel, obj) { const js2xmlparser = require("js2xmlparser"); return js2xmlparser.parse(topLevel, obj) } module.exports = { getReportFileName, getReportRootFileName, transform_xml_xslt, format, array2xml }