Support multiple months in experimental ofx parser (#1921)

* Support multiple months in experimental ofx parser

* Release notes

* Fix lint error
This commit is contained in:
Joel Jeremy Marquez
2023-11-20 12:44:28 -08:00
committed by GitHub
parent a10b10a87b
commit f58fae8d16
2 changed files with 39 additions and 32 deletions

View File

@@ -44,48 +44,49 @@ function getStmtTrn(data) {
}
function getBankStmtTrn(ofx) {
const msg = ofx?.['BANKMSGSRSV1'];
const stmtTrnRs = msg?.['STMTTRNRS'];
const stmtRs = stmtTrnRs?.['STMTRS'];
const tranList = stmtRs?.['BANKTRANLIST'];
// Could be an array or a single object.
// Somes values could be an array or a single object.
// xml2js serializes single item to an object and multiple to an array.
const stmtTrn = tranList?.['STMTTRN'];
if (!Array.isArray(stmtTrn)) {
return [stmtTrn];
}
return stmtTrn;
const msg = ofx?.['BANKMSGSRSV1'];
const stmtTrnRs = getAsArray(msg?.['STMTTRNRS']);
const result = stmtTrnRs.flatMap(s => {
const stmtRs = s?.['STMTRS'];
const tranList = stmtRs?.['BANKTRANLIST'];
const stmtTrn = tranList?.['STMTTRN'];
return getAsArray(stmtTrn);
});
return result;
}
function getCcStmtTrn(ofx) {
const msg = ofx?.['CREDITCARDMSGSRSV1'];
const stmtTrnRs = msg?.['CCSTMTTRNRS'];
const stmtRs = stmtTrnRs?.['CCSTMTRS'];
const tranList = stmtRs?.['BANKTRANLIST'];
// Could be an array or a single object.
// Some values could be an array or a single object.
// xml2js serializes single item to an object and multiple to an array.
const stmtTrn = tranList?.['STMTTRN'];
if (!Array.isArray(stmtTrn)) {
return [stmtTrn];
}
return stmtTrn;
const msg = ofx?.['CREDITCARDMSGSRSV1'];
const stmtTrnRs = getAsArray(msg?.['CCSTMTTRNRS']);
const result = stmtTrnRs.flatMap(s => {
const stmtRs = s?.['CCSTMTRS'];
const tranList = stmtRs?.['BANKTRANLIST'];
const stmtTrn = tranList?.['STMTTRN'];
return getAsArray(stmtTrn);
});
return result;
}
function getInvStmtTrn(ofx) {
const msg = ofx?.['INVSTMTMSGSRSV1'];
const stmtTrnRs = msg?.['INVSTMTTRNRS'];
const stmtRs = stmtTrnRs?.['INVSTMTRS'];
const tranList = stmtRs?.['INVTRANLIST'];
// Could be an array or a single object.
// Somes values could be an array or a single object.
// xml2js serializes single item to an object and multiple to an array.
const stmtTrn = tranList?.['INVBANKTRAN']?.flatMap(t => t?.['STMTTRN']);
const msg = ofx?.['INVSTMTMSGSRSV1'];
const stmtTrnRs = getAsArray(msg?.['INVSTMTTRNRS']);
const result = stmtTrnRs.flatMap(s => {
const stmtRs = s?.['INVSTMTRS'];
const tranList = stmtRs?.['INVTRANLIST'];
const stmtTrn = tranList?.['INVBANKTRAN']?.flatMap(t => t?.['STMTTRN']);
return getAsArray(stmtTrn);
});
return result;
}
if (!Array.isArray(stmtTrn)) {
return [stmtTrn];
}
return stmtTrn;
function getAsArray(value) {
return Array.isArray(value) ? value : [value];
}
function mapOfxTransaction(stmtTrn): OFXTransaction {

View File

@@ -0,0 +1,6 @@
---
category: Bugfix
authors: [joel-jeremy]
---
Experimental ofx parser: Support multiple months in ofx file