@tasenor/common-plugins 1.17.10 → 1.17.12

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.
@@ -1,7 +1,13 @@
1
1
 
2
2
 
3
- > @tasenor/common-plugins@1.17.9 release /home/wigy/project/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
+ > @tasenor/common-plugins@1.17.11 release /home/wigy/project/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
4
4
  > pnpm version patch && pnpm publish --force --access public --no-git-checks
5
5
 
6
6
  npm warn Unknown env config "auto-install-peers". This will stop working in the next major version of npm.
7
- v1.17.10
7
+ v1.17.12
8
+  WARN  using --force I sure hope you know what you are doing
9
+ npm warn Unknown cli config "--git-checks". This will stop working in the next major version of npm.
10
+ npm warn Unknown env config "auto-install-peers". This will stop working in the next major version of npm.
11
+ npm warn Unknown project config "auto-install-peers". This will stop working in the next major version of npm.
12
+ npm warn using --force Recommended protections disabled.
13
+ ⠙⠹⠸⠼⠴⠦⠧ ELIFECYCLE  Command failed.
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env -S npx tsx
2
+ import commonNode from '@tasenor/common-node'
3
+ const { readFile, saveText, trimCRLF } = commonNode.dataUtils
4
+
5
+ let tsv = trimCRLF(readFile('EstonianBalanceSheetReport - balance-sheet-fi.tsv'))
6
+ saveText('FinnishBalanceSheetReport', 'balance-sheet-fi.tsv', tsv)
7
+
8
+ tsv = trimCRLF(readFile('FinnishBalanceSheetReport - balance-sheet-detailed-fi.tsv'))
9
+ saveText('FinnishBalanceSheetReport', 'balance-sheet-detailed-fi.tsv', tsv)
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env -S npx tsx
2
+ import commonNode from '@tasenor/common-node'
3
+ const { readFile, saveFile, trimCRLF } = commonNode.dataUtils
4
+
5
+ const tsv = trimCRLF(readFile('EstonianLimitedCompanyLite - fi-EUR.tsv'))
6
+ saveFile('EstonianLimitedCompanyLite', 'backend/fi-EUR.tsv', tsv)
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env -S npx tsx
2
+ import commonNode from '@tasenor/common-node'
3
+ const { trimId, readTsv, fixNumber, saveJson } = commonNode.dataUtils
4
+
5
+ const data = []
6
+ const tsv = readTsv('Estonia VAT - Definitions.tsv', true)
7
+
8
+ for (let column = 1; column < tsv[0].length; column++) {
9
+ const from = tsv[0][column]
10
+ const to = tsv[1][column] || null
11
+
12
+ const percentage = {}
13
+ for (let line = 2; line < tsv.length; line++) {
14
+ const id = trimId(tsv[line][0])
15
+ const value = tsv[line][column]
16
+ if (value !== undefined) {
17
+ percentage[id] = fixNumber(value.replace(',', '.'))
18
+ }
19
+ }
20
+ data.push({ from, to, percentage })
21
+ }
22
+
23
+ saveJson('VATEstonia', 'vat', data)
@@ -0,0 +1,9 @@
1
+ # Alkaa 2025-07-01
2
+ # Loppuu
3
+
4
+ INCOME 24.00%
5
+ EXPENSE 24.00%
6
+
7
+ ___ACCOMMODATION 13.00%
8
+ ___BOOK 9.00%
9
+ ___NEWSPAPERS 9.00%
@@ -0,0 +1,25 @@
1
+ # accounts title flags
2
+ 1000-2999 ASSETS HIDE_TOTAL REQUIRED BOLD
3
+ 1000-1299 _FIXED ASSETS
4
+ 1000-1099 __Intanglible Assets HIDE_TOTAL
5
+ 1100-1199 __Tanglible Assets HIDE_TOTAL
6
+ 1200-1299 __Accumulated Depreciation HIDE_TOTAL
7
+ 2000-2999 _CURRENT ASSETS HIDE_TOTAL REQUIRED BOLD
8
+ 2000-2099 __Receivables HIDE_TOTAL
9
+ 2010-2019 ___Trade Receivables
10
+ 2020-2029 ___Accrued Income
11
+ 2000-2099 __Total Receivables BOLD
12
+ 2100-2199 __Disposable Assets
13
+ 2000-2999 _Total Variable Assets BOLD
14
+ 1000-2999 Total Assets REQUIRED BOLD
15
+ NEW_PAGE
16
+ CAPITAL, RESERVES & LIABILITIES HIDE_TOTAL REQUIRED BOLD
17
+ 3000-3199 5000-9999 _CAPITAL & RESERVES HIDE_TOTAL REQUIRED BOLD
18
+ 3000-3099 __Capital
19
+ 3100-3199 __Retained Profits (Loss)
20
+ 5000-9999 __Profit (Loss) for the financial year
21
+ 3000-3199 5000-9999 _Total Equity BOLD
22
+ 4000-4999 _CREDITORS HIDE_TOTAL REQUIRED BOLD
23
+ 4000-4999 __Trade Creditors
24
+ 4000-4999 _Total Liabilities BOLD
25
+ 3000-3199 4000-4999 5000-9999 Total Liabilities REQUIRED BOLD
@@ -0,0 +1,25 @@
1
+ # accounts title flags
2
+ 1000-2999 VASTAAVAA HIDE_TOTAL REQUIRED BOLD
3
+ 1000-1299 _PYSYVÄT VASTAAVAT
4
+ 1000-1099 __Aineettomat hyödykkeet HIDE_TOTAL
5
+ 1100-1199 __Aineelliset hyödykkeet HIDE_TOTAL
6
+ 1200-1299 __Kertyneet poistot HIDE_TOTAL
7
+ 2000-2999 _VAIHTUVAT VASTAAVAT HIDE_TOTAL REQUIRED BOLD
8
+ 2000-2099 __Saamiset HIDE_TOTAL
9
+ 2010-2019 ___Myyntisaamiset
10
+ 2020-2029 ___Siirtosaamiset
11
+ 2000-2099 __Saamiset yhteensä BOLD
12
+ 2100-2199 __Rahat ja pankkisaamiset
13
+ 2000-2999 _Vaihtuvat vastaavat yhteensä BOLD
14
+ 1000-2999 Vastaavaa yhteensä REQUIRED BOLD
15
+ NEW_PAGE
16
+ VASTATTAVAA HIDE_TOTAL REQUIRED BOLD
17
+ 3000-3199 5000-9999 _OMA PÄÄOMA HIDE_TOTAL REQUIRED BOLD
18
+ 3000-3099 __Osakepääoma
19
+ 3100-3199 __Edellisten tilikausien voitto (tappio)
20
+ 5000-9999 __Tilikauden voitto (tappio)
21
+ 3000-3199 5000-9999 _Oma pääoma yhteensä BOLD
22
+ 4000-4999 _VIERAS PÄÄOMA HIDE_TOTAL REQUIRED BOLD
23
+ 4000-4999 __Velat
24
+ 4000-4999 _Vieras pääoma yhteensä BOLD
25
+ 3000-3199 4000-4999 5000-9999 Vastattavaa yhteensä REQUIRED BOLD
@@ -0,0 +1,79 @@
1
+ # number / title text type code data
2
+ Vastaavaa
3
+ _Pysyvät vastaavat
4
+ _Aineettomat hyödykkeet
5
+ 1000 Aineettomat hyödykkeet ASSET
6
+ 1010 Ohjelmistot ASSET
7
+ 1020 Kehittämismenot ASSET
8
+ 1110 Koneet ja laitteet ASSET
9
+ 1120 Kalusto ASSET
10
+ 1130 IT-laitteet ASSET
11
+ 1200 Kertyneet poistot ASSET
12
+ 1210 Poistot, aineettomat ASSET
13
+ 1220 Poistot, aineelliset ASSET
14
+ _Vaihtuvat vastaavat
15
+ __Saamiset
16
+ 2010 Myyntisaamiset ASSET
17
+ 2020 Siirtosaamiset ASSET
18
+ 2030 Ennakkosaamiset ASSET
19
+ ___Rahat ja pankkisaamiset
20
+ 2110 Pankkitili ASSET
21
+ 2120 Käteinen ASSET
22
+ 2130 Maksunvälittäjä (Wise / PayPal) ASSET
23
+ Vastattavaa
24
+ _Oma pääoma
25
+ __Osakepääoma
26
+ 3010 Osakepääoma EQUITY
27
+ __Edellisten tilikausien voitto (tappio)
28
+ 3210 Tilikauden voitto/tappio PROFIT_PREV
29
+ 3220 Osingonjako EQUITY
30
+ _Velat
31
+ __Lyhytaikaiset velat
32
+ 4010 Ostovelat LIABILITY
33
+ 4020 Verovelat LIABILITY
34
+ 4030 Palkkavelat LIABILITY
35
+ 4040 Siirtovelat LIABILITY
36
+ __Pitkäaikaiset velat
37
+ 4110 Lainat omistajilta LIABILITY
38
+ 4120 Pankkilainat LIABILITY
39
+ Tuloslaskelma
40
+ _Myyntituotot
41
+ 5010 Palvelumyynti (Viro) REVENUE
42
+ 5020 Palvelumyynti (EU) REVENUE
43
+ 5030 Palvelumyynti (EU, ALV 0 %) REVENUE
44
+ 5040 Palvelumyynti (EU ulkopuoli) REVENUE
45
+ _Muut tuotot
46
+ 6010 Korkotuotot REVENUE
47
+ 6020 Valuuttakurssivoitot REVENUE
48
+ _Liiketoiminnan kulut
49
+ __Ostot ja alihankinta
50
+ 7010 Alihankintakulut EXPENSE
51
+ 7020 Konsulttipalvelut EXPENSE
52
+ __Henkilöstökulut
53
+ 7110 Palkat EXPENSE
54
+ 7120 Sosiaalivero EXPENSE
55
+ 7130 Työttömyysvakuutus EXPENSE
56
+ 7140 Eläkevakuutus EXPENSE
57
+ __Hallintokulut
58
+ 7210 Kirjanpito ja tilintarkastus EXPENSE
59
+ 7220 Toimistokulut EXPENSE
60
+ 7230 IT ja ohjelmistot EXPENSE
61
+ 7240 Puhelin ja internet EXPENSE
62
+ __Markkinointi ja myynti
63
+ 7310 Mainonta EXPENSE
64
+ 7320 Verkkopalvelut EXPENSE
65
+ __Matkakulut
66
+ 7410 Matkaliput EXPENSE
67
+ 7420 Majoitus EXPENSE
68
+ 7430 Päivärahat EXPENSE
69
+ __Poistot
70
+ 7510 Poistot, aineelliset EXPENSE
71
+ 7520 Poistot, aineettomat EXPENSE
72
+ __Muut kulut
73
+ 7610 Valuuttakurssitappiot EXPENSE
74
+ 7620 Pankkikulut EXPENSE
75
+ _Tuloverot
76
+ 8010 Jaetun voiton tulovero EXPENSE
77
+ 8020 Aiempiin vuosiin liittyvät verot EXPENSE
78
+ _Erikoistilit
79
+ 9999 Selvittelyä vaativat tapahtumat EXPENSE SUSPENSE_ACCOUNT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-plugins",
3
- "version": "1.17.10",
3
+ "version": "1.17.12",
4
4
  "description": "Shared common plugins of Tasenor project",
