UNPKG

@angro/nav-connector

Version:

Node.js module which provides an interface for communicating with NAV online invoice service.

59 lines (50 loc) 2.26 kB
const { readFileSync } = require('fs'); const baseAnnulmentXml = readFileSync('./test/lib/invoice-annulment.xml'); /** * Create the given number of annulment operations. * @param {Array<Object>} operations Array of annulment operations to create * @param {string} operations.annulmentReference Reference number of the invoice or modification document subject to technical annulment * @param {boolean} [operations.annulmentTimestamp=DATE] UTC timestamp of the technical annulment in the source system [OPTIONAL] * @param {number} [operations.annulmentCode=ERRATIC_DATA] Technical annulment code. one of ERRATIC_DATA, ERRATIC_INVOICE_NUMBER, ERRATIC_INVOICE_ISSUE_DATE [OPTIONAL] * @param {number} [operations.annulmentReason=create szamla annul] Reason for the technical annulment [OPTIONAL] * @returns {Array} annulmentOperation */ module.exports = function createAnnulmentOperations(operations) { const annulmentOperation = []; const defaultData = { annulmentTimestamp: new Date().toISOString(), annulmentCode: 'ERRATIC_DATA', annulmentReason: 'create szamla annul', }; operations.forEach((operation, index) => { let annulmentXml = baseAnnulmentXml; annulmentXml = annulmentXml .toString() .replace( '<annulmentReference>22222222</annulmentReference>', `<annulmentReference>${operation.annulmentReference}</annulmentReference>` ) .replace( '<annulmentTimestamp>2018-06-18T09:10:45.309Z</annulmentTimestamp>', `<annulmentTimestamp>${operation.annulmentTimestamp || defaultData.annulmentTimestamp}</annulmentTimestamp>` ) .replace( '<annulmentCode>ERRATIC_DATA</annulmentCode>', `<annulmentCode>${operation.annulmentCode || defaultData.annulmentCode}</annulmentCode>` ) .replace( '<annulmentReason>create szamla annul</annulmentReason>', `<annulmentReason>${operation.annulmentReason || defaultData.annulmentReason}</annulmentReason>` ); const invoiceAnnulment = Buffer.from(annulmentXml).toString('base64'); annulmentOperation.push({ index: index + 1, annulmentOperation: 'ANNUL', invoiceAnnulment, }); }); return annulmentOperation; };