@accounter/shaam6111-generator
Version:
Fully typed application that generates, parses, and validates SHAAM 6111 tax reports.
40 lines (39 loc) • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateHeaderRecord = generateHeaderRecord;
const generation_utils_js_1 = require("../utils/generation-utils.js");
/**
* Generates a fixed-width formatted string for a HeaderRecord.
* @param header The HeaderRecord to format.
* @returns A string formatted according to the SHAAM 6111 specification.
*/
function generateHeaderRecord(header) {
return ((0, generation_utils_js_1.padOrTrim)(header.taxFileNumber, 9) +
(0, generation_utils_js_1.padOrTrim)(header.taxYear, 4) +
(0, generation_utils_js_1.padOrTrim)(header.idNumber, 9) +
(0, generation_utils_js_1.padOrTrim)(header.vatFileNumber ?? '', 9) +
(0, generation_utils_js_1.padOrTrim)(header.withholdingTaxFileNumber ?? '', 9) +
(0, generation_utils_js_1.padOrTrim)(header.industryCode, 4) +
(0, generation_utils_js_1.padOrTrim)(header.businessDescription ?? '', 50, ' ', false) +
(0, generation_utils_js_1.padOrTrim)(header.businessType.toString(), 2, '0') +
(0, generation_utils_js_1.padOrTrim)(header.reportingMethod.toString(), 2, '0') +
(0, generation_utils_js_1.padOrTrim)(header.accountingMethod.toString(), 2, '0') +
(0, generation_utils_js_1.padOrTrim)(header.accountingSystem.toString(), 2, '0') +
(0, generation_utils_js_1.padOrTrim)(header.isPartnership?.toString() ?? '', 1) +
(0, generation_utils_js_1.padOrTrim)(header.includesProfitLoss.toString(), 1) +
(0, generation_utils_js_1.padOrTrim)(header.includesTaxAdjustment.toString(), 1) +
(0, generation_utils_js_1.padOrTrim)(header.includesBalanceSheet.toString(), 1) +
(0, generation_utils_js_1.padOrTrim)(header.profitLossEntryCount?.toString() ?? '', 3) +
(0, generation_utils_js_1.padOrTrim)(header.taxAdjustmentEntryCount?.toString() ?? '', 3) +
(0, generation_utils_js_1.padOrTrim)(header.balanceSheetEntryCount?.toString() ?? '', 3) +
(0, generation_utils_js_1.padOrTrim)(header.ifrsImplementationYear ?? '9999', 4) +
(0, generation_utils_js_1.padOrTrim)(header.ifrsReportingOption?.toString() ?? '', 1) +
(0, generation_utils_js_1.padOrTrim)(header.softwareRegistrationNumber ?? '99999999', 8) +
(0, generation_utils_js_1.padOrTrim)(header.partnershipCount?.toString() ?? '999', 3) +
(0, generation_utils_js_1.padOrTrim)(header.partnershipProfitShare == null
? '999999'
: header.partnershipProfitShare.toFixed().replace('.', ''), 6) +
(0, generation_utils_js_1.padOrTrim)(header.currencyType.toString(), 2) +
(0, generation_utils_js_1.padOrTrim)(header.auditOpinionType?.toString() ?? '', 2) +
(0, generation_utils_js_1.padOrTrim)(header.amountsInThousands.toString(), 1));
}