26 lines
1.8 KiB
JavaScript
26 lines
1.8 KiB
JavaScript
import fs from 'node:fs';
|
|
import assert from 'node:assert/strict';
|
|
import { annualBook, annualCurrent, calculateAnnual, annualHtml, annualReportRows } from '../resources/js/lib/irpc-annual-settlement.ts';
|
|
import { createProjectDossierReport } from '../resources/js/lib/project-dossier-report.ts';
|
|
const out = new URL('../outputs/irpc-national-fraction-20261110/', import.meta.url);
|
|
const cases = [];
|
|
for (const name of ['ordinary', 'exact', 'missing']) {
|
|
const d = JSON.parse(fs.readFileSync(new URL('recovered-' + name + '.json', out), 'utf8'));
|
|
const b = annualBook(d), m = b.result.model, fresh = calculateAnnual(d, b);
|
|
assert.equal(annualCurrent(d, b), true);
|
|
assert.deepEqual(fresh.internationalCredit, m.internationalCredit);
|
|
assert.deepEqual(fresh.arithmeticBalance, m.arithmeticBalance);
|
|
const html = annualHtml(d);
|
|
const rows = annualReportRows(d);
|
|
const dossier = createProjectDossierReport(d, { selectedSections: new Set(['finance']), generatedAt: '2026-11-10T13:00:00+02:00' });
|
|
if (name !== 'missing') {
|
|
assert.match(html, /derivação L6/);
|
|
assert.match(JSON.stringify(dossier), /IRPC-national-fraction\/1/);
|
|
} else assert.equal(m.arithmeticBalance, null);
|
|
fs.writeFileSync(new URL('report-' + name + '.html', out), html);
|
|
fs.writeFileSync(new URL('dossier-' + name + '.json', out), JSON.stringify(dossier));
|
|
cases.push({ name, status: m.status, nationalLimit: m.internationalCredit.positions[0].nationalLimit, balance: m.arithmeticBalance, apiRecovered: true, current: true, html: true, dossier: true, reportRows: rows.length });
|
|
}
|
|
fs.writeFileSync(new URL('recovered-reports.json', out), JSON.stringify({ synthetic: true, activeDatabaseChanged: false, cases }, null, 2));
|
|
console.log(JSON.stringify(cases));
|