5
5
  "repository": "git@github.com:dataplugoy/tasenor-bookkeeper.git",
6
6
  "author": "Tommi Ronkainen <tommi.ronkainen@gmail.com>",
@@ -13,9 +13,9 @@
13
13
  "dayjs": "1.10.8",
14
14
  "sprintf-js": "^1.1.2",
15
15
  "tsx": "^4.7.0",
16
- "@tasenor/common": "1.17.10",
17
- "@tasenor/common-node": "1.17.10",
18
- "@tasenor/common-ui": "1.17.10"
16
+ "@tasenor/common-ui": "1.17.12",
17
+ "@tasenor/common": "1.17.12",
18
+ "@tasenor/common-node": "1.17.12"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@mui/icons-material": "^5.14.1",
@@ -31,8 +31,8 @@
31
31
  "react-i18next": "^14.0.5",
32
32
  "react-router-dom": "^6.14.1",
33
33
  "typescript": "^5.1.6",
34
- "@tasenor/config": "1.17.10",
35
- "eslint-config-tasenor": "0.0.0"
34
+ "eslint-config-tasenor": "0.0.0",
35
+ "@tasenor/config": "1.17.12"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@mui/icons-material": "^5.14.1",
@@ -0,0 +1,40 @@
1
+ # accounts title flags
2
+ 1000-2999 VASTAAVAA HIDE_TOTAL REQUIRED BOLD
3
+ 1000-1299 _PYSYVÄT VASTAAVAT
4
+ 1000-1099 __Aineettomat hyödykkeet HIDE_TOTAL BOLD
5
+ 1000-1099 ___Aineettomat hyödykkeet DETAILS
6
+ 1000-1099 __Aineettomat hyödykkeet yhteensä BOLD
7
+ 1100-1199 __Aineelliset hyödykkeet HIDE_TOTAL BOLD
8
+ 1100-1199 ___Aineelliset hyödykkeet DETAILS
9
+ 1100-1199 __Aineelliset hyödykkeet yhteensä BOLD
10
+ 1200-1299 __Kertyneet poistot HIDE_TOTAL BOLD
11
+ 1200-1299 ___Kertyneet poistot DETAILS
12
+ 1200-1299 __Kertyneet poistot yhteensä BOLD
13
+ 2000-2999 _VAIHTUVAT VASTAAVAT HIDE_TOTAL REQUIRED BOLD
14
+ 2000-2099 __Saamiset HIDE_TOTAL
15
+ 2010-2019 ___Myyntisaamiset HIDE_TOTAL BOLD
16
+ 2010-2019 ____Myyntisaamiset DETAILS
17
+ 2010-2019 ___Myyntisaamiset yhteensä BOLD
18
+ 2020-2029 ___Siirtosaamiset HIDE_TOTAL BOLD
19
+ 2020-2029 ____Siirtosaamiset DETAILS
20
+ 2020-2029 ___Siirtosaamiset yhteensä BOLD
21
+ 2000-2099 __Saamiset yhteensä BOLD
22
+ 2100-2199 __Rahat ja pankkisaamiset HIDE_TOTAL BOLD
23
+ 2100-2199 ___Rahat ja pankkisaamiset DETAILS
24
+ 2100-2199 __Rahat ja pankkisaamiset yhteensä BOLD
25
+ 2000-2999 _Vaihtuvat vastaavat yhteensä BOLD
26
+ 1000-2999 Vastaavaa yhteensä REQUIRED BOLD
27
+ NEW_PAGE
28
+ VASTATTAVAA HIDE_TOTAL REQUIRED BOLD
29
+ 3000-3199 5000-9999 _OMA PÄÄOMA HIDE_TOTAL REQUIRED BOLD
30
+ 3000-3099 __Osakepääoma HIDE_TOTAL BOLD
31
+ 3000-3099 __Osakepääoma DETAILS
32
+ 3100-3199 __Edellisten tilikausien voitto (tappio)
33
+ 5000-9999 __Tilikauden voitto (tappio)
34
+ 3000-3199 5000-9999 _Oma pääoma yhteensä BOLD
35
+ 4000-4999 _VIERAS PÄÄOMA HIDE_TOTAL REQUIRED BOLD
36
+ 4000-4999 __Velat HIDE_TOTAL BOLD
37
+ 4000-4999 ___Velat DETAILS
38
+ 4000-4999 __Velat yhteensä BOLD
39
+ 4000-4999 _Vieras pääoma yhteensä BOLD
40
+ 3000-3199 4000-4999 5000-9999 Vastattavaa yhteensä REQUIRED BOLD
@@ -0,0 +1,131 @@
1
+ import { AccountNumber, Language, PluginCode, ReportID, ReportLine, ReportOptions, Version } from '@tasenor/common'
2
+ import { ReportPlugin } from '@tasenor/common-node'
3
+ import dayjs from 'dayjs'
4
+ import quarterOfYear from 'dayjs/plugin/quarterOfYear'
5
+ dayjs.extend(quarterOfYear)
6
+
7
+ class EstonianBalanceSheetReport extends ReportPlugin {
8
+ constructor() {
9
+ super('balance-sheet-detailed' as ReportID, 'balance-sheet' as ReportID)
10
+
11
+ this.schemes = new Set(['EstonianLimitedCompanyLite'])
12
+
13
+ this.code = 'EstonianBalanceSheetReport' as PluginCode
14
+ this.title = 'Balance Sheet Report (Estonian)'
15
+ this.version = '1.0.14' as Version
16
+ 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>'
17
+ this.releaseDate = '2026-02-05'
18
+ this.use = 'backend'
19
+ this.type = 'report'
20
+ this.description = 'Balance sheet report translated in Finnish or English.'
21
+
22
+ this.languages = {
23
+ en: {
24
+ 'report-balance-sheet-detailed': 'Detailed balance sheet',
25
+ 'report-balance-sheet': 'Balance sheet'
26
+ },
27
+ fi: {
28
+ 'report-balance-sheet-detailed': 'Tase tilierittelyin',
29
+ 'report-balance-sheet': 'Tase'
30
+ }
31
+ }
32
+ }
33
+
34
+ forceOptions() {
35
+ return {
36
+ negateAssetAndProfit: true,
37
+ addPreviousPeriod: true
38
+ }
39
+ }
40
+
41
+ getLanguages(): Language[] {
42
+ // return ['fi', 'en']
43
+ return ['fi']
44
+ }
45
+
46
+ getReportOptions(): ReportOptions {
47
+ return {
48
+ month1: 'radio:1',
49
+ month2: 'radio:1',
50
+ quarter1: 'radio:1',
51
+ month4: 'radio:1',
52
+ month5: 'radio:1',
53
+ quarter2: 'radio:1',
54
+ month7: 'radio:1',
55
+ month8: 'radio:1',
56
+ quarter3: 'radio:1',
57
+ month10: 'radio:1',
58
+ month11: 'radio:1',
59
+ full: 'radio:1:default',
60
+ }
61
+ }
62
+
63
+ columnTitle(id, period, options) {
64
+ const year = dayjs(period.start_date).year()
65
+
66
+ if (options.month1) {
67
+ return `{${dayjs(`${year}-02-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
68
+ } else if (options.month2) {
69
+ return `{${dayjs(`${year}-03-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
70
+ } else if (options.month4) {
71
+ return `{${dayjs(`${year}-05-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
72
+ } else if (options.month5) {
73
+ return `{${dayjs(`${year}-06-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
74
+ } else if (options.month7) {
75
+ return `{${dayjs(`${year}-08-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
76
+ } else if (options.month8) {
77
+ return `{${dayjs(`${year}-09-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
78
+ } else if (options.month10) {
79
+ return `{${dayjs(`${year}-11-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
80
+ } else if (options.month11) {
81
+ return `{${dayjs(`${year}-12-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
82
+ } else if (options.quarter1) {
83
+ return `{${dayjs(`${year}-04-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
84
+ } else if (options.quarter2) {
85
+ return `{${dayjs(`${year}-07-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
86
+ } else if (options.quarter3) {
87
+ return `{${dayjs(`${year}-10-01`).subtract(1, 'day').format('YYYY-MM-DD')}}`
88
+ } else {
89
+ return `{${this.time2str(period.end_date)}}`
90
+ }
91
+ }
92
+
93
+ async preProcess(id, entries, options, settings, columns): Promise<ReportLine[]> {
94
+ const columnNames = columns.map((col) => col.name)
95
+
96
+ // Summarize all totals from the entries.
97
+ const totals = {}
98
+ columnNames.forEach((column) => (totals[column] = {}))
99
+ const accountNames = {}
100
+ const accountNumbers = new Set<AccountNumber>()
101
+ entries.forEach((entry) => {
102
+ const column = 'period' + entry.periodId
103
+ totals[column][entry.number] = totals[column][entry.number] || 0
104
+ totals[column][entry.number] += entry.amount
105
+ accountNames[entry.number] = entry.name
106
+ accountNumbers.add(entry.number)
107
+ })
108
+
109
+ return this.parseAndCombineReport([...accountNumbers], accountNames, columns, options.format, totals)
110
+ }
111
+
112
+ /**
113
+ * Mark mismatching Vastaavaa and Vastattavaa with red.
114
+ */
115
+ async postProcess(id, data) {
116
+ const liabilities = data.find(line => line.name === 'Vastattavaa yhteensä')
117
+ const assets = data.find(line => line.name === 'Vastaavaa yhteensä')
118
+ if (liabilities && assets) {
119
+ Object.values(liabilities.values).forEach((value, idx) => {
120
+ if (Object.values(assets.values)[idx] !== value) {
121
+ assets.error = true
122
+ liabilities.error = true
123
+ }
124
+ })
125
+ }
126
+
127
+ return data
128
+ }
129
+ }
130
+
131
+ export default EstonianBalanceSheetReport
@@ -0,0 +1,79 @@
1
+ # number / title text type code data
2
+ Vastaavaa
3
+ _Pysyvät vastaavat
4
+ _Aineettomat hyödykkeet
5
+ 1000 Aineettomat hyödykkeet ASSET
6
+ 1010 Ohjelmistot ASSET
7
+ 1020 Kehittämismenot ASSET
8
+ 1110 Koneet ja laitteet ASSET
9
+ 1120 Kalusto ASSET
10
+ 1130 IT-laitteet ASSET
11
+ 1200 Kertyneet poistot ASSET
12
+ 1210 Poistot, aineettomat ASSET
13
+ 1220 Poistot, aineelliset ASSET
14
+ _Vaihtuvat vastaavat
15
+ __Saamiset
16
+ 2010 Myyntisaamiset ASSET
17
+ 2020 Siirtosaamiset ASSET
18
+ 2030 Ennakkosaamiset ASSET
19
+ ___Rahat ja pankkisaamiset
20
+ 2110 Pankkitili ASSET
21
+ 2120 Käteinen ASSET
22
+ 2130 Maksunvälittäjä (Wise / PayPal) ASSET
23
+ Vastattavaa
24
+ _Oma pääoma
25
+ __Osakepääoma
26
+ 3010 Osakepääoma EQUITY
27
+ __Edellisten tilikausien voitto (tappio)
28
+ 3210 Tilikauden voitto/tappio PROFIT_PREV
29
+ 3220 Osingonjako EQUITY
30
+ _Velat
31
+ __Lyhytaikaiset velat
32
+ 4010 Ostovelat LIABILITY
33
+ 4020 Verovelat LIABILITY
34
+ 4030 Palkkavelat LIABILITY
35
+ 4040 Siirtovelat LIABILITY
36
+ __Pitkäaikaiset velat
37
+ 4110 Lainat omistajilta LIABILITY
38
+ 4120 Pankkilainat LIABILITY
39
+ Tuloslaskelma
40
+ _Myyntituotot
41
+ 5010 Palvelumyynti (Viro) REVENUE
42
+ 5020 Palvelumyynti (EU) REVENUE
43
+ 5030 Palvelumyynti (EU, ALV 0 %) REVENUE
44
+ 5040 Palvelumyynti (EU ulkopuoli) REVENUE
45
+ _Muut tuotot
46
+ 6010 Korkotuotot REVENUE
47
+ 6020 Valuuttakurssivoitot REVENUE
48
+ _Liiketoiminnan kulut
49
+ __Ostot ja alihankinta
50
+ 7010 Alihankintakulut EXPENSE
51
+ 7020 Konsulttipalvelut EXPENSE
52
+ __Henkilöstökulut
53
+ 7110 Palkat EXPENSE
54
+ 7120 Sosiaalivero EXPENSE
55
+ 7130 Työttömyysvakuutus EXPENSE
56
+ 7140 Eläkevakuutus EXPENSE
57
+ __Hallintokulut
58
+ 7210 Kirjanpito ja tilintarkastus EXPENSE
59
+ 7220 Toimistokulut EXPENSE
60
+ 7230 IT ja ohjelmistot EXPENSE
61
+ 7240 Puhelin ja internet EXPENSE
62
+ __Markkinointi ja myynti
63
+ 7310 Mainonta EXPENSE
64
+ 7320 Verkkopalvelut EXPENSE
65
+ __Matkakulut
66
+ 7410 Matkaliput EXPENSE
67
+ 7420 Majoitus EXPENSE
68
+ 7430 Päivärahat EXPENSE
69
+ __Poistot
70
+ 7510 Poistot, aineelliset EXPENSE
71
+ 7520 Poistot, aineettomat EXPENSE
72
+ __Muut kulut
73
+ 7610 Valuuttakurssitappiot EXPENSE
74
+ 7620 Pankkikulut EXPENSE
75
+ _Tuloverot
76
+ 8010 Jaetun voiton tulovero EXPENSE
77
+ 8020 Aiempiin vuosiin liittyvät verot EXPENSE
78
+ _Erikoistilit
79
+ 9999 Selvittelyä vaativat tapahtumat EXPENSE SUSPENSE_ACCOUNT
@@ -0,0 +1,50 @@
1
+ import path from 'path'
2
+ import { SchemePlugin } from '@tasenor/common-node'
3
+ import { Currency, Language, PluginCode, SchemeName, TsvFilePath, Version } from '@tasenor/common'
4
+
5
+ class EstonianLimitedCompanyLite extends SchemePlugin {
6
+
7
+ constructor() {
8
+ super('EstonianLimitedCompanyLite' as SchemeName)
9
+
10
+ this.code = 'EstonianLimitedCompanyLite' as PluginCode
11
+ this.title = 'Estonian Limited Company - Lite'
12
+ this.version = '1.0.0' as Version
13
+ 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>'
14
+ this.releaseDate = '2026-02-05'
15
+ this.use = 'both'
16
+ this.type = 'scheme'
17
+ this.description = 'Small accounting scheme for Estonian private limited company (OÜ). Finnish version only.'
18
+
19
+ this.languages = {
20
+ fi: {
21
+ }
22
+ }
23
+ }
24
+
25
+ getSchemePaths(code, language): TsvFilePath[] {
26
+ if (code === 'EstonianLimitedCompanyLite') {
27
+ if (language === 'fi') {
28
+ return [
29
+ path.join(__dirname, 'fi-EUR.tsv'),
30
+ ] as TsvFilePath[]
31
+ }
32
+ }
33
+ return []
34
+ }
35
+
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
+ getSchemeDefaults(code): Record<string, unknown> {
38
+ return {}
39
+ }
40
+
41
+ supportedCurrencies(): Currency[] {
42
+ return ['EUR']
43
+ }
44
+
45
+ supportedLanguages(): Language[] {
46
+ return ['fi']
47
+ }
48
+ }
49
+
50
+ export default EstonianLimitedCompanyLite
@@ -0,0 +1,28 @@
1
+ import { SchemePlugin } from '@tasenor/common-ui'
2
+
3
+ class EstonianLimitedCompanyLite extends SchemePlugin {
4
+
5
+ static code = 'EstonianLimitedCompanyLite'
6
+ static title = 'Estonian Limited Company - Lite'
7
+ static version = '1.0.0'
8
+ 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>'
9
+ static releaseDate = '2026-02-05'
10
+ static use = 'both'
11
+ static type = 'scheme'
12
+ static description = 'Small accounting scheme for Estonian private limited company (OÜ). Finnish version only.'
13
+
14
+ constructor() {
15
+ super()
16
+ this.languages = {
17
+ fi: {
18
+ 'Private limited company (Lite scheme)': 'Osakeyhtiö (Suppea tilikartta)'
19
+ }
20
+ }
21
+ }
22
+
23
+ getAccountingSchemes() {
24
+ return { EstonianLimitedCompanyLite: 'Private limited company (Lite scheme)' }
25
+ }
26
+ }
27
+
28
+ export default EstonianLimitedCompanyLite
@@ -1,93 +1,25 @@
1
1
  # accounts title flags
