@tasenor/common-plugins 1.9.32 → 1.9.34

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.
Files changed (132) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-ci.log +3 -7
  3. package/data/PluginIndex.mjs +27 -0
  4. package/dist/CoinAPI/backend/index.d.ts +22 -0
  5. package/dist/CoinAPI/backend/index.js +91 -0
  6. package/dist/CoinAPI/backend/index.js.map +1 -0
  7. package/dist/CoinbaseImport/backend/CoinbaseHandler.d.ts +12 -0
  8. package/dist/CoinbaseImport/backend/CoinbaseHandler.js +33 -0
  9. package/dist/CoinbaseImport/backend/CoinbaseHandler.js.map +1 -0
  10. package/dist/CoinbaseImport/backend/index.d.ts +5 -0
  11. package/dist/CoinbaseImport/backend/index.js +18 -0
  12. package/dist/CoinbaseImport/backend/index.js.map +1 -0
  13. package/dist/DocumentCleaner/ui/index.d.ts +43 -0
  14. package/dist/DocumentCleaner/ui/index.js +139 -0
  15. package/dist/DocumentCleaner/ui/index.js.map +1 -0
  16. package/dist/Euro/ui/index.d.ts +15 -0
  17. package/dist/Euro/ui/index.js +22 -0
  18. package/dist/Euro/ui/index.js.map +1 -0
  19. package/dist/Finnish/ui/finnish.json +341 -0
  20. package/dist/Finnish/ui/index.d.ts +17 -0
  21. package/dist/Finnish/ui/index.js +47 -0
  22. package/dist/Finnish/ui/index.js.map +1 -0
  23. package/dist/FinnishBalanceSheetReport/backend/index.d.ts +18 -0
  24. package/dist/FinnishBalanceSheetReport/backend/index.js +96 -0
  25. package/dist/FinnishBalanceSheetReport/backend/index.js.map +1 -0
  26. package/dist/FinnishBalanceSheetReportInvestment/backend/index.d.ts +18 -0
  27. package/dist/FinnishBalanceSheetReportInvestment/backend/index.js +96 -0
  28. package/dist/FinnishBalanceSheetReportInvestment/backend/index.js.map +1 -0
  29. package/dist/FinnishBalanceSheetReportLite/backend/index.d.ts +19 -0
  30. package/dist/FinnishBalanceSheetReportLite/backend/index.js +109 -0
  31. package/dist/FinnishBalanceSheetReportLite/backend/index.js.map +1 -0
  32. package/dist/FinnishIncomeStatementReport/backend/index.d.ts +26 -0
  33. package/dist/FinnishIncomeStatementReport/backend/index.js +190 -0
  34. package/dist/FinnishIncomeStatementReport/backend/index.js.map +1 -0
  35. package/dist/FinnishIncomeStatementReportInvestment/backend/index.d.ts +26 -0
  36. package/dist/FinnishIncomeStatementReportInvestment/backend/index.js +190 -0
  37. package/dist/FinnishIncomeStatementReportInvestment/backend/index.js.map +1 -0
  38. package/dist/FinnishIncomeStatementReportLite/backend/index.d.ts +26 -0
  39. package/dist/FinnishIncomeStatementReportLite/backend/index.js +188 -0
  40. package/dist/FinnishIncomeStatementReportLite/backend/index.js.map +1 -0
  41. package/dist/FinnishInvestmentCompany/backend/index.d.ts +10 -0
  42. package/dist/FinnishInvestmentCompany/backend/index.js +36 -0
  43. package/dist/FinnishInvestmentCompany/backend/index.js.map +1 -0
  44. package/dist/FinnishInvestmentCompany/ui/index.d.ts +16 -0
  45. package/dist/FinnishInvestmentCompany/ui/index.js +22 -0
  46. package/dist/FinnishInvestmentCompany/ui/index.js.map +1 -0
  47. package/dist/FinnishLimitedCompanyComplete/backend/index.d.ts +10 -0
  48. package/dist/FinnishLimitedCompanyComplete/backend/index.js +36 -0
  49. package/dist/FinnishLimitedCompanyComplete/backend/index.js.map +1 -0
  50. package/dist/FinnishLimitedCompanyComplete/ui/index.d.ts +16 -0
  51. package/dist/FinnishLimitedCompanyComplete/ui/index.js +22 -0
  52. package/dist/FinnishLimitedCompanyComplete/ui/index.js.map +1 -0
  53. package/dist/FinnishLimitedCompanyLite/backend/index.d.ts +10 -0
  54. package/dist/FinnishLimitedCompanyLite/backend/index.js +43 -0
  55. package/dist/FinnishLimitedCompanyLite/backend/index.js.map +1 -0
  56. package/dist/FinnishLimitedCompanyLite/ui/index.d.ts +16 -0
  57. package/dist/FinnishLimitedCompanyLite/ui/index.js +24 -0
  58. package/dist/FinnishLimitedCompanyLite/ui/index.js.map +1 -0
  59. package/dist/GitBackup/backend/index.d.ts +26 -0
  60. package/dist/GitBackup/backend/index.js +91 -0
  61. package/dist/GitBackup/backend/index.js.map +1 -0
  62. package/dist/GitBackup/ui/index.d.ts +44 -0
  63. package/dist/GitBackup/ui/index.js +114 -0
  64. package/dist/GitBackup/ui/index.js.map +1 -0
  65. package/dist/IncomeAndExpenses/backend/index.d.ts +5 -0
  66. package/dist/IncomeAndExpenses/backend/index.js +350 -0
  67. package/dist/IncomeAndExpenses/backend/index.js.map +1 -0
  68. package/dist/JournalReport/backend/index.d.ts +15 -0
  69. package/dist/JournalReport/backend/index.js +143 -0
  70. package/dist/JournalReport/backend/index.js.map +1 -0
  71. package/dist/KrakenImport/backend/KrakenHandler.d.ts +24 -0
  72. package/dist/KrakenImport/backend/KrakenHandler.js +86 -0
  73. package/dist/KrakenImport/backend/KrakenHandler.js.map +1 -0
  74. package/dist/KrakenImport/backend/index.d.ts +5 -0
  75. package/dist/KrakenImport/backend/index.js +18 -0
  76. package/dist/KrakenImport/backend/index.js.map +1 -0
  77. package/dist/LedgerReport/backend/index.d.ts +15 -0
  78. package/dist/LedgerReport/backend/index.js +150 -0
  79. package/dist/LedgerReport/backend/index.js.map +1 -0
  80. package/dist/LynxImport/backend/LynxHandler.d.ts +29 -0
  81. package/dist/LynxImport/backend/LynxHandler.js +343 -0
  82. package/dist/LynxImport/backend/LynxHandler.js.map +1 -0
  83. package/dist/LynxImport/backend/index.d.ts +5 -0
  84. package/dist/LynxImport/backend/index.js +18 -0
  85. package/dist/LynxImport/backend/index.js.map +1 -0
  86. package/dist/NordeaImport/backend/NordeaHandler.d.ts +12 -0
  87. package/dist/NordeaImport/backend/NordeaHandler.js +42 -0
  88. package/dist/NordeaImport/backend/NordeaHandler.js.map +1 -0
  89. package/dist/NordeaImport/backend/index.d.ts +5 -0
  90. package/dist/NordeaImport/backend/index.js +18 -0
  91. package/dist/NordeaImport/backend/index.js.map +1 -0
  92. package/dist/NordnetImport/backend/NordnetHandler.d.ts +18 -0
  93. package/dist/NordnetImport/backend/NordnetHandler.js +69 -0
  94. package/dist/NordnetImport/backend/NordnetHandler.js.map +1 -0
  95. package/dist/NordnetImport/backend/index.d.ts +5 -0
  96. package/dist/NordnetImport/backend/index.js +18 -0
  97. package/dist/NordnetImport/backend/index.js.map +1 -0
  98. package/dist/Rand/ui/index.d.ts +15 -0
  99. package/dist/Rand/ui/index.js +22 -0
  100. package/dist/Rand/ui/index.js.map +1 -0
  101. package/dist/RapidAPI/backend/index.d.ts +22 -0
  102. package/dist/RapidAPI/backend/index.js +119 -0
  103. package/dist/RapidAPI/backend/index.js.map +1 -0
  104. package/dist/TITOImport/backend/TITOHandler.d.ts +14 -0
  105. package/dist/TITOImport/backend/TITOHandler.js +244 -0
  106. package/dist/TITOImport/backend/TITOHandler.js.map +1 -0
  107. package/dist/TITOImport/backend/index.d.ts +5 -0
  108. package/dist/TITOImport/backend/index.js +18 -0
  109. package/dist/TITOImport/backend/index.js.map +1 -0
  110. package/dist/TagEditor/ui/index.d.ts +31 -0
  111. package/dist/TagEditor/ui/index.js +349 -0
  112. package/dist/TagEditor/ui/index.js.map +1 -0
  113. package/dist/USDollar/ui/index.d.ts +15 -0
  114. package/dist/USDollar/ui/index.js +22 -0
  115. package/dist/USDollar/ui/index.js.map +1 -0
  116. package/dist/VAT/ui/index.d.ts +69 -0
  117. package/dist/VAT/ui/index.js +509 -0
  118. package/dist/VAT/ui/index.js.map +1 -0
  119. package/dist/VATFinland/backend/index.d.ts +5 -0
  120. package/dist/VATFinland/backend/index.js +17 -0
  121. package/dist/VATFinland/backend/index.js.map +1 -0
  122. package/dist/index.d.ts +28 -0
  123. package/dist/index.js +29 -0
  124. package/dist/index.js.map +1 -0
  125. package/package.json +8 -5
  126. package/src/CoinbaseImport/backend/CoinbaseHandler.ts +5 -1
  127. package/src/KrakenImport/backend/KrakenHandler.ts +5 -1
  128. package/src/LynxImport/backend/LynxHandler.ts +5 -1
  129. package/src/NordeaImport/backend/NordeaHandler.ts +5 -1
  130. package/src/NordnetImport/backend/NordnetHandler.ts +5 -1
  131. package/src/TITOImport/backend/TITOHandler.ts +5 -1
  132. package/src/index.ts +28 -0
