@tasenor/common-plugins 1.16.2 → 1.16.4
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.
- package/.turbo/turbo-audit.log +24 -0
- package/.turbo/turbo-build.log +5 -4
- package/.turbo/turbo-ci.log +22 -8
- package/.turbo/turbo-fix.log +18 -0
- package/.turbo/turbo-lint.log +5 -0
- package/.turbo/turbo-nightly.log +13 -0
- package/.turbo/turbo-nightly3.log +12 -0
- package/.turbo/turbo-release.log +8 -0
- package/.turbo/turbo-show-version.log +6 -0
- package/data/FinnishBalanceSheetReportSociety.mjs +10 -0
- package/data/FinnishSociety.mjs +6 -0
- package/data/src/FinnishBalanceSheetReportSociety - balance-sheet-society-detailed-fi.tsv +146 -0
- package/data/src/FinnishBalanceSheetReportSociety - balance-sheet-society-fi.tsv +70 -0
- package/data/src/FinnishBalanceSheetReportSociety - tilitin convert.tsv +145 -0
- package/data/src/FinnishSociety - fi-EUR.tsv +215 -0
- package/dist/CoinbaseImport/backend/CoinbaseHandler.js +37 -3
- package/dist/CoinbaseImport/backend/CoinbaseHandler.js.map +1 -1
- package/dist/CoinbaseImport/backend/index.js +2 -2
- package/dist/FinnishBalanceSheetReportSociety/backend/index.d.ts +19 -0
- package/dist/FinnishBalanceSheetReportSociety/backend/index.js +111 -0
- package/dist/FinnishBalanceSheetReportSociety/backend/index.js.map +1 -0
- package/dist/FinnishSociety/backend/index.d.ts +10 -0
- package/dist/FinnishSociety/backend/index.js +38 -0
- package/dist/FinnishSociety/backend/index.js.map +1 -0
- package/dist/FinnishSociety/ui/index.d.ts +16 -0
- package/dist/FinnishSociety/ui/index.js +24 -0
- package/dist/FinnishSociety/ui/index.js.map +1 -0
- package/dist/TagEditor/ui/index.js +3 -3
- package/dist/TagEditor/ui/index.js.map +1 -1
- package/package.json +5 -5
- package/src/CoinbaseImport/backend/CoinbaseHandler.ts +36 -3
- package/src/CoinbaseImport/backend/index.ts +2 -2
- package/src/CoinbaseImport/backend/rules.json +35 -0
- package/src/FinnishBalanceSheetReportSociety/backend/balance-sheet-society-detailed-fi.tsv +146 -0
- package/src/FinnishBalanceSheetReportSociety/backend/balance-sheet-society-fi.tsv +70 -0
- package/src/FinnishBalanceSheetReportSociety/backend/index.ts +123 -0
- package/src/FinnishSociety/backend/fi-EUR.tsv +215 -0
- package/src/FinnishSociety/backend/index.ts +48 -0
- package/src/FinnishSociety/ui/index.tsx +28 -0
- package/src/TagEditor/ui/index.tsx +3 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# number / title text type code data
|
|
2
|
+
Vastaavaa
|
|
3
|
+
_Pysyvät vastaavat
|
|
4
|
+
__Aineettomat hyödykkeet
|
|
5
|
+
1011 Perustamismenot ASSET {}
|
|
6
|
+
1021 Tutkimusmenot ASSET {}
|
|
7
|
+
1031 Kehittämismenot ASSET {}
|
|
8
|
+
1041 Aineettomat oikeudet ASSET {}
|
|
9
|
+
1081 Muut pitkävaikutteiset menot ASSET {}
|
|
10
|
+
1091 Ennakkomaksut ASSET {}
|
|
11
|
+
__Aineelliset hyödykkeet
|
|
12
|
+
1111 Maa- ja vesialueet ASSET {}
|
|
13
|
+
1121 Maanvuokraoikeudet ASSET {}
|
|
14
|
+
1151 Rakennukset ja rakennelmat ASSET {}
|
|
15
|
+
1171 Rakennusten vuokraoikeudet ASSET {}
|
|
16
|
+
1211 Koneet ja kalusto ASSET {}
|
|
17
|
+
1311 Muut aineelliset hyödykkeet (poistokelpoiset) ASSET {}
|
|
18
|
+
1351 Ennakkomaksut ja keskeneräiset hankinnat ASSET {}
|
|
19
|
+
__Sijoitukset
|
|
20
|
+
1411 Osuudet ja osakkeet ASSET {}
|
|
21
|
+
1451 Muut sijoitukset ASSET {}
|
|
22
|
+
_Vaihtuvat vastaavat
|
|
23
|
+
__Vaihto-omaisuus
|
|
24
|
+
1511 Aineet ja tarvikkeet ASSET {}
|
|
25
|
+
1521 Keskeneräiset tuotteet ASSET {}
|
|
26
|
+
1531 Valmiit tuotteet ASSET {}
|
|
27
|
+
1541 Tavarat ASSET {}
|
|
28
|
+
1551 Muu vaihto-omaisuus ASSET {}
|
|
29
|
+
1561 Ennakkomaksut ASSET {}
|
|
30
|
+
__Pitkäaikaiset saamiset
|
|
31
|
+
1611 Myyntisaamiset (pitkäaikaiset) ASSET {}
|
|
32
|
+
1641 Lainasaamiset (pitkäaikaiset) ASSET {}
|
|
33
|
+
1651 Muut saamiset (pitkäaikaiset) ASSET {}
|
|
34
|
+
1661 Maksamattomat osakkeet/osuudet (pitkäaikaiset) ASSET {}
|
|
35
|
+
1671 Siirtosaamiset (pitkäaikaiset) ASSET {}
|
|
36
|
+
1681 Laskennalliset verosaamiset (pitkäaikaiset) ASSET {}
|
|
37
|
+
__Lyhytaikaiset saamiset
|
|
38
|
+
1711 Myyntisaamiset ASSET {}
|
|
39
|
+
1761 Lainasaamiset ASSET {}
|
|
40
|
+
1771 Muut saamiset ASSET {}
|
|
41
|
+
1791 Maksamattomat osakkeet/osuudet ASSET {}
|
|
42
|
+
1811 Siirtosaamiset ASSET {}
|
|
43
|
+
1841 Laskennalliset verosaamiset ASSET {}
|
|
44
|
+
__Rahoitusarvopaperit
|
|
45
|
+
1851 Osakkeet ja osuudet ASSET {}
|
|
46
|
+
1881 Muut arvopaperit ASSET {}
|
|
47
|
+
__Rahat ja pankkisaamiset
|
|
48
|
+
1901 Käteisvarat ASSET {}
|
|
49
|
+
1911 Säästöpankki Optia ASSET {}
|
|
50
|
+
1912 Osuuspankki ASSET {}
|
|
51
|
+
Vastattavaa
|
|
52
|
+
_Oma pääoma
|
|
53
|
+
2011 Peruspääoma EQUITY {}
|
|
54
|
+
2251 Edellisten tilikausien ylijäämät PROFIT_PREV {}
|
|
55
|
+
_Tilinpäätössiirtojen kertymä
|
|
56
|
+
2411 Poistoero LIABILITY {}
|
|
57
|
+
2451 Vapaaehtoiset varaukset LIABILITY {}
|
|
58
|
+
_Pakolliset varaukset
|
|
59
|
+
2511 Eläkevaraukset LIABILITY {}
|
|
60
|
+
2521 Verovaraukset LIABILITY {}
|
|
61
|
+
2531 Muut pakolliset varaukset LIABILITY {}
|
|
62
|
+
_Vieras pääoma
|
|
63
|
+
__Pitkäaikainen vieras pääoma
|
|
64
|
+
2631 Lainat rahoituslaitoksilta (pitkäaikaiset) LIABILITY {}
|
|
65
|
+
2651 Eläkelainat (pitkäaikaiset) LIABILITY {}
|
|
66
|
+
2661 Saadut ennakot (pitkäaikaiset) LIABILITY {}
|
|
67
|
+
2671 Ostovelat (pitkäaikaiset) LIABILITY {}
|
|
68
|
+
2681 Rahoitusvekselit (pitkäaikaiset) LIABILITY {}
|
|
69
|
+
2731 Muut velat (pitkäaikaiset) LIABILITY {}
|
|
70
|
+
2751 Siirtovelat (pitkäaikaiset) LIABILITY {}
|
|
71
|
+
__Lyhytaikainen vieras pääoma
|
|
72
|
+
2831 Lainat rahoituslaitoksilta LIABILITY {}
|
|
73
|
+
2851 Eläkelainat LIABILITY {}
|
|
74
|
+
2861 Saadut ennakot LIABILITY {}
|
|
75
|
+
2871 Ostovelat LIABILITY {}
|
|
76
|
+
2891 Rahoitusvekselit LIABILITY {}
|
|
77
|
+
2931 Ennakonpidätys- ja sosiaaliturvamaksuvelka LIABILITY {}
|
|
78
|
+
2945 Arvonlisäverovelka LIABILITY {}
|
|
79
|
+
2959 Muut velat LIABILITY {}
|
|
80
|
+
2961 Siirtovelat LIABILITY {}
|
|
81
|
+
Tuloslaskelma
|
|
82
|
+
_Varsinaisen toiminnan tuotot
|
|
83
|
+
3001 Osallistumismaksut REVENUE {}
|
|
84
|
+
3101 Lahjoitukset REVENUE {}
|
|
85
|
+
3901 Muut varsinaisen toiminnan tuotot REVENUE {}
|
|
86
|
+
_Varsinaisen toiminnan kulut
|
|
87
|
+
__Henkilöstökulut
|
|
88
|
+
___Palkat ja palkkiot
|
|
89
|
+
4001 Palkat EXPENSE {}
|
|
90
|
+
4011 Lisät ja korvaukset EXPENSE {}
|
|
91
|
+
4021 Loma-ajan palkat EXPENSE {}
|
|
92
|
+
4031 Palkkiot EXPENSE {}
|
|
93
|
+
4041 Luontoisedut EXPENSE {}
|
|
94
|
+
4049 Luontoisetujen vastatili EXPENSE {}
|
|
95
|
+
4051 Saadut sairausvakuutuskorvaukset EXPENSE {}
|
|
96
|
+
4061 Saadut tapaturmavakuutuskorvaukset EXPENSE {}
|
|
97
|
+
___Henkilösivukulut
|
|
98
|
+
4101 Maksetut eläkkeet EXPENSE {}
|
|
99
|
+
4111 Pakolliset eläkevakuutusmaksut EXPENSE {}
|
|
100
|
+
4115 Vapaaehtoiset eläkevakuutusmaksut EXPENSE {}
|
|
101
|
+
4121 Sosiaaliturvamaksut EXPENSE {}
|
|
102
|
+
4131 Tapaturmavakuutusmaksut EXPENSE {}
|
|
103
|
+
4135 Ryhmähenkivakuutusmaksut EXPENSE {}
|
|
104
|
+
4141 Työttömyysvakuutusmaksut EXPENSE {}
|
|
105
|
+
4151 Muut henkilöstön vakuutusmaksut EXPENSE {}
|
|
106
|
+
__Muut kulut
|
|
107
|
+
___Toiminnan kulut
|
|
108
|
+
4201 Toiminnan kulut EXPENSE {}
|
|
109
|
+
4291 Muut toiminnan kulut EXPENSE {}
|
|
110
|
+
___Henkilökunnan kulut
|
|
111
|
+
4301 Henkilökunnan koulutus EXPENSE {}
|
|
112
|
+
4311 Virkistys- ja harrastustoiminta EXPENSE {}
|
|
113
|
+
4321 Työterveyshuolto EXPENSE {}
|
|
114
|
+
4331 Henkilökunnan ruokailu EXPENSE {}
|
|
115
|
+
4341 Työvaatteet ja suojavälineet EXPENSE {}
|
|
116
|
+
4391 Muut henkilökunnan kulut EXPENSE {}
|
|
117
|
+
___Toimitilakulut
|
|
118
|
+
4401 Toimitilavuokrat EXPENSE {}
|
|
119
|
+
4411 Sähkö EXPENSE {}
|
|
120
|
+
4413 Lämmitys EXPENSE {}
|
|
121
|
+
4415 Vesi ja jätevesi EXPENSE {}
|
|
122
|
+
4421 Rakennusten korjaus EXPENSE {}
|
|
123
|
+
4423 Ulkoalueiden huolto EXPENSE {}
|
|
124
|
+
4431 Siivous- ja puhtaanapito EXPENSE {}
|
|
125
|
+
4433 Jätehuolto EXPENSE {}
|
|
126
|
+
4441 Kiinteistövakuutukset EXPENSE {}
|
|
127
|
+
4451 Kiinteistövero EXPENSE {}
|
|
128
|
+
4461 Vartiointi- ja turvallisuuskulut EXPENSE {}
|
|
129
|
+
4491 Muut toimitilakulut EXPENSE {}
|
|
130
|
+
___Ajoneuvokulut
|
|
131
|
+
4501 Ajoneuvovuokrat EXPENSE {}
|
|
132
|
+
4511 Ajoneuvojen polttoaine EXPENSE {}
|
|
133
|
+
4521 Ajoneuvojen huolto ja korjaus EXPENSE {}
|
|
134
|
+
4531 Ajoneuvojen julkiset maksut EXPENSE {}
|
|
135
|
+
4541 Ajoneuvovakuutukset EXPENSE {}
|
|
136
|
+
4591 Muut ajoneuvokulut EXPENSE {}
|
|
137
|
+
___Kone- ja kalustokulut
|
|
138
|
+
4601 Kone- ja kalustohankinnat EXPENSE {}
|
|
139
|
+
4611 Kone- ja kalustovuokrat EXPENSE {}
|
|
140
|
+
4621 Koneiden ja kaluston korjaus EXPENSE {}
|
|
141
|
+
4631 Koneiden ja kaluston vakuutukset EXPENSE {}
|
|
142
|
+
4691 Muut kone- ja kalustokulut EXPENSE {}
|
|
143
|
+
___Matkakulut
|
|
144
|
+
4701 Matkaliput EXPENSE {}
|
|
145
|
+
4711 Taksikulut EXPENSE {}
|
|
146
|
+
4721 Majoituskulut EXPENSE {}
|
|
147
|
+
4731 Matkavakuutukset EXPENSE {}
|
|
148
|
+
4741 Kilometrikorvaukset EXPENSE {}
|
|
149
|
+
4751 Päivärahat EXPENSE {}
|
|
150
|
+
4761 Ateriakorvaukset EXPENSE {}
|
|
151
|
+
4791 Muut matkakulut EXPENSE {}
|
|
152
|
+
___Markkinointikulut
|
|
153
|
+
4801 Mainoskulut EXPENSE {}
|
|
154
|
+
4811 Messut ja näyttelyt EXPENSE {}
|
|
155
|
+
4821 Lahjoitukset EXPENSE {}
|
|
156
|
+
4841 Muut markkinointikulut EXPENSE {}
|
|
157
|
+
___Hallintopalvelut
|
|
158
|
+
4851 Taloushallintopalvelut EXPENSE {}
|
|
159
|
+
4861 Tilintarkastuspalvelut EXPENSE {}
|
|
160
|
+
4871 Laki- ja konsultointipalvelut EXPENSE {}
|
|
161
|
+
4891 Muut hallintopalvelut EXPENSE {}
|
|
162
|
+
___Muut hallintokulut
|
|
163
|
+
4901 Kirjat EXPENSE {}
|
|
164
|
+
4903 Lehdet EXPENSE {}
|
|
165
|
+
4911 Puhelinkulut EXPENSE {}
|
|
166
|
+
4913 Datasiirtokulut EXPENSE {}
|
|
167
|
+
4915 Postikulut EXPENSE {}
|
|
168
|
+
4921 Rahaliikenteen kulut EXPENSE {}
|
|
169
|
+
4931 Vastuuvakuutukset EXPENSE {}
|
|
170
|
+
4933 Esinevakuutukset EXPENSE {}
|
|
171
|
+
4935 Muut vakuutukset EXPENSE {}
|
|
172
|
+
4941 Toimistotarvikkeet EXPENSE {}
|
|
173
|
+
4951 Kokous- ja neuvottelukulut EXPENSE {}
|
|
174
|
+
4961 Edustuskulut EXPENSE {}
|
|
175
|
+
4971 Viranomaismaksut EXPENSE {}
|
|
176
|
+
4991 Muut hallintokulut EXPENSE {}
|
|
177
|
+
_Varainhankinta
|
|
178
|
+
__Varainhankinnan tuotot
|
|
179
|
+
5001 Jäsenmaksutulot REVENUE {}
|
|
180
|
+
5011 Kannatusmaksutulot REVENUE {}
|
|
181
|
+
5021 Mainostulot REVENUE {}
|
|
182
|
+
5031 Myyntitulot REVENUE {}
|
|
183
|
+
5041 Muut varainhankinnan tuotot REVENUE {}
|
|
184
|
+
__Varainhankinnan kulut
|
|
185
|
+
5051 Jäsenmaksukulut EXPENSE {}
|
|
186
|
+
5061 Ostot (myytävät tuotteet) EXPENSE {}
|
|
187
|
+
5071 Myyntikulut EXPENSE {}
|
|
188
|
+
5081 Muut varainhankinnan kulut EXPENSE {}
|
|
189
|
+
_Sijoitus- ja rahoitustoiminta
|
|
190
|
+
__Sijoitus- ja rahoitustoiminnan tuotot
|
|
191
|
+
6001 Osinkotuotot REVENUE {}
|
|
192
|
+
6005 Osakkeiden arvonnousut REVENUE {}
|
|
193
|
+
6011 Korkotuotot REVENUE {}
|
|
194
|
+
6021 Vuokratuotot REVENUE {}
|
|
195
|
+
6031 Muut sijoitustoiminnan tuotot REVENUE {}
|
|
196
|
+
__Sijoitus- ja rahoitustoiminnan kulut
|
|
197
|
+
6101 Korkokulut EXPENSE {}
|
|
198
|
+
6102 Pankin palvelumaksut EXPENSE {}
|
|
199
|
+
6111 Muut sijoitustoiminnan kulut EXPENSE {}
|
|
200
|
+
_Satunnaiset erät
|
|
201
|
+
__Satunnaiset tuotot
|
|
202
|
+
7001 Satunnaiset tuotot REVENUE {}
|
|
203
|
+
__Satunnaiset kulut
|
|
204
|
+
7101 Satunnaiset kulut EXPENSE {}
|
|
205
|
+
_Yleisavustukset
|
|
206
|
+
7501 Yleisavustukset REVENUE {}
|
|
207
|
+
_Poistot
|
|
208
|
+
8001 Poistot koneista ja kalustosta EXPENSE {}
|
|
209
|
+
8011 Poistot rakennuksista EXPENSE {}
|
|
210
|
+
_Tilinpäätössiirrot
|
|
211
|
+
9001 Poistoeron muutos EXPENSE {}
|
|
212
|
+
9011 Vapaaehtoisten varausten muutos EXPENSE {}
|
|
213
|
+
_Tuloverot ja muut välittömät verot
|
|
214
|
+
9501 Tuloverot EXPENSE {}
|
|
215
|
+
9511 Muut välittömät verot EXPENSE {}
|
|
@@ -41,12 +41,12 @@ export class CoinbaseHandler extends TransactionImportHandler {
|
|
|
41
41
|
if (file.firstLineMatch(/^$/) && file.secondLineMatch(/^Transactions$/)) {
|
|
42
42
|
const data = file.decode();
|
|
43
43
|
const lines = data.split('\n').splice(3);
|
|
44
|
-
if (!/^Timestamp,Transaction Type,Asset,Quantity Transacted,Spot Price Currency,Spot Price at Transaction,Subtotal,Total/.test(lines[0])) {
|
|
45
|
-
return 3;
|
|
46
|
-
}
|
|
47
44
|
if (!/^ID,Timestamp,Transaction Type,Asset,Quantity Transacted,Price Currency,Price at Transaction,Subtotal,Total (inclusive of fees and\/or spread),Fees and\/or Spread,Notes/.test(lines[0])) {
|
|
48
45
|
return 4;
|
|
49
46
|
}
|
|
47
|
+
if (!/^Timestamp,Transaction Type,Asset,Quantity Transacted,Spot Price Currency,Spot Price at Transaction,Subtotal,Total/.test(lines[0])) {
|
|
48
|
+
return 3;
|
|
49
|
+
}
|
|
50
50
|
throw new Error('Coinbase parser is not able to understand the column format.');
|
|
51
51
|
}
|
|
52
52
|
return 0;
|
|
@@ -98,6 +98,40 @@ export class CoinbaseHandler extends TransactionImportHandler {
|
|
|
98
98
|
columns.takeAsset = match[4];
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
if (this.version === 4) {
|
|
102
|
+
if (columns.type === 'Advanced Trade Buy') {
|
|
103
|
+
// 1 2 3 4 5 6 7 8
|
|
104
|
+
// Bought 0.33694052 ETH for 0.012835268969159 BTC on ETH-BTC at 0.03781 BTC/ETH
|
|
105
|
+
const match = /Bought ([0-9.]+) ([A-Z]+) for ([0-9.]+) ([A-Z]+) on ([A-Z]+)-([A-Z]+) at [0-9.]+ ([A-Z]+)\/([A-Z]+)/.exec(`${columns.Notes}`);
|
|
106
|
+
if (!match) {
|
|
107
|
+
throw new Error(`Unexpected format for notes: "${columns.Notes}".`);
|
|
108
|
+
}
|
|
109
|
+
if (match[2] !== match[5] || match[5] !== match[8] || match[4] !== match[6] || match[6] !== match[7]) {
|
|
110
|
+
throw new Error(`Coin tickers did not match as expected: "${columns.Notes}"`);
|
|
111
|
+
}
|
|
112
|
+
columns.type = 'Advanced Convert';
|
|
113
|
+
columns.takeAmount = parseFloat(match[1]);
|
|
114
|
+
columns.takeAsset = match[2];
|
|
115
|
+
columns.giveAmount = parseFloat(match[3]);
|
|
116
|
+
columns.giveAsset = match[4];
|
|
117
|
+
}
|
|
118
|
+
else if (columns.type === 'Advanced Trade Sell') {
|
|
119
|
+
// 1 2 3 4 5 6 7 8
|
|
120
|
+
// Sold 0.41459303 ETH for 0.0128917806326757 BTC on ETH-BTC at 0.03133 BTC/ETH
|
|
121
|
+
const match = /Sold ([0-9.]+) ([A-Z]+) for ([0-9.]+) ([A-Z]+) on ([A-Z]+)-([A-Z]+) at [0-9.]+ ([A-Z]+)\/([A-Z]+)/.exec(`${columns.Notes}`);
|
|
122
|
+
if (!match) {
|
|
123
|
+
throw new Error(`Unexpected format for notes: "${columns.Notes}".`);
|
|
124
|
+
}
|
|
125
|
+
if (match[2] !== match[5] || match[5] !== match[8] || match[4] !== match[6] || match[6] !== match[7]) {
|
|
126
|
+
throw new Error(`Coin tickers did not match as expected: "${columns.Notes}"`);
|
|
127
|
+
}
|
|
128
|
+
columns.type = 'Advanced Convert';
|
|
129
|
+
columns.giveAmount = parseFloat(match[1]);
|
|
130
|
+
columns.giveAsset = match[2];
|
|
131
|
+
columns.takeAmount = parseFloat(match[3]);
|
|
132
|
+
columns.takeAsset = match[4];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
101
135
|
return columns;
|
|
102
136
|
}
|
|
103
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinbaseHandler.js","sourceRoot":"","sources":["../../../src/CoinbaseImport/backend/CoinbaseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE5E;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,wBAAwB;IAE3D;QACE,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;YACtF,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,MAAM;YACjB,gBAAgB,EAAE,QAAQ;YAC1B,GAAG,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACnC,cAAc,EAAE;gBACd,KAAK;gBACL,qBAAqB,EAAE,MAAM;gBAC7B,KAAK;gBACL,kBAAkB,EAAE,MAAM;gBAC1B,qBAAqB,EAAE,UAAU;gBACjC,qBAAqB,EAAE,UAAU;gBACjC,2BAA2B,EAAE,OAAO;gBACpC,yCAAyC,EAAE,OAAO;gBAClD,oBAAoB,EAAE,MAAM;gBAC5B,KAAK;gBACL,sBAAsB,EAAE,OAAO;gBAC/B,gBAAgB,EAAE,UAAU;aAC7B;SACF,CAAA;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,SAA0B,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,IAAiB;QACzB,IAAI,IAAI,CAAC,cAAc,CAAC,0FAA0F,CAAC,EAAE,CAAC;YACpH,OAAO,CAAC,CAAA;QACV,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,CAAA;QACV,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACxC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"CoinbaseHandler.js","sourceRoot":"","sources":["../../../src/CoinbaseImport/backend/CoinbaseHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ class CoinbaseImportPlugin extends ImportPlugin {
|
|
|
5
5
|
super(new CoinbaseHandler());
|
|
6
6
|
this.code = 'CoinbaseImport';
|
|
7
7
|
this.title = 'Import for Coinbase';
|
|
8
|
-
this.version = '1.0.
|
|
8
|
+
this.version = '1.0.30';
|
|
9
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 = '
|
|
10
|
+
this.releaseDate = '2024-10-19';
|
|
11
11
|
this.use = 'backend';
|
|
12
12
|
this.type = 'import';
|
|
13
13
|
this.description = 'Import plugin for importing transaction data in CSV format provided by Coinbase crypto exchange.';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Language, ReportOptions } from '@tasenor/common';
|
|
2
|
+
import { ReportPlugin } from '@tasenor/common-node';
|
|
3
|
+
declare class FinnishBalanceSheetReportSociety extends ReportPlugin {
|
|
4
|
+
constructor();
|
|
5
|
+
forceOptions(): {
|
|
6
|
+
negateAssetAndProfit: boolean;
|
|
7
|
+
addPreviousPeriod: boolean;
|
|
8
|
+
};
|
|
9
|
+
getLanguages(): Language[];
|
|
10
|
+
getReportOptions(): ReportOptions;
|
|
11
|
+
columnTitle(id: any, period: any, options: any): string;
|
|
12
|
+
getColumns(id: any, entries: any, options: any): Promise<any>;
|
|
13
|
+
preProcess(id: any, entries: any, options: any, settings: any, columns: any): Promise<import("@tasenor/common").ReportLine[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Mark mismatching Vastaavaa and Vastattavaa with red.
|
|
16
|
+
*/
|
|
17
|
+
postProcess(id: any, data: any): Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
export default FinnishBalanceSheetReportSociety;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ReportPlugin } from '@tasenor/common-node';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import quarterOfYear from 'dayjs/plugin/quarterOfYear';
|
|
4
|
+
dayjs.extend(quarterOfYear);
|
|
5
|
+
class FinnishBalanceSheetReportSociety extends ReportPlugin {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('balance-sheet-society', 'balance-sheet-society-detailed');
|
|
8
|
+
this.schemes = new Set(['FinnishSociety']);
|
|
9
|
+
this.code = 'FinnishBalanceSheetReportSociety';
|
|
10
|
+
this.title = 'Balance Sheet Report (Finnish - Society)';
|
|
11
|
+
this.version = '1.0.0';
|
|
12
|
+
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>';
|
|
13
|
+
this.releaseDate = '2025-08-12';
|
|
14
|
+
this.use = 'backend';
|
|
15
|
+
this.type = 'report';
|
|
16
|
+
this.description = 'Balance sheet report for Finnish societies, i.e. rekisteröity yhdistys.';
|
|
17
|
+
this.languages = {
|
|
18
|
+
en: {
|
|
19
|
+
'report-balance-sheet-society-detailed': 'Detailed alance sheet',
|
|
20
|
+
'report-balance-sheet-society': 'Balance sheet'
|
|
21
|
+
},
|
|
22
|
+
fi: {
|
|
23
|
+
'report-balance-sheet-society-detailed': 'Tase tilierittelyin',
|
|
24
|
+
'report-balance-sheet-society': 'Tase'
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
forceOptions() {
|
|
29
|
+
return {
|
|
30
|
+
negateAssetAndProfit: true,
|
|
31
|
+
addPreviousPeriod: true
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
getLanguages() {
|
|
35
|
+
return ['fi'];
|
|
36
|
+
}
|
|
37
|
+
getReportOptions() {
|
|
38
|
+
return {
|
|
39
|
+
quarter1: 'radio:1',
|
|
40
|
+
quarter2: 'radio:1',
|
|
41
|
+
quarter3: 'radio:1',
|
|
42
|
+
full: 'radio:1:default'
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
columnTitle(id, period, options) {
|
|
46
|
+
if (options.quarter1) {
|
|
47
|
+
const year = dayjs(period.start_date).year();
|
|
48
|
+
return `{${dayjs(`${year}-04-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`;
|
|
49
|
+
}
|
|
50
|
+
else if (options.quarter2) {
|
|
51
|
+
const year = dayjs(period.start_date).year();
|
|
52
|
+
return `{${dayjs(`${year}-07-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`;
|
|
53
|
+
}
|
|
54
|
+
else if (options.quarter3) {
|
|
55
|
+
const year = dayjs(period.start_date).year();
|
|
56
|
+
return `{${dayjs(`${year}-10-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return `{${this.time2str(period.end_date)}}`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async getColumns(id, entries, options) {
|
|
63
|
+
const columns = options.periods.map((period) => {
|
|
64
|
+
return {
|
|
65
|
+
type: 'currency',
|
|
66
|
+
name: 'period' + period.id,
|
|
67
|
+
title: this.columnTitle(id, period, options)
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
columns.unshift({
|
|
71
|
+
name: 'title',
|
|
72
|
+
title: '',
|
|
73
|
+
type: 'name'
|
|
74
|
+
});
|
|
75
|
+
return columns;
|
|
76
|
+
}
|
|
77
|
+
async preProcess(id, entries, options, settings, columns) {
|
|
78
|
+
const columnNames = columns.map((col) => col.name);
|
|
79
|
+
// Summarize all totals from the entries.
|
|
80
|
+
const totals = {};
|
|
81
|
+
columnNames.forEach((column) => (totals[column] = {}));
|
|
82
|
+
const accountNames = {};
|
|
83
|
+
const accountNumbers = new Set();
|
|
84
|
+
entries.forEach((entry) => {
|
|
85
|
+
const column = 'period' + entry.periodId;
|
|
86
|
+
totals[column][entry.number] = totals[column][entry.number] || 0;
|
|
87
|
+
totals[column][entry.number] += entry.amount;
|
|
88
|
+
accountNames[entry.number] = entry.name;
|
|
89
|
+
accountNumbers.add(entry.number);
|
|
90
|
+
});
|
|
91
|
+
return this.parseAndCombineReport([...accountNumbers], accountNames, columns, options.format, totals);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Mark mismatching Vastaavaa and Vastattavaa with red.
|
|
95
|
+
*/
|
|
96
|
+
async postProcess(id, data) {
|
|
97
|
+
const liabilities = data.find(line => line.name === 'Vastattavaa yhteensä');
|
|
98
|
+
const assets = data.find(line => line.name === 'Vastaavaa yhteensä');
|
|
99
|
+
if (liabilities && assets) {
|
|
100
|
+
Object.values(liabilities.values).forEach((value, idx) => {
|
|
101
|
+
if (Object.values(assets.values)[idx] !== value) {
|
|
102
|
+
assets.error = true;
|
|
103
|
+
liabilities.error = true;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return data;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export default FinnishBalanceSheetReportSociety;
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/FinnishBalanceSheetReportSociety/backend/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,aAAa,MAAM,4BAA4B,CAAA;AACtD,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAE3B,MAAM,gCAAiC,SAAQ,YAAY;IACzD;QACE,KAAK,CAAC,uBAAmC,EAAE,gCAA4C,CAAC,CAAA;QAExF,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAE1C,IAAI,CAAC,IAAI,GAAG,kCAAgD,CAAA;QAC5D,IAAI,CAAC,KAAK,GAAG,0CAA0C,CAAA;QACvD,IAAI,CAAC,OAAO,GAAG,OAAkB,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,0nBAA0nB,CAAA;QACtoB,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,yEAAyE,CAAA;QAE5F,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE;gBACF,uCAAuC,EAAE,uBAAuB;gBAChE,8BAA8B,EAAE,eAAe;aAChD;YACD,EAAE,EAAE;gBACF,uCAAuC,EAAE,qBAAqB;gBAC9D,8BAA8B,EAAE,MAAM;aACvC;SACF,CAAA;IACH,CAAC;IAED,YAAY;QACV,OAAO;YACL,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAA;IACH,CAAC;IAED,YAAY;QACV,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,iBAAiB;SACxB,CAAA;IACH,CAAC;IAED,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO;QAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5C,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAA;QAC9E,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5C,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAA;QAC9E,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5C,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAA;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE;gBAC1B,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;aAC7C,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,OAAO,CAAC;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;QACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAElD,yCAAyC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,EAAE,CAAA;QACvB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiB,CAAA;QAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAA;YAC5C,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YACvC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAA;QACpE,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACvD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;oBAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;oBACnB,WAAW,CAAC,KAAK,GAAG,IAAI,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,eAAe,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SchemePlugin } from '@tasenor/common-node';
|
|
2
|
+
import { Currency, Language, TsvFilePath } from '@tasenor/common';
|
|
3
|
+
declare class FinnishSociety extends SchemePlugin {
|
|
4
|
+
constructor();
|
|
5
|
+
getSchemePaths(code: any): TsvFilePath[];
|
|
6
|
+
getSchemeDefaults(code: any): Record<string, unknown>;
|
|
7
|
+
supportedCurrencies(): Currency[];
|
|
8
|
+
supportedLanguages(): Language[];
|
|
9
|
+
}
|
|
10
|
+
export default FinnishSociety;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { SchemePlugin } from '@tasenor/common-node';
|
|
3
|
+
class FinnishSociety extends SchemePlugin {
|
|
4
|
+
constructor() {
|
|
5
|
+
super('FinnishSociety');
|
|
6
|
+
this.code = 'FinnishSociety';
|
|
7
|
+
this.title = 'Finnish Society';
|
|
8
|
+
this.version = '1.0.0';
|
|
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="M11.17 8l-.58-.59L9.17 6H4v12h16V8h-8z" opacity=".3"/><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l1.41 1.41.59.59H20v10z"/></svg>';
|
|
10
|
+
this.releaseDate = '2025-08-12';
|
|
11
|
+
this.use = 'both';
|
|
12
|
+
this.type = 'scheme';
|
|
13
|
+
this.description = 'Small accounting scheme for Finnish societies i.e. rekisteröity yhdistys.';
|
|
14
|
+
this.languages = {
|
|
15
|
+
fi: {}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
getSchemePaths(code) {
|
|
19
|
+
if (code === 'FinnishSociety') {
|
|
20
|
+
return [
|
|
21
|
+
path.join(__dirname, 'fi-EUR.tsv'),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
|
+
getSchemeDefaults(code) {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
supportedCurrencies() {
|
|
31
|
+
return ['EUR'];
|
|
32
|
+
}
|
|
33
|
+
supportedLanguages() {
|
|
34
|
+
return ['fi'];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export default FinnishSociety;
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/FinnishSociety/backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,cAAe,SAAQ,YAAY;IAEvC;QACE,KAAK,CAAC,gBAA8B,CAAC,CAAA;QAErC,IAAI,CAAC,IAAI,GAAG,gBAA8B,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAkB,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,gWAAgW,CAAA;QAC5W,IAAI,CAAC,WAAW,GAAG,YAAY,CAAA;QAC/B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,2EAA2E,CAAA;QAE9F,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE,EACH;SACF,CAAA;IACH,CAAC;IAED,cAAc,CAAC,IAAI;QACjB,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,OAAO;gBACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;aAClB,CAAA;QACpB,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,6DAA6D;IAC7D,iBAAiB,CAAC,IAAI;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;CACF;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SchemePlugin } from '@tasenor/common-ui';
|
|
2
|
+
declare class FinnishSociety extends SchemePlugin {
|
|
3
|
+
static code: string;
|
|
4
|
+
static title: string;
|
|
5
|
+
static version: string;
|
|
6
|
+
static icon: string;
|
|
7
|
+
static releaseDate: string;
|
|
8
|
+
static use: string;
|
|
9
|
+
static type: string;
|
|
10
|
+
static description: string;
|
|
11
|
+
constructor();
|
|
12
|
+
getAccountingSchemes(): {
|
|
13
|
+
FinnishSociety: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export default FinnishSociety;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SchemePlugin } from '@tasenor/common-ui';
|
|
2
|
+
class FinnishSociety extends SchemePlugin {
|
|
3
|
+
static code = 'FinnishSociety';
|
|
4
|
+
static title = 'Finnish Society';
|
|
5
|
+
static version = '1.0.0';
|
|
6
|
+
static 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="M11.17 8l-.58-.59L9.17 6H4v12h16V8h-8z" opacity=".3"/><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l1.41 1.41.59.59H20v10z"/></svg>';
|
|
7
|
+
static releaseDate = '2025-08-12';
|
|
8
|
+
static use = 'both';
|
|
9
|
+
static type = 'scheme';
|
|
10
|
+
static description = 'Small accounting scheme for Finnish societies i.e. rekisteröity yhdistys.';
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.languages = {
|
|
14
|
+
fi: {
|
|
15
|
+
FinnishSociety: 'Yhdistys'
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
getAccountingSchemes() {
|
|
20
|
+
return { FinnishSociety: 'Yhdistys' };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export default FinnishSociety;
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/FinnishSociety/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,cAAe,SAAQ,YAAY;IAEvC,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAA;IAChC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,IAAI,GAAG,gWAAgW,CAAA;IAC9W,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;IACtB,MAAM,CAAC,WAAW,GAAG,2EAA2E,CAAA;IAEhG;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE;gBACF,cAAc,EAAE,UAAU;aAC3B;SACF,CAAA;IACH,CAAC;IAED,oBAAoB;QAClB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAA;IACvC,CAAC;;AAGH,eAAe,cAAc,CAAA"}
|
|
@@ -125,11 +125,11 @@ const TagCard = observer((props) => {
|
|
|
125
125
|
React.createElement(Button, { size: "small", onClick: () => { setIsNew(true); setEdit(!edit); } },
|
|
126
126
|
React.createElement(Trans, null, "Add New"))),
|
|
127
127
|
edit && React.createElement(React.Fragment, null,
|
|
128
|
-
React.createElement(TextField, { autoFocus: true, onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), error: !!validateName(), label: validateName(), value: tagName, onChange: (ev) => { setTagName(ev.target.value); setChanged(true); }, onKeyUp: (ev) => onKeyUp(ev.key) }),
|
|
128
|
+
React.createElement(TextField, { autoFocus: true, autoComplete: "off", onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), error: !!validateName(), label: validateName(), value: tagName, onChange: (ev) => { setTagName(ev.target.value); setChanged(true); }, onKeyUp: (ev) => onKeyUp(ev.key) }),
|
|
129
129
|
React.createElement(IconButton, { title: t('Cancel'), onClick: onCancel, sx: { color: red[800] } },
|
|
130
130
|
React.createElement(Cancel, null)),
|
|
131
131
|
React.createElement("br", null),
|
|
132
|
-
React.createElement(TextField, { onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), value: tagTag, error: !!validateTag(), label: validateTag(), onChange: (ev) => { setTagTag(ev.target.value); setChanged(true); }, onKeyUp: (ev) => onKeyUp(ev.key) }),
|
|
132
|
+
React.createElement(TextField, { autoComplete: "off", onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), value: tagTag, error: !!validateTag(), label: validateTag(), onChange: (ev) => { setTagTag(ev.target.value); setChanged(true); }, onKeyUp: (ev) => onKeyUp(ev.key) }),
|
|
133
133
|
React.createElement(IconButton, { title: t('Save'), onClick: onSave, sx: { color: green[800] } },
|
|
134
134
|
React.createElement(CheckCircle, null)))),
|
|
135
135
|
edit &&
|
|
@@ -274,7 +274,7 @@ const TagsEditor = observer((props) => {
|
|
|
274
274
|
types.map((type, idx) => (React.createElement(Tab, { key: idx, label: type }))),
|
|
275
275
|
React.createElement(Tab, { key: -1, disableRipple: true, icon: types[tab] && React.createElement(Add, null), iconPosition: "start", label: types[tab]
|
|
276
276
|
? t('Add Tag Type')
|
|
277
|
-
: React.createElement(TextField, { autoFocus: true, onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), value: addingTab, onChange: ev => setAddingTab(ev.target.value), onKeyUp: (ev) => onKeyUp(ev.key) }) })),
|
|
277
|
+
: React.createElement(TextField, { autoFocus: true, autoComplete: "off", onFocus: () => cursor.disableHandler(), onBlur: () => cursor.enableHandler(), value: addingTab, onChange: ev => setAddingTab(ev.target.value), onKeyUp: (ev) => onKeyUp(ev.key) }) })),
|
|
278
278
|
types[tab] && (React.createElement(React.Fragment, null,
|
|
279
279
|
React.createElement(GroupPanel, { group: types[tab], tags: groups[types[tab]], existingTags: existingTags, onSave: tag => onSave(tag), onCreate: tag => onCreate(tag), onDelete: tag => onDelete(tag) }))),
|
|
280
280
|
types.length === 0 && (React.createElement(Typography, { variant: "h6", sx: { padding: 1 } },
|