2
- 1000-2000 VASTAAVAA HIDE_TOTAL REQUIRED BOLD
3
- 1000-1500 _PYSYVÄT VASTAAVAT HIDE_TOTAL REQUIRED BOLD
4
- 1000-1100 __Aineettomat hyödykkeet HIDE_TOTAL
5
- 1020-1030 ___Kehittämismenot
6
- 1030-1050 ___Aineettomat oikeudet
7
- 1050-1070 ___Liikearvo
8
- 1070-1090 ___Muut pitkävaikutteiset menot
9
- 1090-1100 ___Ennakkomaksut
10
- 1000-1100 __Aineettomat hyödykkeet yhteensä BOLD
11
- 1100-1400 __Aineelliset hyödykkeet HIDE_TOTAL
12
- 1100-1120 ___Maa- ja vesialueet
13
- 1120-1160 ___Rakennukset ja rakennelmat
14
- 1160-1300 ___Koneet ja kalusto
15
- 1300-1380 ___Muut aineelliset hyödykkeet
16
- 1380-1400 ___Ennakkomaksut ja keskeneräiset hankinnat
17
- 1100-1400 __Aineelliset hyödykkeet yhteensä BOLD
18
- 1400-1500 __Sijoitukset HIDE_TOTAL
19
- 1400-1410 ___Osuudet saman konsernin yrityksissä
20
- 1410-1420 ___Saamiset saman konsernin yrityksiltä
21
- 1420-1430 ___Osuudet omistusyhteysyrityksissä
22
- 1430-1440 ___Saamiset omistusyhteysyrityksiltä
23
- 1440-1470 ___Muut osakkeet ja osuudet
24
- 1470-1500 ___Muut saamiset
25
- 1400-1500 __Sijoitukset yhteensä BOLD
26
- 1000-1500 _Pysyvät vastaavat yhteensä BOLD
27
- 1500-2000 _VAIHTUVAT VASTAAVAT HIDE_TOTAL REQUIRED BOLD
28
- 1500-1600 __Vaihto-omaisuus HIDE_TOTAL
29
- 1500-1510 ___Aineet ja tarvikkeet
30
- 1510-1520 ___Keskeneräiset tuotteet
31
- 1520-1540 ___Valmiit tuotteet/tavarat
32
- 1540-1550 ___Muu vaihto-omaisuus
33
- 1550-1560 ___Ennakkomaksut
34
- 1500-1600 __Vaihto-omaisuus yhteensä BOLD
35
- 1600-1860 __Saamiset HIDE_TOTAL
36
- 1600-1630 1700-1730 ___Myyntisaamiset
37
- 1630-1640 1730-1740 ___Saamiset saman konsernin yrityksiltä
38
- 1640-1650 1740-1750 ___Saamiset omistusyhteysyrityksiltä
39
- 1650-1660 1750-1760 ___Lainasaamiset
40
- 1660-1670 1760-1780 ___Muut saamiset
41
- 1670-1680 1780-1800 ___Maksamattomat osakkeet/osuudet
42
- 1680-1690 1800-1850 ___Siirtosaamiset
43
- 1600-1860 __Saamiset yhteensä BOLD
44
- 1860-1900 __Rahoitusarvopaperit HIDE_TOTAL
45
- 1860-1870 ___Osuudet saman konsernin yrityksissä
46
- 1880-1890 ___Muut osakkeet ja osuudet
47
- 1890-1900 ___Muut arvopaperit
48
- 1860-1900 __Rahoitusarvopaperit yhteensä
49
- 1900-2000 __Rahat ja pankkisaamiset
50
- 1500-2000 _Vaihtuvat vastaavat yhteensä BOLD
51
- 1000-2000 Vastaavaa yhteensä REQUIRED BOLD
2
+ 1000-2999 VASTAAVAA HIDE_TOTAL REQUIRED BOLD
3
+ 1000-1299 _PYSYVÄT VASTAAVAT
4
+ 1000-1099 __Aineettomat hyödykkeet HIDE_TOTAL
5
+ 1100-1199 __Aineelliset hyödykkeet HIDE_TOTAL
6
+ 1200-1299 __Kertyneet poistot HIDE_TOTAL
7
+ 2000-2999 _VAIHTUVAT VASTAAVAT HIDE_TOTAL REQUIRED BOLD
8
+ 2000-2099 __Saamiset HIDE_TOTAL
9
+ 2010-2019 ___Myyntisaamiset
10
+ 2020-2029 ___Siirtosaamiset
11
+ 2000-2099 __Saamiset yhteensä BOLD
12
+ 2100-2199 __Rahat ja pankkisaamiset
13
+ 2000-2999 _Vaihtuvat vastaavat yhteensä BOLD
14
+ 1000-2999 Vastaavaa yhteensä REQUIRED BOLD
52
15
  NEW_PAGE