@@ -0,0 +1,86 @@
1
+ import { NO_SEGMENT } from '@tasenor/common';
2
+ import { NotImplemented, TransactionImportHandler } from '@tasenor/common-node';
3
+ /**
4
+ * Import implementation for Coinbase CSV format.
5
+ */
6
+ export class KrakenHandler extends TransactionImportHandler {
7
+ constructor() {
8
+ super('KrakenImport');
9
+ this.importOptions = {
10
+ parser: 'csv',
11
+ numericFields: ['amount', 'balance', 'fee'],
12
+ requiredFields: [],
13
+ textField: 'type',
14
+ totalAmountField: 'amount',
15
+ csv: { useFirstLineHeadings: true, columnSeparator: ',' }
16
+ };
17
+ }
18
+ get path() {
19
+ return __dirname;
20
+ }
21
+ canHandle(file) {
22
+ return file.firstLineMatch(/^"txid","refid","time","type","subtype","aclass","asset","amount","fee","balance"/) || file.firstLineMatch(/^"txid","refid","time","type","aclass","asset","amount","fee","balance"/);
23
+ }
24
+ time(line) {
25
+ return new Date(line.columns.time.replace(' ', 'T') + 'Z');
26
+ }
27
+ /**
28
+ * Convert Kraken specific assets to commonly used tickers.
29
+ * @param aclass
30
+ * @param asset
31
+ */
32
+ ticker(aclass, asset) {
33
+ if (aclass === undefined || asset === undefined)
34
+ return undefined;
35
+ if (aclass !== 'currency') {
36
+ throw new NotImplemented(`Kraken handler does not recognize asset class '${aclass}'.`);
37
+ }
38
+ if (asset.startsWith('Z')) {
39
+ return asset.substring(1);
40
+ }
41
+ const map = {
42
+ BCH: 'BCH',
43
+ EOS: 'EOS',
44
+ SOL: 'SOL',
45
+ XETH: 'ETH',
46
+ XLTC: 'LTC',
47
+ XMLN: 'MLN',
48
+ XTZ: 'XTZ',
49
+ XXBT: 'BTC',
50
+ XXLM: 'XLM',
51
+ XXRP: 'XRP',
52
+ XZEC: 'ZEC',
53
+ };
54
+ if (map[asset]) {
55
+ return map[asset];
56
+ }
57
+ throw new NotImplemented(`Kraken handler does not recognize asset '${asset}'.`);
58
+ }
59
+ /**
60
+ * Use transaction IDs for segment ID.
61
+ * @param line
62
+ * @returns
63
+ */
64
+ segmentId(line) {
65
+ if (line.columns && line.columns.txid) {
66
+ return line.columns.refid || NO_SEGMENT;
67
+ }
68
+ return NO_SEGMENT;
69
+ }
70
+ async segmentation(process, state) {
71
+ const segmented = await super.segmentation(process, state, process.files);
72
+ for (const fileName of Object.keys(segmented.files)) {
73
+ const file = segmented.files[fileName];
74
+ for (let n = 0; n < file.lines.length; n++) {
75
+ const { aclass, asset } = file.lines[n].columns;
76
+ // Get the standard ticker.
77
+ const ticker = this.ticker(aclass, asset);
78
+ if (ticker) {
79
+ file.lines[n].columns.ticker = ticker;
80
+ }
81
+ }
82
+ }
83
+ return segmented;
84
+ }
85
+ }
86
+ //# sourceMappingURL=KrakenHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KrakenHandler.js","sourceRoot":"","sources":["../../../src/KrakenImport/backend/KrakenHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,UAAU,EAA2B,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,cAAc,EAAwB,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAErG;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,wBAAwB;IAEzD;QACE,KAAK,CAAC,cAAc,CAAC,CAAA;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC;YAC3C,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,MAAM;YACjB,gBAAgB,EAAE,QAAQ;YAC1B,GAAG,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE;SAC1D,CAAA;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,SAA0B,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,IAAiB;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,mFAAmF,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,yEAAyE,CAAC,CAAA;IACnN,CAAC;IAED,IAAI,CAAC,IAAkB;QACrB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAc,EAAE,KAAa;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACjE,IAAI,MAAM,KAAK,UAAU,EAAE;YACzB,MAAM,IAAI,cAAc,CAAC,kDAAkD,MAAM,IAAI,CAAC,CAAA;SACvF;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;SAC1B;QACD,MAAM,GAAG,GAAG;YACV,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;SACZ,CAAA;QACD,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE;YACd,OAAO,GAAG,CAAC,KAAK,CAAC,CAAA;SAClB;QACD,MAAM,IAAI,cAAc,CAAC,4CAA4C,KAAK,IAAI,CAAC,CAAA;IACjF,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAkB;QAC1B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAA;SACxC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAgB,EAAE,KAAiC;QACpE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACzE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACnD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC/C,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBACzC,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;iBACtC;aACF;SACF;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { ImportPlugin } from '@tasenor/common-node';
2
+ declare class KrakenImportPlugin extends ImportPlugin {
3
+ constructor();
4
+ }
5
+ export default KrakenImportPlugin;
@@ -0,0 +1,18 @@
1
+ import { ImportPlugin } from '@tasenor/common-node';
2
+ import { KrakenHandler } from './KrakenHandler';
3
+ class KrakenImportPlugin extends ImportPlugin {
4
+ constructor() {
5
+ super(new KrakenHandler());
6
+ this.code = 'KrakenImport';
7
+ this.title = 'Import for Kraken';
8
+ this.version = '1.0.38';
9
+ this.icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M5 6.99h3V14h2V6.99h3L9 3zM14 10v7.01h-3L15 21l4-3.99h-3V10z"/></svg>';
10
+ this.releaseDate = '2022-11-06';
11
+ this.use = 'backend';
12
+ this.type = 'import';
13
+ this.description = 'Import plugin for importing transaction data in CSV format provided by Kraken.';
14
+ this.languages = this.getLanguages();
15
+ }
16
+ }
17
+ export default KrakenImportPlugin;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/KrakenImport/backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,kBAAmB,SAAQ,YAAY;IAE3C;QACE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA;QAE1B,IAAI,CAAC,IAAI,GAAG,cAA4B,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,QAAmB,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,6NAA6N,CAAA;QACzO,IAAI,CAAC,WAAW,GAAG,YAAY,CAAA;QAC/B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,gFAAgF,CAAA;QAEnG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IACtC,CAAC;CAEF;AAED,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { ReportPlugin } from '@tasenor/common-node';
2
+ import { Language, ReportColumnDefinition, ReportFormat, ReportID, ReportItem, ReportOptions } from '@tasenor/common';
3
+ declare class LedgerReport extends ReportPlugin {
4
+ constructor();
5
+ forceOptions(): {
6
+ negateAssetAndProfit: boolean;
7
+ addPreviousPeriod: boolean;
8
+ };
9
+ getLanguages(): Language[];
10
+ getReportStructure(id: ReportID, lang: Language): ReportFormat | undefined;
11
+ getReportOptions(): ReportOptions;
12
+ getColumns(): Promise<ReportColumnDefinition[]>;
13
+ preProcess(id: any, entries: any, options: any): ReportItem[];
14
+ }
15
+ export default LedgerReport;
@@ -0,0 +1,150 @@
1
+ import { ReportPlugin } from '@tasenor/common-node';
2
+ class LedgerReport extends ReportPlugin {
3
+ constructor() {
4
+ super('general-ledger');
5
+ this.code = 'LedgerReport';
6
+ this.title = 'Ledger Report';
7
+ this.version = '1.0.13';
8
+ this.icon = '<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><path d="M0,0h24v24H0V0z" fill="none"/></g><g><g><path d="M14,5H5v14h14v-9h-5V5z M8,17c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S8.55,17,8,17z M8,13 c-0.55,0-1-0.45-1-1s0.45-1,1-1s1,0.45,1,1S8.55,13,8,13z M8,9C7.45,9,7,8.55,7,8s0.45-1,1-1s1,0.45,1,1S8.55,9,8,9z" opacity=".3"/><circle cx="8" cy="8" r="1"/><path d="M15,3H5C3.9,3,3.01,3.9,3.01,5L3,19c0,1.1,0.89,2,1.99,2H19c1.1,0,2-0.9,2-2V9L15,3z M19,19H5V5h9v5h5V19z"/><circle cx="8" cy="12" r="1"/><circle cx="8" cy="16" r="1"/></g></g></svg>';
9
+ this.releaseDate = '2022-03-05';
10
+ this.use = 'backend';
11
+ this.type = 'report';
12
+ this.description = 'General purpose ledger report listing all entries in each account. Each account has also running total for balance.';
13
+ this.languages = {
14
+ en: {
15
+ 'report-general-ledger': 'General Ledger'
16
+ },
17
+ fi: {
18
+ 'report-general-ledger': 'Pääkirja'
19
+ }
20
+ };
21
+ }
22
+ forceOptions() {
23
+ return {
24
+ negateAssetAndProfit: false,
25
+ addPreviousPeriod: false
26
+ };
27
+ }
28
+ getLanguages() {
29
+ return ['fi', 'en'];
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
32
+ getReportStructure(id, lang) {
33
+ return '';
34
+ }
35
+ getReportOptions() {
36
+ return {
37
+ compact: 'boolean:true'
38
+ };
39
+ }
40
+ async getColumns() {
41
+ return [{
42
+ type: 'id',
43
+ name: 'account',
44
+ title: '{column-account-number}'
45
+ }, {
46
+ type: 'name',
47
+ name: 'name',
48
+ title: '{column-name-or-date}'
49
+ }, {
50
+ type: 'numeric',
51
+ name: 'debit',
52
+ title: '{column-debit}'
53
+ }, {
54
+ type: 'numeric',
55
+ name: 'credit',
56
+ title: '{column-credit}'
57
+ }, {
58
+ type: 'numeric',
59
+ name: 'balance',
60
+ title: '{column-balance}'
61
+ }];
62
+ }
63
+ preProcess(id, entries, options) {
64
+ // Pre-process entries by their account number.
65
+ const accounts = {};
66
+ const accountNames = {};
67
+ entries.forEach((entry) => {
68
+ let data;
69
+ if (entry.number in accounts) {
70
+ data = accounts[entry.number];
71
+ }
72
+ else {
73
+ data = [];
74
+ }
75
+ data.push({
76
+ name: entry.name,
77
+ number: entry.number,
78
+ documentId: entry.documentId,
79
+ description: entry.description,
80
+ date: entry.date,
81
+ amounts: {
82
+ debit: entry.amount >= 0 ? entry.amount : null,
83
+ credit: entry.amount < 0 ? -entry.amount : null,
84
+ balance: null
85
+ }
86
+ });
87
+ accounts[entry.number] = data;
88
+ accountNames[entry.number] = entry.name;
89
+ });
90
+ const accountNumbers = Object.keys(accounts).sort();
91
+ const data = [];
92
+ accountNumbers.forEach((number) => {
93
+ const lines = accounts[number];
94
+ data.push({
95
+ tab: 0,
96
+ bold: true,
97
+ id: number,
98
+ name: accountNames[number]
99
+ });
100
+ let total = 0;
101
+ lines.forEach((line) => {
102
+ total += line.amounts.debit;
103
+ total -= line.amounts.credit;
104
+ line.amounts.balance = total;
105
+ if (options.compact) {
106
+ data.push({
107
+ tab: 0,
108
+ needLocalization: true,
109
+ id: `#${line.documentId}`,
110
+ name: `{${this.time2str(line.date)}} ${line.description.replace(/^(\[.+?\])+\s*/g, '')}`,
111
+ amounts: line.amounts
112
+ });
113
+ }
114
+ else {
115
+ data.push({
116
+ tab: 0,
117
+ needLocalization: true,
118
+ id: `#${line.documentId}`,
119
+ name: `{${this.time2str(line.date)}}`
120
+ });
121
+ data.push({
122
+ tab: 0,
123
+ useRemainingColumns: true,
124
+ italic: true,
125
+ name: `${line.description.replace(/^(\[.+?\])+\s*/g, '')}`
126
+ });
127
+ data.push({
128
+ tab: 0,
129
+ name: '',
130
+ amounts: line.amounts
131
+ });
132
+ }
133
+ });
134
+ data.push({
135
+ tab: 0,
136
+ name: '',
137
+ bold: true,
138
+ bigger: true,
139
+ amounts: {
140
+ debit: '',
141
+ credit: '',
142
+ balance: total
143
+ }
144
+ });
145
+ });
146
+ return data;
147
+ }
148
+ }
149
+ export default LedgerReport;
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/LedgerReport/backend/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ImportStateText, ProcessConfig, DirectoryPath } from '@tasenor/common';
2
+ import { Process, ProcessFile, TransactionImportHandler } from '@tasenor/common-node';
3
+ /**
4
+ * Import implementation for Lynx CSV format.
5
+ */
6
+ export declare class LynxHandler extends TransactionImportHandler {
7
+ constructor();
8
+ get path(): DirectoryPath;
9
+ canHandle(file: ProcessFile): boolean;
10
+ /**
11
+ * Special pre-processing for Lynx semi CSV-format. Collect headers and map content of interest to columns.
12
+ * @param state
13
+ * @returns
14
+ */
15
+ parse(state: ImportStateText<'initial'>, config: ProcessConfig): Promise<ImportStateText<'segmented'>>;
16
+ /**
17
+ * Resolve date string for column data extracted.
18
+ * @param columns
19
+ */
20
+ date(columns: Record<string, string>): string;
21
+ /**
22
+ * Pair dividends and witholding taxes. Other lines are kept as they are.
23
+ * @param process
24
+ * @param state
25
+ * @param files
26
+ * @returns
27
+ */
28
+ segmentation(process: Process, state: ImportStateText<'initial'>): Promise<ImportStateText<'segmented'>>;
29
+ }