UNPKG

ynab-csv-nordea-cli

Version:

Convert Nordea CSV files to YNAB compatible CSV files

100 lines (83 loc) 2.72 kB
const moment = require('moment'); moment().format(); var exports = module.exports = {}; function getPayee(text) { var textArr = text.replace(/Den \d{2}\.\d{2}/, '').split(/\s{2,}/); var firstPart = textArr[0]; // Mobile pay transaction if(/MobilePay/.test(firstPart)) { var to = firstPart.split(': '); return to.length == 2 ? "Mobilepay : " + to[1] : ("Mobilepay" + (firstPart.includes("Edankort") ? " : Butik" : "")); } // Dankort buy if(/^Dankort-nota/.test(firstPart)) { var payee = firstPart.replace("Dankort-nota ", ""); return payee; } // Visa buy if(/^Visa køb/.test(firstPart)) { var amount = textArr[1]; var payee = textArr[2] + " " + textArr[3]; return payee; } // Visa kontant hævning if(/^Visa udbetaling/.test(firstPart)) { return "Transfer : cash"; } // Transfer from other Nordea client if(/^Fra/.test(firstPart)) { return "you"; } // Gebyrer renter og andet if(/gebyr|afkast|Tilbageført|renter/i.test(firstPart) || /^Pris/i.test(firstPart)) { return "Nordea"; } // Betalingsservice if(/^Bs betaling/.test(firstPart)) { var account = firstPart.replace("Bs betaling ", "").replace("From ", ""); return "Transfer : " + account; } // Penge retur if(/^Visa modpostering/.test(firstPart)) { var payee = textArr[2]; return payee; } // Transfer to other account if(textArr.length === 1 || /^Bgs/.test(firstPart)) { var account = firstPart.replace("Bgs ", "").replace("From ", ""); return "Transfer : " + account; } if(/løn/i.test(firstPart)) { return "Employer"; } return ""; } function getDate(date, text) { var newDate = date; // See if we can find a more exact date if(/Den \d{2}\.\d{2}(.?)+/.test(text)) { var dateData = text.match(/Den (\d{2})\.(\d{2})/); var day = dateData[1]; var month = dateData[2]; newDate = day + "-" + month + "-" + date.substring(date.length-4); } return moment(newDate, ["DD-MM-YYYY"], 'da').format('YYYY/MM/DD') } exports.nordea = ({ Date, Text, Amount }) => { let date = getDate(Date, Text); let payee = getPayee(Text).trim(); let category = ""; let memo = ""; let amount = Amount.replace(',', '.'); let isOutflow = /-\d+/.test(amount); let outflow = isOutflow ? amount.replace('-', '') : ''; let inflow = !isOutflow ? amount : ''; return { Date: date, Payee: payee, Category: category, Memo: memo, Outflow: outflow, Inflow: inflow }; }