UNPKG

@accounter/server

Version:

38 lines 2.41 kB
const HEADER_REPORT_TYPE = 1; const HEADER_TAXABLE_DIFFERENT_RATE_SALES = '+00000000000'; const HEADER_TAXABLE_DIFFERENT_RATE_SALES_VAT = '+000000000'; const TRANSACTION_EXTRA_SPACE = '000000000'; const addLeadingZeros = (value = 0, length) => { const zeros = '0'.repeat(length); const stringNum = Math.abs(Math.round(value)).toString(); const final = (zeros + stringNum).slice(-length); return final; }; const numToSignedString = (value, length) => { const sign = value >= 0 ? '+' : '-'; const paddedNum = addLeadingZeros(value, length); return `${sign}${paddedNum}`; }; export const headerBuilder = (header) => { const { licensedDealerId, generationDate, reportMonth, taxableSalesAmount, taxableSalesVat, salesRecordCount, zeroValOrExemptSalesCount, otherInputsVat, equipmentInputsVat, inputsCount, totalVat, } = header; const taxableSalesAmountString = numToSignedString(taxableSalesAmount, 11); const taxableSalesVatString = numToSignedString(taxableSalesVat, 9); const salesRecordCountString = addLeadingZeros(salesRecordCount, 9); const zeroValOrExemptSalesCountString = numToSignedString(zeroValOrExemptSalesCount, 11); const otherInputsVatString = numToSignedString(otherInputsVat, 9); const equipmentInputsVatString = numToSignedString(equipmentInputsVat, 9); const inputsCountString = addLeadingZeros(inputsCount, 9); const totalVatString = numToSignedString(totalVat, 11); return `O${licensedDealerId}${reportMonth}${HEADER_REPORT_TYPE}${generationDate}${taxableSalesAmountString}${taxableSalesVatString}${HEADER_TAXABLE_DIFFERENT_RATE_SALES}${HEADER_TAXABLE_DIFFERENT_RATE_SALES_VAT}${salesRecordCountString}${zeroValOrExemptSalesCountString}${otherInputsVatString}${equipmentInputsVatString}${inputsCountString}${totalVatString}`; }; export const transactionBuilder = (transaction) => { const { entryType, vatId, invoiceDate, refGroup, refNumber, totalVat, invoiceSum } = transaction; const entryTypeLetter = entryType.valueOf()[0]; const totalVatString = addLeadingZeros(totalVat, 9); const invoiceSumString = numToSignedString(invoiceSum, 10); return `\n${entryTypeLetter}${vatId}${invoiceDate}${refGroup}${refNumber}${totalVatString}${invoiceSumString}${TRANSACTION_EXTRA_SPACE}`; }; export const footerBuilder = (header) => { return `\nX${header.licensedDealerId}`; }; //# sourceMappingURL=builders.js.map