Valsts budžets kā kods v0.1: shēma, 2025. un 2026. gada budžeta likumi kā dati
Loģisks budžeta modelis (Source, Provision, Parameter, Actor, Purpose, Indicator, Rule, ClassItem, Allocation), nevis likuma pielikumu izkārtojuma kopija. Abi likumi: teksts un visi 12 pielikumi. Atpakaļsaderība: 2026 — 58 457 no 58 457, 2025 — 55 677 no 55 677 pielikumos drukāto skaitļu atjaunoti tikai no XML. Avoti (likumi.lv, klasifikāciju MK noteikumi), rīki, datu līgums B15, dokumentācija. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016679RwmHsuTFfxt26wP6rk
This commit is contained in:
39
docs/IDENTIFIKATORI.md
Normal file
39
docs/IDENTIFIKATORI.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Identifikatoru veidošanas noteikumi (v0.1)
|
||||
|
||||
Tie paši principi kā Valdības deklarācijas datukopā: viens elements — viens pastāvīgs identifikators; identifikators satur ceļu līdz saknei; atļautās rakstzīmes — latīņu burti, cipari, `-`, `_`, `.`; der XML `xs:ID`, datnes nosaukumā un tīmekļa adresē.
|
||||
|
||||
## Sakne
|
||||
|
||||
| Objekts | Forma | Piemērs |
|
||||
|---|---|---|
|
||||
| Budžeta likums | `lv-vb-GGGG` | `lv-vb-2026` — likums „Par valsts budžetu 2026. gadam un budžeta ietvaru 2026., 2027. un 2028. gadam” |
|
||||
| Likuma redakcija pēc grozījumiem | `lv-vb-GGGG-rN` | `lv-vb-2026-r2` |
|
||||
|
||||
Datnes nosaukums = budžeta identifikators: `data/lv-vb-2026.xml`.
|
||||
|
||||
## Ieraksti
|
||||
|
||||
| Ieraksts | Forma | Piemērs |
|
||||
|---|---|---|
|
||||
| Avots | `…src.law`, `…src.pNN` | `lv-vb-2026.src.p04` — 4. pielikums |
|
||||
| Pants | `…pNNN` | `lv-vb-2026.p017` — 17. pants |
|
||||
| Parametrs | `…par.<nosaukums>-GGGG` | `lv-vb-2026.par.ikp-2027` |
|
||||
| Resors | `…ac.rSS` (SS — resora kods; VPK ID atribūtā `vpk`) | `lv-vb-2026.ac.r13` (`vpk="13-0000"`) |
|
||||
| Pašvaldība | `…ac.m-<nosaukums>` | `lv-vb-2026.ac.m-rigas-valstspilseta` |
|
||||
| Resora mērķis | `…pr.SS` | `lv-vb-2026.pr.17` |
|
||||
| Programma, apakšprogramma | `…pr.SS.PP.AA.00` | `lv-vb-2026.pr.17.23.06.00` |
|
||||
| Projekts (11. pielikums) | `…pj.SS.PP.AA.00.<projekta kods>` | `lv-vb-2026.pj.12.67.02.00.ceki-em-002` |
|
||||
| Mērķdotācija | `…pr.gNN` (NN — pielikums) | `lv-vb-2026.pr.g06` |
|
||||
| Naudas fakts | `…a.pNN.r<rinda>.y<gads>[l][-N]` | `lv-vb-2026.a.p04.r89.y2026` |
|
||||
|
||||
Naudas fakta identifikators ir atvasināts no avota: pielikums, rinda avota datnē un gads. `l` nozīmē aili „tālākā laika posmā līdz projekta beigām”. `-N` tiek pievienots, ja viena avota šūna dod vairākus faktus (piemēram, mērķdotāciju ailes vienā rindā). Atkārtoti parsējot to pašu likumu, identifikatori nemainās.
|
||||
|
||||
## Klasifikāciju kodi
|
||||
|
||||
Kodus neveido no jauna. `ClassItem` izmanto oficiālos kodus:
|
||||
|
||||
- ekonomiskā klasifikācija (`ekk`): 4 cipari, piemēram `7131`;
|
||||
- ieņēmumi (`revenue`): 5 cipari, piemēram `21710`;
|
||||
- finansēšana (`financing`): `F` + 8 cipari, piemēram `F40020000`.
|
||||
|
||||
Likuma kopsavilkuma pozīcijām bez klasifikācijas koda izmanto SAP pielikumu kodus (`A100`, `B100`, `PB`…) shēmā `law`. Ja koda nav nevienā avotā, tiek veidots `L-<nosaukums>`.
|
||||
104
docs/MODELIS.md
Normal file
104
docs/MODELIS.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# Budžeta modelis (v0.1)
|
||||
|
||||
## 1. Jēdzieni
|
||||
|
||||
Budžets ir lēmums par periodu: kurš drīkst saņemt vai izlietot cik naudas, kādam mērķim un pēc kādiem noteikumiem.
|
||||
|
||||
| Ieraksts | Kas tas ir | Galvenie lauki |
|
||||
|---|---|---|
|
||||
| `Budget` | Viena budžeta likuma versija | `id`, `year`, `horizonTo`, `status` (draft / adopted / amended), `act`, `published`, `version` |
|
||||
| `Source` | Avota dokuments | `kind` (lawText / annex / form), `annex`, `url`, `sha256` |
|
||||
| `Provision` | Likuma pants (teksts) | `article`, `chapter` |
|
||||
| `Parameter` | Lielums, kas nav naudas piešķīrums | `name`, `code`, `year`, `value`, `unit` |
|
||||
| `Actor` | Kurš tur vai saņem naudu | `kind` (resort / institution / municipality / unallocated), `code` (resora kods), `vpk` (VPK ID) |
|
||||
| `Purpose` | Kam nauda paredzēta (koks) | `kind` (resort / programme / subprogramme / project / grant), `code`, `parent`, `holder`, `function` |
|
||||
| `Indicator` | Rezultatīvais rādītājs | `purpose`, `unit`, `year`, `base`, `target` (rezervēts paskaidrojumiem) |
|
||||
| `Rule` | Mašīnlasāms likuma noteikums | `kind` (limit / condition / permission), `parameter`, `value`, `provision` (rezervēts) |
|
||||
| `ClassItem` | Izmantotais klasifikācijas kods | `scheme`, `code`, `name`, `parent`, `parentScheme`, `intraFund` |
|
||||
| `Allocation` | Viens naudas fakts | skatīt 2. nodaļu |
|
||||
|
||||
## 2. Naudas fakts (`Allocation`)
|
||||
|
||||
| Lauks | Vērtības | Nozīme |
|
||||
|---|---|---|
|
||||
| `flow` | revenue · resource · expenditure · financing | valsts ieņēmumi · resursi izdevumu segšanai · izdevumi · finansēšana |
|
||||
| `fund` | basic · special | valsts pamatbudžets · valsts speciālais budžets |
|
||||
| `nature` | appropriation · forecast · ceiling · commitment · earmarkedGrant | apropriācija · ieņēmumu prognoze · maksimālais apjoms nākamajiem gadiem · ilgtermiņa saistības · mērķdotācija pašvaldībai |
|
||||
| `year`, `untilEnd` | gads; `true` — no šī gada līdz projekta beigām | |
|
||||
| `periodFrom`, `periodTo` | datumi | mērķdotācijām: 1.01.–31.08. un 1.09.–31.12. |
|
||||
| `holder` | Actor | kura budžetā ir summa |
|
||||
| `recipient` | Actor | kas saņem (pašvaldība) |
|
||||
| `purpose` | Purpose | programma, apakšprogramma, projekts vai mērķdotācija |
|
||||
| `block` | core · eu | valsts pamatfunkciju īstenošana · ES politiku instrumentu un pārējās ārvalstu finanšu palīdzības līdzfinansētie projekti |
|
||||
| `commitmentKind` | 10 ciparu kods | ilgtermiņa saistību veids (kodi grupējas pa diviem cipariem: `01 01 10 00 00`) |
|
||||
| `function` | COFOG kods | funkcionālā klasifikācija |
|
||||
| `scheme`, `code` | ekk · revenue · financing · law · commitment | klasifikācija un kods |
|
||||
| `amount` | euro | kā publicēts |
|
||||
| `partOf` | Allocation | „tai skaitā”: daļa no cita fakta, kopsummās otrreiz netiek skaitīta |
|
||||
| `src`, `srcRow` | Source, rinda | kur summa ir avota datnē |
|
||||
|
||||
## 3. Kas tiek glabāts un kas aprēķināts
|
||||
|
||||
Katrs fakts tiek glabāts vienu reizi, no detalizētākā avota:
|
||||
|
||||
| Fakts | Avots |
|
||||
|---|---|
|
||||
| Izdevumi, resursi, finansēšana budžeta gadā | 4. pielikums (pamatbudžets) un 5. pielikums (speciālais budžets) — apakšprogrammu līmenī |
|
||||
| Nākamo divu gadu maksimālie apjomi | 3. pielikums — resora un bloka līmenī (`nature="ceiling"`) |
|
||||
| Ieņēmumi | 2. pielikums (`nature="forecast"`); speciālā budžeta budžeta gada ieņēmumi — 5. pielikums pa apakšprogrammām |
|
||||
| Nodevas pa administrējošām ministrijām | 2. pielikums, `partOf` uz attiecīgo ieņēmumu kodu |
|
||||
| Ilgtermiņa saistības | 11. pielikums — projekta vai programmas un saistību veida līmenī |
|
||||
| Mērķdotācijas pašvaldībām | 6.–10. pielikums — pa pašvaldībām un periodiem; „tai skaitā” kā `partOf` |
|
||||
| IKP prognoze | 1. pielikums (`Parameter`) |
|
||||
|
||||
Viss pārējais — kopsummas, starpsummas, resoru un programmu summas, finansiālā bilance, viss 1. pielikums un 3. pielikuma budžeta gada dati — tiek aprēķināts.
|
||||
|
||||
Daļa summu likumā parādīta tikai apkopojuma līmenī, piemēram, valsts aizņēmumi. Tie tiek glabāti tajā līmenī, kurā likums tos rāda (bez programmas). Tādu ir maz: skatīt `docs/SADERIBA.md`.
|
||||
|
||||
## 4. Konsolidācija
|
||||
|
||||
Transferti viena fonda iekšienē (piemēram, „Valsts pamatbudžeta savstarpējie transferti”, „Ārvalstu finanšu palīdzība atmaksām valsts pamatbudžetam”) kopsummā izslēdzas tajā līmenī, kurā ir gan devējs, gan saņēmējs. Noteikums:
|
||||
|
||||
- kods ar `intraFund="true"` tiek skaitīts mezgla kopsummā tikai tad, ja likums šo kodu šajā mezglā rāda;
|
||||
- ja nerāda, tas mezglā ir izslēdzies.
|
||||
|
||||
Piemērs: 2026. gada pamatbudžeta resursi pa apakšprogrammām ir 13 500 542 589 euro, bet likumā kopā 13 363 050 794 euro. Starpība 137 491 795 euro ir pamatbudžeta iekšējie transferti (25,4 milj.), ārvalstu palīdzības atmaksas (110,1 milj.) un dotācijas atmaksas (2,0 milj.).
|
||||
|
||||
Starp fondiem (pamatbudžets ↔ speciālais budžets) konsolidē 1. pielikums: „mīnus transferts” rindas aprēķina no EKK kodiem 7110, 7120, 9110, 9120.
|
||||
|
||||
## 5. Klasifikāciju koks
|
||||
|
||||
Pielikumos kodi nav drukāti — tikai nosaukumi ar atkāpēm. Kodus piesaista pēc nosaukuma no trim avotiem: klasifikāciju MK noteikumiem, pielikumu slēptajām SAP lapām un Valsts kases izpildes datiem. Vecākkods tiek noteikts:
|
||||
|
||||
1. ar balsojumu pēc atkāpēm visos 2.–5. pielikuma blokos;
|
||||
2. pārbaudot pret koda struktūru: skaitliskam kodam vecākkods var būt tikai tā prefikss (21200 nevar būt zem 21100).
|
||||
|
||||
Tas novērš avotu formatējuma kļūdas (sk. `docs/SADERIBA.md`).
|
||||
|
||||
## 6. Pielikumi kā skati
|
||||
|
||||
| Pielikums | Skats |
|
||||
|---|---|
|
||||
| 1. Konsolidētais budžets | Aprēķins no ieņēmumiem, izdevumiem un finansēšanas abos fondos; procenti no IKP — no `Parameter` |
|
||||
| 2. Ieņēmumi | `flow="revenue"`; nodevas — `partOf` |
|
||||
| 3. Resoru kopsavilkums | Budžeta gads — summa no 4./5. pielikuma faktiem pa resoriem un blokiem; nākamie gadi — `nature="ceiling"` |
|
||||
| 4., 5. Programmas | `flow` resource / expenditure / financing pa apakšprogrammām |
|
||||
| 6.–10. Mērķdotācijas | `nature="earmarkedGrant"`, `recipient` = pašvaldība |
|
||||
| 11. Ilgtermiņa saistības | `nature="commitment"`, `commitmentKind`, projekti kā `Purpose kind="project"` |
|
||||
| 12. Veidlapa | Tikai `Source` (datu nav) |
|
||||
| Likuma teksts | `Provision` |
|
||||
|
||||
## 7. Ārējo kodu avoti
|
||||
|
||||
`source/kodi/` datnes izgūtas no VDZP (<https://lakehouse.pppa.lv/>):
|
||||
|
||||
```sql
|
||||
-- vk_codes.tsv: ekonomiskās, ieņēmumu un finansēšanas klasifikācijas kodi ar nosaukumiem no Valsts kases izpildes datiem
|
||||
SELECT DISTINCT klasifikacija, v FROM (SELECT klasifikacija, unnest(ARRAY[likuma_griezuma_ekk, ekk4, ekk5, ekk6, ekk7]) v
|
||||
FROM cac_bronze.vk_budget_execution) x WHERE v ~ '^[A-Z]{0,2}[0-9]';
|
||||
-- vk_blocks.tsv: budžeta bloks (pamatfunkcijas / ārvalstu finanšu palīdzība) katrai apakšprogrammai
|
||||
SELECT gads, ministrija_kods, programma_kods, apaksprogramma_kods, budzeta_bloks, budzeta_tips, count(*)
|
||||
FROM cac_bronze.vk_budget_execution WHERE gads IN ('2025','2026') GROUP BY 1,2,3,4,5,6;
|
||||
-- vpk_resorts.tsv: resoru VPK ID (resora kods = VPK ID nozares daļa)
|
||||
SELECT cac_id, name FROM cac_silver.organization WHERE cac_id LIKE '%-0000';
|
||||
```
|
||||
60
docs/SADERIBA.md
Normal file
60
docs/SADERIBA.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Atpakaļsaderība ar budžeta likumu
|
||||
|
||||
## Metode
|
||||
|
||||
1. `tools/parse_budget.py` nolasa likuma tekstu un visus 12 pielikumus. Katru drukāto skaitli tas pieraksta kopā ar tā nozīmi: fonds, plūsma, gads, būtība, mērķis (resors / programma / projekts), bloks, saistību veids un klasifikācijas kodi, ko skaitlis aptver.
|
||||
2. XML datnē tiek ierakstīti tikai naudas fakti (`Allocation`). Kopsummas, starpsummas un bilances netiek glabātas.
|
||||
3. `tools/verify_budget.py` pārbauda XML pret XSD un **katru drukāto skaitli aprēķina no jauna tikai no XML**. Abi rīki izmanto tos pašus summēšanas noteikumus (`tools/calc.py`). Skaitlis ir atjaunots, ja starpība ir mazāka par 0,5 euro (procentiem no IKP — 0,005).
|
||||
|
||||
## Rezultāts
|
||||
|
||||
| Pielikums | 2026: drukāti | 2026: atjaunoti | 2025: drukāti | 2025: atjaunoti |
|
||||
|---|---:|---:|---:|---:|
|
||||
| 1. Valsts konsolidētais budžets | 253 | 253 | 252 | 252 |
|
||||
| 2. Valsts budžeta ieņēmumi | 217 | 217 | 216 | 216 |
|
||||
| 3. Pamatbudžeta un speciālā budžeta kopsavilkums | 6 241 | 6 241 | 5 944 | 5 944 |
|
||||
| 4. Pamatbudžets pa programmām un apakšprogrammām | 8 160 | 8 160 | 7 863 | 7 863 |
|
||||
| 5. Speciālais budžets pa programmām un apakšprogrammām | 233 | 233 | 233 | 233 |
|
||||
| 6.–10. Mērķdotācijas pašvaldībām (kopsummas) | 14 | 14 | 14 | 14 |
|
||||
| 11. Ilgtermiņa saistības | 43 339 | 43 339 | 41 155 | 41 155 |
|
||||
| **Kopā** | **58 457** | **58 457 (100 %)** | **55 677** | **55 677 (100 %)** |
|
||||
|
||||
6.–10. pielikumā katra pašvaldības summa ir glabāta tieši (`Allocation` ar `recipient`). Pārbaude aprēķina pielikuma kopsummas un periodu kopsummas.
|
||||
|
||||
12. pielikums ir tukša aprēķina veidlapa. Skaitļu tajā nav.
|
||||
|
||||
Likuma teksts: 2026. gadā 81 pants, 2025. gadā 82 panti (`Provision`).
|
||||
|
||||
| Saturs XML | 2026 | 2025 |
|
||||
|---|---:|---:|
|
||||
| Naudas fakti (`Allocation`) | 6 400 | 6 322 |
|
||||
| — apropriācijas (budžeta gads) | 1 892 | 1 826 |
|
||||
| — maksimālie apjomi (nākamie divi gadi) | 838 | 796 |
|
||||
| — ieņēmumu prognozes | 392 | 388 |
|
||||
| — ilgtermiņa saistības | 2 919 | 2 947 |
|
||||
| — mērķdotācijas pašvaldībām | 359 | 365 |
|
||||
| Mērķi (`Purpose`), t. sk. projekti | 867 (243) | 834 (230) |
|
||||
| Klasifikāciju kodi (`ClassItem`), t. sk. fonda iekšējie transferti | 236 (11) | 233 (11) |
|
||||
| Resori ar VPK ID | 28 | 28 |
|
||||
|
||||
## Avotu īpatnības, kas atrastas pārbaudē
|
||||
|
||||
1. **Pielikumi ir SAP BW (BEx Analyzer) izdrukas.** Drukātajās tabulās klasifikācijas kodu nav, ir tikai nosaukumi ar atkāpēm. Kodi ir daļēji slēptajās lapās (`ZQZBC_PLN_*`, budžeta versija `D200`). Pārējos kodus piesaista pēc nosaukuma no klasifikāciju MK noteikumiem un Valsts kases datiem. Visām pielikumu rindām kods ir atrasts, izņemot „Resursi izdevumu segšanai” (aprēķināta kopsumma).
|
||||
2. **Atkāpju kļūda.** Dažos blokos „Ārvalstu finanšu palīdzība atmaksām valsts pamatbudžetam” (21200) ir ar atkāpi zem „Iestādes ieņēmumi no ārvalstu finanšu palīdzības” (21100), lai gan tie ir blakus kodi. Piemērs: 2026. gada 4. pielikums, Aizsardzības ministrijas programma 73.00.00: 9 372 926 = 3 200 000 + 6 172 926. Koku nosaka balsojums pa visiem blokiem, ko pārbauda pret koda struktūru.
|
||||
3. **11. pielikumā atkāpju nav.** Līmeņi ir nolasīti no tiem pašiem nosaukumiem 4. pielikumā. Saistību veidu kodi grupējas pa diviem cipariem (`01 01 10 00 00`). Viens projekts var parādīties vairākos saistību veidos (vispārīgajā un precīzākajā); glabāts tiek precīzākais.
|
||||
4. **Galvenes forma atšķiras.** 11. pielikuma speciālā budžeta daļā resors ir „18 Labklājības ministrija” (bez punkta), citur „18. Labklājības ministrija”.
|
||||
5. **Izkārtojums atšķiras starp gadiem.** 2025. gada pielikumi ir .xls, 2026. gada — .xlsx. 2025. gada 1. un 2. pielikumā ir papildu tukša pirmā aile. 2025. gada 7. pielikuma datne ir `7_PIELIKUMS_G.DOCX`.
|
||||
6. **Summas, kas likumā redzamas tikai apkopojuma līmenī.** Valsts aizņēmumi, aizdevumi un naudas līdzekļu izmaiņas 4. pielikumā ir tikai budžeta kopsavilkumā vai resora līmenī bez programmas. Tās glabātas tajā pašā līmenī: 2026. gadā 4 no 4. pielikuma un 6 no 3. pielikuma.
|
||||
7. **3. un 4. pielikums dažas summas rāda atšķirīgi.** 3. pielikums sadala pa blokiem (I pamatfunkcijas / II ES projekti) arī tās finansēšanas summas, kurām 4. pielikumā bloka nav — piemēram, Finanšu ministrijas aizdevumus (−334 457 337 euro). Tās ierakstītas ar bloku, ko norāda 3. pielikums, nemainot kopsummas: 4 pārklasifikācijas pa pāriem gan 2026., gan 2025. gadā.
|
||||
8. **Speciālā budžeta ieņēmumi nākamajiem gadiem** 2. pielikumā ir tikai valsts līmenī. Tie piesaistīti Labklājības ministrijai (18), jo tā ir vienīgais speciālā budžeta turētājs, un blokam „pamatfunkcijas”.
|
||||
9. **Budžeta bloks.** Programmu bloks (pamatfunkcijas / ES projekti) ņemts no Valsts kases izpildes datiem. 41 programmai, kurai izpildes datu nav, bloks noteikts pēc programmas koda (60.–85. programma — ES un ārvalstu finanšu palīdzība). Visas 3. pielikuma bloku summas atjaunojas.
|
||||
10. **Kļūda klasifikācijas tekstā.** Ieņēmumu klasifikācijas tīmekļa tekstā ir „I estādes ieņēmumi no ārvalstu finanšu palīdzības” (ar atstarpi). Nosaukums salīdzināts, šo atstarpi neņemot vērā.
|
||||
|
||||
## Atkārtošana
|
||||
|
||||
```
|
||||
python tools/parse_budget.py 2026 source/2026/likums.html source/2026 build/2026
|
||||
python tools/verify_budget.py build/2026 2026
|
||||
```
|
||||
|
||||
Kopsavilkums ir `verification/lv-vb-GGGG.verify.json`. Pilns pārbaudes saraksts (`build/GGGG/lv-vb-GGGG.checks.json`) tiek izveidots no jauna un repozitorijā netiek glabāts.
|
||||
Reference in New Issue
Block a user