@ashray.mehta/statement-converter 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,7 +3,9 @@ import { Transaction } from '../models/Transaction';
|
|
|
3
3
|
import { TransactionAdapter } from './TransactionAdapter';
|
|
4
4
|
export declare class ICICICreditCardAdapter extends TransactionAdapter {
|
|
5
5
|
convert(xlsxData: ArrayBuffer): Promise<Transaction[]>;
|
|
6
|
-
private
|
|
6
|
+
private parseMoment;
|
|
7
|
+
private findFirstRow;
|
|
8
|
+
private findLastRow;
|
|
7
9
|
private determineDebitOrCredit;
|
|
8
10
|
supports(bank: Bank): boolean;
|
|
9
11
|
}
|
|
@@ -64,21 +64,15 @@ class ICICICreditCardAdapter extends TransactionAdapter_1.TransactionAdapter {
|
|
|
64
64
|
const addressForReferenceNumber = (_e = XLSXUtil_1.XLSXUtil.findTextIgnoringWhitespace(sheet, "Reference Number")) !== null && _e !== void 0 ? _e : XLSXUtil_1.XLSXUtil.findTextIgnoringWhitespace(sheet, 'Sr.No.');
|
|
65
65
|
const addressForCreditOrDebit = XLSXUtil_1.XLSXUtil.findTextIgnoringWhitespace(sheet, "BillingAmountSign");
|
|
66
66
|
const range = XLSX.utils.decode_range(sheet['!ref']);
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
const startingRow = this.findStartingRow(sheet, range, addressForTransactionDate);
|
|
67
|
+
const lastRow = this.findLastRow(sheet, range, addressForTransactionDate);
|
|
68
|
+
const startingRow = this.findFirstRow(sheet, range, addressForTransactionDate);
|
|
70
69
|
const rows = [...Array(1 + lastRow - startingRow).keys()].map(v => startingRow + v);
|
|
71
70
|
return rows
|
|
72
71
|
.filter(row => {
|
|
73
72
|
// ICICI sometimes has account numbers in the Date field which serve as a separator between inflows and outflows.
|
|
74
73
|
// This filters those rows out.
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
74
|
+
const parsedDate = this.parseMoment(XLSXUtil_1.XLSXUtil.getCellValue(sheet, row, addressForTransactionDate.c));
|
|
75
|
+
return parsedDate.isValid();
|
|
82
76
|
})
|
|
83
77
|
.map(row => {
|
|
84
78
|
let isOutflow, amount;
|
|
@@ -93,7 +87,7 @@ class ICICICreditCardAdapter extends TransactionAdapter_1.TransactionAdapter {
|
|
|
93
87
|
isOutflow = result.isOutflow;
|
|
94
88
|
amount = result.amount;
|
|
95
89
|
}
|
|
96
|
-
const date =
|
|
90
|
+
const date = this.parseMoment(XLSXUtil_1.XLSXUtil.getCellValue(sheet, row, addressForTransactionDate.c)).toDate();
|
|
97
91
|
return {
|
|
98
92
|
Payee: XLSXUtil_1.XLSXUtil.getCellValue(sheet, row, addressForDetails.c),
|
|
99
93
|
Outflow: isOutflow ? amount : 0,
|
|
@@ -105,7 +99,10 @@ class ICICICreditCardAdapter extends TransactionAdapter_1.TransactionAdapter {
|
|
|
105
99
|
});
|
|
106
100
|
});
|
|
107
101
|
}
|
|
108
|
-
|
|
102
|
+
parseMoment(text) {
|
|
103
|
+
return (0, moment_1.default)(text, ['DD/MM/YYYY', 'DD-MMM-YY']);
|
|
104
|
+
}
|
|
105
|
+
findFirstRow(sheet, range, addressForTransactionDate) {
|
|
109
106
|
var current = addressForTransactionDate.r; // Right after this is where the data should start, but sometimes there are blank rows after the header.
|
|
110
107
|
for (var current = addressForTransactionDate.r + 1; current <= range.e.r; current++) {
|
|
111
108
|
if (!(0, lodash_es_1.isEmpty)(XLSXUtil_1.XLSXUtil.getCellValue(sheet, current, addressForTransactionDate.c))) {
|
|
@@ -114,6 +111,15 @@ class ICICICreditCardAdapter extends TransactionAdapter_1.TransactionAdapter {
|
|
|
114
111
|
}
|
|
115
112
|
return addressForTransactionDate.r;
|
|
116
113
|
}
|
|
114
|
+
findLastRow(sheet, range, addressForTransactionDate) {
|
|
115
|
+
for (var current = 0; current <= range.e.r; current++) {
|
|
116
|
+
const cellValue = XLSXUtil_1.XLSXUtil.getCellValue(sheet, current, addressForTransactionDate.c);
|
|
117
|
+
if (!!cellValue && cellValue.toString().includes("MESSAGE Details")) {
|
|
118
|
+
return current - 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return range.e.r;
|
|
122
|
+
}
|
|
117
123
|
determineDebitOrCredit(sheet, row, column) {
|
|
118
124
|
const cellValue = XLSXUtil_1.XLSXUtil.getCellValue(sheet, row, column);
|
|
119
125
|
// TODO - Replace parsing with Globalize
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ashray.mehta/statement-converter",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "Library to convert statements from frequently used banks to QIF.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"@types/lodash-es": "4.17.12",
|
|
35
35
|
"@types/mocha": "10.0.10",
|
|
36
36
|
"@types/moment": "2.13.0",
|
|
37
|
-
"@types/node": "25.
|
|
37
|
+
"@types/node": "25.6.0",
|
|
38
38
|
"@types/yargs": "17.0.35",
|
|
39
39
|
"chai": "6.2.2",
|
|
40
40
|
"mocha": "11.7.5",
|
|
41
41
|
"ts-node": "10.9.2",
|
|
42
42
|
"tsx": "4.21.0",
|
|
43
|
-
"typescript": "6.0.
|
|
43
|
+
"typescript": "6.0.3"
|
|
44
44
|
}
|
|
45
45
|
}
|