UNPKG

poster-prro-kit

Version:

Цей Kit призначений для роботи з PRRO, а саме для генерації XML документів для податкової, генерації фіскальних чеків для термопринтерів, генерації документів для PRRO в офлайн режимі, розрахунку податків та генераціі посилання на фіскальний чек в кабін

84 lines (71 loc) 2.26 kB
/* eslint-disable no-magic-numbers, no-control-regex */ import { table, getBorderCharacters } from "table"; import { pipe } from "../../../../helpers/functional.js"; /** * Data example: * [ * { * type: 'smartProperties', * lines: [ * { name: "Официан", value: "Сергей" }, * { name: "Цех", value: "Кухня" }, * { name: "Стіл №", value: "1 (Основний зал)" }, * { name: "Тип замовлення", value: "У закладі" }, * { name: "Комментарии", value: "", hide: true }, * ], * }, * ] * * Receipt example: * 'Официан Сергей ', * 'Цех Кухня ', * 'Стіл № 1 (Основний зал) ', * 'Тип замовлення У закладі ', */ const smartPropertiesFormatter = (chunk, config) => { const { lines } = chunk; const { width } = config; return table(prepareData(lines), propConfig(width)); }; const propConfig = (width) => ({ columns: [ { alignment: "left", width: Math.floor(width * 0.4), wrapWord: true, }, { alignment: "left", width: Math.floor(width * 0.6), wrapWord: true, }, ], border: getBorderCharacters("void"), columnDefault: { paddingLeft: 0, paddingRight: 0, }, drawHorizontalLine: () => false, }); const filterByHideField = (line) => !line.hide; const filterHidden = (data) => data.filter(filterByHideField); const RE_ASCII_CONTROL_CHARS = /[\x00-\x1F]+/g; const RE_UNICODE_CONTROL_CHARS = /[\u0001-\u001A]+/g; const replaceNonPrintableSymbolForValue = (line) => { if (typeof line.value === "string") { line.value .replace(RE_ASCII_CONTROL_CHARS, " ") .replace(RE_UNICODE_CONTROL_CHARS, " "); } return line; }; const replaceNonPrintableSymbol = (data) => data.map(replaceNonPrintableSymbolForValue); const prepareTableRow = (line) => [line.name, line.value]; const prepareTableData = (data) => data.map(prepareTableRow); const prepareData = pipe( filterHidden, replaceNonPrintableSymbol, prepareTableData, ); export default smartPropertiesFormatter;