53
- 2000-9999 VASTATTAVAA HIDE_TOTAL REQUIRED BOLD
54
- 2000-2400 _OMA PÄÄOMA HIDE_TOTAL REQUIRED BOLD
55
- 2000-2020 __Osakepääoma
56
- 2100-2110 __Osuuspääoma
57
- 2150-2160 2180-2190 2340-2360 __Pääomapanokset
58
- 2200-2210 2360-2370 __Peruspääoma
59
- 2020-2030 __Ylikurssirahasto
60
- 2030-2040 2110-2120 __Arvonkorotusrahasto
61
- 2050-2100 __Muut rahastot HIDE_TOTAL
62
- 2050-2060 ___Vararahasto
63
- 2060-2070 ___Yhtiöjärjestyksen tai sääntöjen mukaiset rahastot
64
- 2070-2100 ___Muut rahastot
65
- 2050-2100 __Muut rahastot yhteensä
66
- 2250-2330 __Edellisten tilikausien voitto (tappio)
67
- 2330-2340 __Pääomavajaus
68
- 3000-9999 __Tilikauden voitto (tappio)
69
- 2380-2390 __Pääomalainat
70
- 2000-2400 3000-9999 _Oma pääoma yhteensä BOLD
71
- 2400-2500 _TILINPÄÄTÖSSIIRTOJEN KERTYMÄ HIDE_TOTAL BOLD
72
- 2400-2450 __Poistoero
73
- 2450-2500 __Vapaaehtoiset varaukset
74
- 2400-2500 _Tilinpäätössiirtojen kertymä yhteensä BOLD
75
- 2500-2600 _PAKOLLISET VARAUKSET HIDE_TOTAL BOLD
76
- 2500-2530 __Eläkevaraukset
77
- 2530-2550 __Verovaraukset
78
- 2550-2590 __Muut pakolliset varaukset
79
- 2500-2600 _Pakolliset varaukset yhteensä BOLD
80
- 2600-3000 _VIERAS PÄÄOMA HIDE_TOTAL REQUIRED BOLD
81
- 2600-2610 2800-2810 __Joukkovelkakirjalainat
82
- 2610-2620 2810-2820 __Vaihtovelkakirjalainat
83
- 2620-2650 2820-2850 __Lainat rahoituslaitoksilta
84
- 2650-2660 2850-2860 __Eläkelainat
85
- 2660-2670 2860-2870 __Saadut ennakot
86
- 2670-2690 2870-2890 __Ostovelat
87
- 2690-2700 2890-2900 __Rahoitusvekselit
88
- 2700-2710 2900-2910 __Velat saman konsernin yrityksille
89
- 2710-2720 2910-2920 __Velat omistusyhteysyrityksille
90
- 2720-2750 2920-2950 __Muut velat
91
- 2750-2800 2950-3000 __Siirtovelat
92
- 2600-3000 _Vieras pääoma yhteensä BOLD
93
- 2000-9999 Vastattavaa yhteensä REQUIRED BOLD
16
+ VASTATTAVAA HIDE_TOTAL REQUIRED BOLD
17
+ 3000-3199 5000-9999 _OMA PÄÄOMA HIDE_TOTAL REQUIRED BOLD
18
+ 3000-3099 __Osakepääoma
19
+ 3100-3199 __Edellisten tilikausien voitto (tappio)
20
+ 5000-9999 __Tilikauden voitto (tappio)
21
+ 3000-3199 5000-9999 _Oma pääoma yhteensä BOLD
22
+ 4000-4999 _VIERAS PÄÄOMA HIDE_TOTAL REQUIRED BOLD
23
+ 4000-4999 __Velat
24
+ 4000-4999 _Vieras pääoma yhteensä BOLD
25
+ 3000-3199 4000-4999 5000-9999 Vastattavaa yhteensä REQUIRED BOLD
@@ -17,7 +17,7 @@ class FinnishBalanceSheetReport extends ReportPlugin {
17
17
  this.releaseDate = '2023-03-14'
18
18
  this.use = 'backend'
19
19
  this.type = 'report'
20
- this.description = 'Balance sheet report translated in Finnish.'
20
+ this.description = 'Balance sheet report translated in Finnish or English.'
21
21
 
22
22
  this.languages = {
23
23
  en: {
@@ -17,7 +17,7 @@ class FinnishBalanceSheetReportLite extends ReportPlugin {
17
17
  this.releaseDate = '2023-03-14'
18
18
  this.use = 'backend'
19
19
  this.type = 'report'
20
- this.description = 'Compact version of balance sheet report translated in Finnish.'
20
+ this.description = 'Compact version of balance sheet report translated in Finnish or English.'
21
21
 
22
22
  this.languages = {
23
23
  en: {
@@ -18,7 +18,7 @@ class FinnishIncomeStatementReportLite extends ReportPlugin {
18
18
  this.releaseDate = '2023-03-14'
19
19
  this.use = 'backend'
20
20
  this.type = 'report'
21
- this.description = 'Compact version of income statement report translated in Finnish.'
21
+ this.description = 'Compact version of income statement report translated in Finnish or English.'
22
22
 
23
23
  this.languages = {
24
24
  en: {
@@ -63,6 +63,9 @@ export class NordnetHandler extends TransactionImportHandler {
63
63
  if (columns.Valuuttakurssi === '1' || columns.Vaihtokurssi === '1') {
64
64
  columns.Valuutta = process.config.currency as string
65
65
  }
66
+ if (columns.Valuuttakurssi === '' || columns.Vaihtokurssi === '') {
67
+ columns.Valuutta = process.config.currency as string
68
+ }
66
69
  if (columns.Tapahtumatyyppi === 'OSINKO') {
67
70
  const match = / ([A-Z]{3})\/OSAKE$/.exec(columns.Tapahtumateksti)
68
71
  if (match) {
@@ -0,0 +1,22 @@
1
+ import { DataPlugin } from '@tasenor/common-node'
2
+ import { PluginCode, Version } from '@tasenor/common'
3
+
4
+ class VATEstonia extends DataPlugin {
5
+ constructor() {
6
+ super({ common: ['vat'], backend: [] })
7
+
8
+ this.code = 'VATEstonia'as PluginCode
9
+ this.title = 'VAT Data for Estonia'
10
+ this.version = '1.0.1' as Version
11
+ 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><rect fill="none" height="24" width="24"/></g><g><g><g><path d="M7.5,4C5.57,4,4,5.57,4,7.5S5.57,11,7.5,11S11,9.43,11,7.5S9.43,4,7.5,4z M7.5,9C6.67,9,6,8.33,6,7.5S6.67,6,7.5,6 S9,6.67,9,7.5S8.33,9,7.5,9z M16.5,13c-1.93,0-3.5,1.57-3.5,3.5s1.57,3.5,3.5,3.5s3.5-1.57,3.5-3.5S18.43,13,16.5,13z M16.5,18 c-0.83,0-1.5-0.67-1.5-1.5s0.67-1.5,1.5-1.5s1.5,0.67,1.5,1.5S17.33,18,16.5,18z M5.41,20L4,18.59L18.59,4L20,5.41L5.41,20z"/></g></g></g></svg>'
12
+ this.releaseDate = '2026-02-05'
13
+ this.use = 'backend'
14
+ this.type = 'data'
15
+ this.description = 'This plugin provides data needed for VAT handling in Estonia.'
16
+
17
+ this.languages = {
18
+ }
19
+ }
20
+ }
21
+
22
+ export default VATEstonia
@@ -0,0 +1,13 @@
1
+ [
2
+ {
3
+ "from": "2025-07-01",
4
+ "to": null,
5
+ "percentage": {
6
+ "INCOME": 24,
7
+ "EXPENSE": 24,
8
+ "ACCOMMODATION": 13,
9
+ "BOOK": 9,
10
+ "NEWSPAPERS": 9
11
+ }
12
+ }
13
+ ]