UNPKG

fio-api-handler

Version:
135 lines (106 loc) 3.4 kB
'use strict'; function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var _defineProperty = _interopDefault(require('@babel/runtime/helpers/defineProperty')); var luxon = require('luxon'); const PLATBA_KARTOU = 'Platba kartou'; class Transaction { // eslint-disable-next-line complexity,sonarjs/cognitive-complexity constructor(source) { _defineProperty(this, "data", void 0); _defineProperty(this, "source", void 0); this.source = source; const comment = source.column25 ? source.column25.value : null; const type = source.column8.value; const issueDate = luxon.DateTime.fromFormat(source.column0.value, 'yyyy-MM-ddZZZ'); const createdDate = type === PLATBA_KARTOU && comment ? luxon.DateTime.fromFormat(comment.split(/dne (\d*\.\d*\.\d{4})/g)[1], 'd.M.yyyy') : issueDate; const amount = source.column1.value; const currency = source.column14.value; const message = source.column16 ? source.column16.value : null; this.data = { issueDate, createdDate, type, comment, transactionId: source.column22.value, approvalId: source.column17.value, amount, originalAmount: amount, currency, originalCurrency: currency, message, vs: source.column5 ? source.column5.value : null, ks: source.column4 ? source.column4.value : null, ss: source.column6 ? source.column6.value : null, info: source.column7 ? source.column7.value : null, author: source.column9 ? source.column9.value : null, sendToAccountNumber: source.column2 ? source.column2.value : null, sendToAccountName: source.column10 ? source.column10.value : null, sendToBankCode: source.column3 ? source.column3.value : null, sendToBank: source.column12 ? source.column12.value : null }; if (type === PLATBA_KARTOU && message) { const [// eslint-disable-next-line no-unused-vars text, originalAmount, originalCurrency] = message.match(/částka {2}(\d*\.\d{2}) (([a-zA-Z]|\u010D){2,3})/); this.data.originalAmount = Number(originalAmount) * (amount / Math.abs(amount)); this.data.originalCurrency = originalCurrency === 'Kč' ? 'CZK' : originalCurrency; } } getIssueDate() { return this.data.issueDate; } getCreatedDate() { return this.data.createdDate; } getTransactionId() { return this.data.transactionId; } getApprovalId() { return this.data.approvalId; } getAmount() { return this.data.amount; } getCurrency() { return this.data.currency; } getOriginalAmount() { return this.data.originalAmount; } getOriginalCurrency() { return this.data.originalCurrency; } getCounterpartyAccountNumber() { return this.data.sendToAccountNumber; } getCounterpartyAccountName() { return this.data.sendToAccountName; } getCounterpartyBankName() { return this.data.sendToBank; } getCounterpartyBankNumber() { return this.data.sendToBankCode; } getVs() { return this.data.vs; } getKs() { return this.data.ks; } getSs() { return this.data.ss; } getInfo() { return this.data.info; } getMessage() { return this.data.message; } getAuthor() { return this.data.author; } getData() { return this.data; } } module.exports = Transaction;