feat(packs): konteringspaket as validated data files (phase 2a) (#1386)
* feat(packs): konteringspaket as validated data files, ported losslessly The 26 system booking templates lived inside migration 20260413160000. Under the never-modify-a-shipped-migration rule that froze them: correcting a wrong BAS account or a Swedish typo needed a whole new migration, and nothing checked that a seeded account existed in the chart or that a template balanced. #1321 was exactly that failure with seeded chart names. They are now one YAML file per pattern under packs/, with a Zod contract and a CI gate. A correction becomes a one-line edit plus a green run. The port is proven lossless, not asserted. The test fixture was read out of a Postgres with all 548 migrations applied, so it is the exact JSONB production holds; lib/packs/__tests__/port-is-lossless.test.ts asserts the YAML reproduces it by value. Phase 2b can swap the seeded rows for the loader as a no-op. The gate checks what makes a pack CORRECT, not just well-formed, because #1321 was structurally valid and still wrong: every account must exist in BAS 2026, and every pack must balance at five probe amounts through the real applyTemplate() rather than a reimplementation. Account numbers validate through lib/invariants, so a pack cannot disagree with the API or the SIE importer about what an account number is. Doing that immediately found four pre-existing breakages in the shipped templates: loneutbetalning debits total 1.42x the amount against a 1.0 credit: it can never post periodiseringsfond-avsattning-ab account 2113 is not in BAS 2026 and is not periodiseringsfond-aterforing-ab seeded into any company chart preliminar-f-skatt-ef account 2012, same problem These are quarantined in KNOWN_BROKEN, not fixed and not hidden: a quarantined pack's findings are warnings, any NEW finding fails the build, and the validator fails if a quarantined pack turns out to be clean, so the list may only shrink. Each is a Swedish accounting content change to a user-facing template, which deserves its own review rather than riding along inside a file-format change. Five shipped descriptions contain em dashes, preserved verbatim and pinned by a test: a lossless port must not silently rewrite user-visible strings. js-yaml is promoted from a transitive dependency to a declared one (MIT, already in node_modules), so the catalogue does not depend on it by accident. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(deps): regenerate package-lock.json with npm 10 to match CI `npm ci` failed on every job with "Missing: @swc/helpers@0.5.23 from lock file". The lockfile was written by local npm 11.6.0; CI runs npm 10.8.2 on node 20, and npm 11 emits a tree npm 10 reads as out of sync. Regenerated with `npx npm@10 install --package-lock-only`, which cuts the diff from a sprawling rewrite down to the three entries this branch actually adds (js-yaml, @types/js-yaml, and the @swc/helpers entry npm 11 had dropped). Verified with `npx npm@10 ci --dry-run`. This is the documented gotcha for this repo: regenerate lockfiles with npx npm@10, never with a local npm 11. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
Jakob Wennberg
parent
c1888fcd5e
commit
df34cae9bf
@@ -0,0 +1,97 @@
|
||||
# Konteringspaket
|
||||
|
||||
Reusable bookkeeping patterns, as data. One YAML file per pattern.
|
||||
|
||||
These are the templates a user picks in the app when booking something common:
|
||||
representation, EU-handel, periodiseringsfond, löneutbetalning. They used to be
|
||||
rows frozen inside a database migration. They are files now, so correcting one
|
||||
is a one-line edit and a green CI run instead of a new migration.
|
||||
|
||||
## Anatomy
|
||||
|
||||
```yaml
|
||||
meta:
|
||||
slug: representation-avdragsgill-25-moms # filename must match, this is the public key
|
||||
order: 13 # display order, unique across the catalogue
|
||||
name: 'Representation (avdragsgill, 25% moms)'
|
||||
category: representation # eu_trade | tax_account | private_transfer |
|
||||
# salary | representation | year_end | vat |
|
||||
# financial | other
|
||||
entity_type: all # all | enskild_firma | aktiebolag
|
||||
description: >-
|
||||
Extern representation med avdragsgill moms. Max 300 kr/person exkl. moms.
|
||||
lines:
|
||||
- account: '6072' # BAS account, ALWAYS quoted (it is a string)
|
||||
label: 'Representation avdragsgill'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 0.8
|
||||
- account: '2641'
|
||||
label: 'Ingående moms'
|
||||
side: debit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
```
|
||||
|
||||
## The three line types
|
||||
|
||||
The user types one total amount. The type decides how each line's amount is
|
||||
derived from it (`applyTemplate()` in `lib/bookkeeping/template-library.ts`):
|
||||
|
||||
| Type | Amount | Carries |
|
||||
|---|---|---|
|
||||
| `vat` | `total * vat_rate / (1 + vat_rate)` | `vat_rate`, never `ratio` |
|
||||
| `business` | `total * ratio` | `ratio`, never `vat_rate` |
|
||||
| `settlement` | `total * ratio` | `ratio`, never `vat_rate` |
|
||||
|
||||
`settlement` is the money leg (the bank account, the reskontra). `business` is
|
||||
the cost or revenue. Putting a `ratio` on a `vat` line silently computes the
|
||||
wrong amount, so the schema rejects it rather than trusting you to remember.
|
||||
|
||||
## Rules the CI gate enforces
|
||||
|
||||
Run `npm run validate:packs` before pushing. It checks:
|
||||
|
||||
1. The schema, including the `vat_rate` / `ratio` split above.
|
||||
2. Filename equals `meta.slug`.
|
||||
3. `meta.slug` and `meta.order` are unique across the catalogue.
|
||||
4. **Every account exists in the BAS 2026 chart.** A pack may only reference
|
||||
standard accounts, because a non-standard one cannot be seeded into a
|
||||
company's chart and the template will fail to apply.
|
||||
5. **The pack balances** at five probe amounts, applied through the real
|
||||
`applyTemplate()`. Debits must equal credits or the verifikat cannot post.
|
||||
6. Both a debit and a credit line are present.
|
||||
|
||||
## Account numbers are strings
|
||||
|
||||
`account: '1930'`, never `account: 1930`. YAML would read the unquoted form as
|
||||
a number, and a BAS account is an identifier, not a quantity. The schema
|
||||
rejects it, but quote it anyway so the file reads correctly.
|
||||
|
||||
## Swedish stays Swedish
|
||||
|
||||
`name`, `description` and `legal_note` are user-facing Swedish and are not
|
||||
translated, in either locale. They are statutory content, per
|
||||
`.claude/rules/i18n.md`.
|
||||
|
||||
## Known-broken templates
|
||||
|
||||
Four packs ported out of the original migration have pre-existing problems
|
||||
(an unbalanced salary template, and accounts that no longer exist in BAS 2026).
|
||||
They are listed in `KNOWN_BROKEN` in `scripts/validate-packs.ts` with the reason
|
||||
for each. They are quarantined, not accepted: the list may only shrink, and
|
||||
fixing one means deleting its entry. Each needs a Swedish accounting decision
|
||||
rather than a code change, which is why they were not fixed during the port.
|
||||
|
||||
## Adding a pack
|
||||
|
||||
1. Copy the closest existing file, rename it to your slug.
|
||||
2. Set `meta.order` to one past the current highest.
|
||||
3. Run `npm run validate:packs`.
|
||||
4. New user-facing strings go in the YAML, not in `messages/*.json`: a pack
|
||||
carries its own Swedish.
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: aktieagarlan-aterbetalning
|
||||
order: 9
|
||||
name: 'Aktieägarlån — återbetalning'
|
||||
category: private_transfer
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Bolaget betalar tillbaka lån till ägaren.
|
||||
lines:
|
||||
- account: '2893'
|
||||
label: 'Skuld till aktieägare'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: aktieagarlan-insattning
|
||||
order: 8
|
||||
name: 'Aktieägarlån — insättning'
|
||||
category: private_transfer
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Ägaren sätter in pengar som lån till bolaget.
|
||||
lines:
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '2893'
|
||||
label: 'Skuld till aktieägare'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: arbetsgivaravgifter-via-skattekonto
|
||||
order: 16
|
||||
name: 'Arbetsgivaravgifter via skattekonto'
|
||||
category: tax_account
|
||||
entity_type: all
|
||||
description: >-
|
||||
Arbetsgivaravgifter som dras från skattekontot.
|
||||
lines:
|
||||
- account: '2731'
|
||||
label: 'Avräkning sociala avgifter'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: arbetsgivaravgifter
|
||||
order: 14
|
||||
name: 'Arbetsgivaravgifter'
|
||||
category: salary
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Bokföring av arbetsgivaravgifter (31,42% av bruttolön).
|
||||
lines:
|
||||
- account: '7510'
|
||||
label: 'Arbetsgivaravgifter'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2731'
|
||||
label: 'Avräkning sociala avgifter'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: bankavgift
|
||||
order: 5
|
||||
name: 'Bankavgift'
|
||||
category: financial
|
||||
entity_type: all
|
||||
description: >-
|
||||
Månadsavgift eller transaktionsavgift från banken.
|
||||
lines:
|
||||
- account: '6570'
|
||||
label: 'Bankkostnader'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: beraknad-bolagsskatt
|
||||
order: 23
|
||||
name: 'Beräknad bolagsskatt'
|
||||
category: year_end
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Bokföring av beräknad inkomstskatt vid bokslut.
|
||||
lines:
|
||||
- account: '8910'
|
||||
label: 'Skatt på årets resultat'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2512'
|
||||
label: 'Beräknad inkomstskatt'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: eget-insattning
|
||||
order: 10
|
||||
name: 'Eget insättning'
|
||||
category: private_transfer
|
||||
entity_type: enskild_firma
|
||||
description: >-
|
||||
Privat insättning till företagskontot (enskild firma).
|
||||
lines:
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '2018'
|
||||
label: 'Egna insättningar'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: eget-uttag
|
||||
order: 11
|
||||
name: 'Eget uttag'
|
||||
category: private_transfer
|
||||
entity_type: enskild_firma
|
||||
description: >-
|
||||
Privat uttag från företagskontot (enskild firma).
|
||||
lines:
|
||||
- account: '2013'
|
||||
label: 'Egna uttag'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: forsaljning-eu-tjanster-b2b
|
||||
order: 1
|
||||
name: 'Försäljning EU-tjänster (B2B)'
|
||||
category: eu_trade
|
||||
entity_type: all
|
||||
description: >-
|
||||
Tjänsteförsäljning till annat EU-land (B2B). Ingen moms — kunden redovisar omvänd skattskyldighet.
|
||||
lines:
|
||||
- account: '1510'
|
||||
label: 'Kundfordringar'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '3308'
|
||||
label: 'Försäljning tjänster EU'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: forsaljning-export-utanfor-eu
|
||||
order: 2
|
||||
name: 'Försäljning export (utanför EU)'
|
||||
category: eu_trade
|
||||
entity_type: all
|
||||
description: >-
|
||||
Försäljning till land utanför EU. Momsfritt.
|
||||
lines:
|
||||
- account: '1510'
|
||||
label: 'Kundfordringar'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '3305'
|
||||
label: 'Försäljning export'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,31 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: inkop-eu-tjanster-omvand-moms-25
|
||||
order: 3
|
||||
name: 'Inköp EU-tjänster, omvänd moms 25%'
|
||||
category: eu_trade
|
||||
entity_type: all
|
||||
description: >-
|
||||
Köp av tjänster från annat EU-land. Omvänd skattskyldighet — du redovisar både utgående och ingående moms.
|
||||
lines:
|
||||
- account: '6540'
|
||||
label: 'IT-tjänster'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2614'
|
||||
label: 'Utgående moms omvänd skattskyldighet 25%'
|
||||
side: credit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '2645'
|
||||
label: 'Beräknad ingående moms 25%'
|
||||
side: debit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,31 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: inkop-eu-varor-omvand-moms-25
|
||||
order: 4
|
||||
name: 'Inköp EU-varor, omvänd moms 25%'
|
||||
category: eu_trade
|
||||
entity_type: all
|
||||
description: >-
|
||||
Köp av varor från annat EU-land. Omvänd skattskyldighet — du redovisar både utgående och ingående moms.
|
||||
lines:
|
||||
- account: '4010'
|
||||
label: 'Varuinköp'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2614'
|
||||
label: 'Utgående moms omvänd skattskyldighet 25%'
|
||||
side: credit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '2645'
|
||||
label: 'Beräknad ingående moms 25%'
|
||||
side: debit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: insattning-skattekonto
|
||||
order: 17
|
||||
name: 'Insättning skattekonto'
|
||||
category: tax_account
|
||||
entity_type: all
|
||||
description: >-
|
||||
Betalning från företagskonto till skattekontot hos Skatteverket.
|
||||
lines:
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,31 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: loneutbetalning
|
||||
order: 15
|
||||
name: 'Löneutbetalning'
|
||||
category: salary
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Utbetalning av nettolön till anställd.
|
||||
lines:
|
||||
- account: '2710'
|
||||
label: 'Personalskatt'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 0.3
|
||||
- account: '2920'
|
||||
label: 'Upplupna semesterlöner'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 0.12
|
||||
- account: '7010'
|
||||
label: 'Löner'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: momsbetalning-via-skattekonto
|
||||
order: 18
|
||||
name: 'Momsbetalning via skattekonto'
|
||||
category: tax_account
|
||||
entity_type: all
|
||||
description: >-
|
||||
Moms som dras från skattekontot efter momsdeklaration.
|
||||
lines:
|
||||
- account: '2650'
|
||||
label: 'Redovisningskonto moms'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,26 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: momsredovisning-nettning
|
||||
order: 22
|
||||
name: 'Momsredovisning (nettning)'
|
||||
category: vat
|
||||
entity_type: all
|
||||
description: >-
|
||||
Nettning av momskonton vid momsdeklaration. Justera konton och belopp efter din deklaration.
|
||||
lines:
|
||||
- account: '2611'
|
||||
label: 'Utgående moms 25%'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 0.5
|
||||
- account: '2641'
|
||||
label: 'Ingående moms'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 0.3
|
||||
- account: '2650'
|
||||
label: 'Redovisningskonto moms'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 0.2
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: overavskrivning-inventarier
|
||||
order: 26
|
||||
name: 'Överavskrivning inventarier'
|
||||
category: year_end
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Bokföring av överavskrivning (skillnad räkenskapsenlig vs planenlig).
|
||||
lines:
|
||||
- account: '8850'
|
||||
label: 'Förändring överavskrivning'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2150'
|
||||
label: 'Ackumulerade överavskrivningar'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: periodiseringsfond-aterforing-ab
|
||||
order: 25
|
||||
name: 'Periodiseringsfond återföring (AB)'
|
||||
category: year_end
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Återföring av periodiseringsfond (senast efter 6 år).
|
||||
lines:
|
||||
- account: '2113'
|
||||
label: 'Periodiseringsfond'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '8819'
|
||||
label: 'Återföring periodiseringsfond'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: periodiseringsfond-avsattning-ab
|
||||
order: 24
|
||||
name: 'Periodiseringsfond avsättning (AB)'
|
||||
category: year_end
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Avsättning till periodiseringsfond vid bokslut. Max 25% av överskottet.
|
||||
lines:
|
||||
- account: '8811'
|
||||
label: 'Avsättning periodiseringsfond'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '2113'
|
||||
label: 'Periodiseringsfond'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: preliminar-f-skatt-ab
|
||||
order: 19
|
||||
name: 'Preliminär F-skatt (AB)'
|
||||
category: tax_account
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Betalning av preliminär bolagsskatt från skattekontot.
|
||||
lines:
|
||||
- account: '2518'
|
||||
label: 'Betald F-skatt'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: preliminar-f-skatt-ef
|
||||
order: 20
|
||||
name: 'Preliminär F-skatt (EF)'
|
||||
category: tax_account
|
||||
entity_type: enskild_firma
|
||||
description: >-
|
||||
Betalning av preliminär F-skatt från skattekontot (enskild firma).
|
||||
lines:
|
||||
- account: '2012'
|
||||
label: 'Egna skatter'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: ranteintakt
|
||||
order: 6
|
||||
name: 'Ränteintäkt'
|
||||
category: financial
|
||||
entity_type: all
|
||||
description: >-
|
||||
Ränta från sparkonto eller bank.
|
||||
lines:
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '8311'
|
||||
label: 'Ränteintäkter'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: rantekostnad
|
||||
order: 7
|
||||
name: 'Räntekostnad'
|
||||
category: financial
|
||||
entity_type: all
|
||||
description: >-
|
||||
Ränta på lån eller kredit.
|
||||
lines:
|
||||
- account: '8410'
|
||||
label: 'Räntekostnader'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,26 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: representation-avdragsgill-25-moms
|
||||
order: 13
|
||||
name: 'Representation (avdragsgill, 25% moms)'
|
||||
category: representation
|
||||
entity_type: all
|
||||
description: >-
|
||||
Extern representation med avdragsgill moms. Max 300 kr/person exkl. moms.
|
||||
lines:
|
||||
- account: '6072'
|
||||
label: 'Representation avdragsgill'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 0.8
|
||||
- account: '2641'
|
||||
label: 'Ingående moms'
|
||||
side: debit
|
||||
type: vat
|
||||
vat_rate: 0.25
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: skatteaterbaring
|
||||
order: 21
|
||||
name: 'Skatteåterbäring'
|
||||
category: tax_account
|
||||
entity_type: all
|
||||
description: >-
|
||||
Återbetalning från skattekontot till företagskonto.
|
||||
lines:
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: debit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
- account: '1630'
|
||||
label: 'Skattekonto'
|
||||
side: credit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
@@ -0,0 +1,21 @@
|
||||
# Konteringspaket. Schema: lib/packs/schema.ts
|
||||
# Validated by `npm run validate:packs` (CI gate).
|
||||
meta:
|
||||
slug: utdelning-till-aktieagare
|
||||
order: 12
|
||||
name: 'Utdelning till aktieägare'
|
||||
category: private_transfer
|
||||
entity_type: aktiebolag
|
||||
description: >-
|
||||
Utbetalning av beslutad utdelning till aktieägare.
|
||||
lines:
|
||||
- account: '2898'
|
||||
label: 'Outtagen utdelning'
|
||||
side: debit
|
||||
type: business
|
||||
ratio: 1.0
|
||||
- account: '1930'
|
||||
label: 'Företagskonto'
|
||||
side: credit
|
||||
type: settlement
|
||||
ratio: 1.0
|
||||
Reference in New Issue
Block a user