From 5d89c7352147e347e01f0ac370c65b1b8a5e6018 Mon Sep 17 00:00:00 2001 From: Rihards Gailums Date: Sun, 11 Oct 2026 06:21:07 +0000 Subject: [PATCH] =?UTF-8?q?Terminolo=C4=A3ija:=20=E2=80=9Efinan=C5=A1u=20f?= =?UTF-8?q?akts=E2=80=9D=20=E2=80=9Enaudas=20fakta=E2=80=9D=20viet=C4=81?= =?UTF-8?q?=20(v0.1.2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Pārlūkā, README, docs, XSD un ODCS aprakstos „naudas fakts” → „finanšu fakts”, „kam nauda paredzēta” → „kam finansējums paredzēts” u. c.; datu struktūra un identifikatori nemainās - Pārlūks: skaidrojums „Tabulās nav klasifikācijas kodu” ar piemēru; virsraksts „Kas datukopā vēl nav iekļauts” Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016679RwmHsuTFfxt26wP6rk --- CHANGELOG.md | 5 +++ README.md | 12 ++++---- contracts/B15-valsts-budzets.odcs.yaml | 8 ++--- docs/IDENTIFIKATORI.md | 4 +-- docs/MODELIS.md | 12 ++++---- docs/SADERIBA.md | 6 ++-- editor/Budget-as-Code.html | 42 +++++++++++++------------- schemas/valsts-budzets-0.1.xsd | 14 ++++----- 8 files changed, 54 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8168208..34b0e93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Izmaiņu žurnāls +## 0.1.2 — 2026-10-11 + +- Terminoloģija: „naudas fakts” → „finanšu fakts” un līdzīgi formulējumi pārlūkā, dokumentācijā, shēmas un datu līguma aprakstos (datu struktūra nemainās). +- Pārlūks: precizēts skaidrojums par klasifikācijas kodu trūkumu pielikumu tabulās. + ## 0.1.1 — 2026-10-11 - Pārlūks `editor/Budget-as-Code.html`: viena HTML datne ar abiem budžetiem (2025, 2026), XSD un pārbaudes rezultātiem; cilnes Problēma, Budžets, 2025 ↔ 2026, Atradumi, Saderība, Modelis. diff --git a/README.md b/README.md index a15741d..4bcf867 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,19 @@ Autors: PPP Asociācija (PPPA), Valsts Pirmkods (VPK). Shēmas versija 0.1, meln ## Kāpēc šāds modelis -Pieņemtais budžets šobrīd ir likuma teksts ar 12 pielikumiem (Excel un Word datnes), un katram pielikumam ir savs izkārtojums. Šis modelis neatkārto pielikumu formu. Tas apraksta budžetu kā lēmumu: kurš drīkst saņemt vai izlietot cik naudas, kādam mērķim un pēc kādiem noteikumiem. Pielikumi ir šo datu skati. +Pieņemtais budžets šobrīd ir likuma teksts ar 12 pielikumiem (Excel un Word datnes), un katram pielikumam ir savs izkārtojums. Šis modelis neatkārto pielikumu formu. Tas apraksta budžetu kā lēmumu: kurš drīkst saņemt vai izlietot finanšu līdzekļus, kādā apmērā, kādam mērķim un pēc kādiem noteikumiem. Pielikumi ir šo datu skati. ``` Budget (likuma versija, piemēram lv-vb-2026) ├── Source avota dokumenti ar SHA-256 (likuma teksts, 12 pielikumi) ├── Provision likuma panti (teksts) - ├── Parameter lielumi, kas nav naudas piešķīrumi (IKP prognoze, informatīvie rādītāji) - ├── Actor kurš tur vai saņem naudu: resors (ar VPK ID), pašvaldība, nesadalītie līdzekļi - ├── Purpose kam nauda paredzēta: resors → programma → apakšprogramma → projekts; mērķdotācijas + ├── Parameter lielumi, kas nav finanšu piešķīrumi (IKP prognoze, informatīvie rādītāji) + ├── Actor kurš tur vai saņem finansējumu: resors (ar VPK ID), pašvaldība, nesadalītie līdzekļi + ├── Purpose kam finansējums paredzēts: resors → programma → apakšprogramma → projekts; mērķdotācijas ├── Indicator rezultatīvie rādītāji (budžeta paskaidrojumos; likumā nav — rezervēts) ├── Rule mašīnlasāmi noteikumi no likuma teksta (rezervēts) ├── ClassItem izmantotie klasifikāciju kodi ar nosaukumiem un vecākkodu - └── Allocation viens naudas fakts: plūsma × fonds × būtība × gads × turētājs × mērķis × bloks × kods × summa + └── Allocation viens finanšu fakts: plūsma × fonds × būtība × gads × turētājs × mērķis × bloks × kods × summa ``` Visi ieraksti ir plakani un saistīti ar identifikatoriem. Kopsummas, starpsummas un bilances datnē netiek glabātas — tās aprēķina. Sīkāk: [docs/MODELIS.md](docs/MODELIS.md). @@ -57,7 +57,7 @@ Abi gadi izmanto to pašu shēmu un tos pašus rīkus. Metode, rezultāti pa pie | Datne | Saturs | |---|---| -| `data/lv-vb-2026.xml` | 2026. gada valsts budžeta likums (LV 2025/244): 81 pants, 12 pielikumu dati, 6 400 naudas faktu | +| `data/lv-vb-2026.xml` | 2026. gada valsts budžeta likums (LV 2025/244): 81 pants, 12 pielikumu dati, 6 400 finanšu faktu | | `data/lv-vb-2025.xml` | 2025. gada valsts budžeta likums (LV 2024/248): 82 panti, 12 pielikumu dati | Datnes nosaukums ir budžeta identifikators. diff --git a/contracts/B15-valsts-budzets.odcs.yaml b/contracts/B15-valsts-budzets.odcs.yaml index 4cd5296..6994eb6 100644 --- a/contracts/B15-valsts-budzets.odcs.yaml +++ b/contracts/B15-valsts-budzets.odcs.yaml @@ -363,7 +363,7 @@ schema: logicalType: string required: true description: revenue — valsts ieņēmumi (nodokļi, nodevas), ko administrē resors; resource — resursi izdevumu segšanai konkrētam mērķim (dotācija, - pašu ieņēmumi, transferti, ārvalstu palīdzība); expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, naudas līdzekļu izmaiņas). + pašu ieņēmumi, transferti, ārvalstu palīdzība); expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, līdzekļu atlikumu izmaiņas). quality: - type: library rule: validValues @@ -749,7 +749,7 @@ schema: logicalType: object physicalType: xml-element physicalName: Allocation - description: Viens naudas fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf. + description: Viens finanšu fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf. properties: - name: id logicalType: string @@ -764,7 +764,7 @@ schema: logicalType: string required: true description: revenue — valsts ieņēmumi (nodokļi, nodevas), ko administrē resors; resource — resursi izdevumu segšanai konkrētam mērķim (dotācija, - pašu ieņēmumi, transferti, ārvalstu palīdzība); expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, naudas līdzekļu izmaiņas). + pašu ieņēmumi, transferti, ārvalstu palīdzība); expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, līdzekļu atlikumu izmaiņas). quality: - type: library rule: validValues @@ -932,4 +932,4 @@ customProperties: - property: rootElement value: Budget - property: identifiers - value: lv-vb-GGGG; pants .pNNN; resors .ac.rSS; programma .pr.SS.PP.AA.00; projekts .pj.…; naudas fakts .a.pNN.r.y + value: lv-vb-GGGG; pants .pNNN; resors .ac.rSS; programma .pr.SS.PP.AA.00; projekts .pj.…; finanšu fakts .a.pNN.r.y diff --git a/docs/IDENTIFIKATORI.md b/docs/IDENTIFIKATORI.md index 82f6f88..6efa7c7 100644 --- a/docs/IDENTIFIKATORI.md +++ b/docs/IDENTIFIKATORI.md @@ -24,9 +24,9 @@ Datnes nosaukums = budžeta identifikators: `data/lv-vb-2026.xml`. | Programma, apakšprogramma | `…pr.SS.PP.AA.00` | `lv-vb-2026.pr.17.23.06.00` | | Projekts (11. pielikums) | `…pj.SS.PP.AA.00.` | `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.y[l][-N]` | `lv-vb-2026.a.p04.r89.y2026` | +| Finanšu fakts | `…a.pNN.r.y[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. +Finanšu 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 diff --git a/docs/MODELIS.md b/docs/MODELIS.md index a3e8df1..e4521bb 100644 --- a/docs/MODELIS.md +++ b/docs/MODELIS.md @@ -2,22 +2,22 @@ ## 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. +Budžets ir lēmums par periodu: kurš drīkst saņemt vai izlietot finanšu līdzekļus, kādā apmērā, 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` | +| `Parameter` | Lielums, kas nav finanšu piešķīrums | `name`, `code`, `year`, `value`, `unit` | +| `Actor` | Kurš tur vai saņem finansējumu | `kind` (resort / institution / municipality / unallocated), `code` (resora kods), `vpk` (VPK ID) | +| `Purpose` | Kam finansējums paredzēts (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 | +| `Allocation` | Viens finanšu fakts | skatīt 2. nodaļu | -## 2. Naudas fakts (`Allocation`) +## 2. Finanšu fakts (`Allocation`) | Lauks | Vērtības | Nozīme | |---|---|---| diff --git a/docs/SADERIBA.md b/docs/SADERIBA.md index 54a2219..287d773 100644 --- a/docs/SADERIBA.md +++ b/docs/SADERIBA.md @@ -3,7 +3,7 @@ ## 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. +2. XML datnē tiek ierakstīti tikai finanšu 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 @@ -27,7 +27,7 @@ Likuma teksts: 2026. gadā 81 pants, 2025. gadā 82 panti (`Provision`). | Saturs XML | 2026 | 2025 | |---|---:|---:| -| Naudas fakti (`Allocation`) | 6 400 | 6 322 | +| Finanšu 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 | @@ -44,7 +44,7 @@ Likuma teksts: 2026. gadā 81 pants, 2025. gadā 82 panti (`Provision`). 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. +6. **Summas, kas likumā redzamas tikai apkopojuma līmenī.** Valsts aizņēmumi, aizdevumi un līdzekļu atlikumu 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. diff --git a/editor/Budget-as-Code.html b/editor/Budget-as-Code.html index be9284a..5ba15d5 100644 --- a/editor/Budget-as-Code.html +++ b/editor/Budget-as-Code.html @@ -15795,17 +15795,17 @@ Pārejas noteikums - 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. + Budžets ir lēmums par periodu: kurš drīkst saņemt vai izlietot finanšu līdzekļus, kādā apmērā, kādam mērķim un pēc kādiem noteikumiem. Modelis nav likuma pielikumu izkārtojuma kopija. Pielikumi ir skati, kurus var atjaunot no šiem ierakstiem. Ierakstu veidi: Source — avota dokuments (likuma teksts, pielikuma datne) ar kontrolsummu Provision — likuma panta daļa (teksts) - Parameter — likumā vai pielikumā noteikts lielums, kas nav naudas piešķīrums (piemēram, IKP prognoze) - Actor — kurš tur, dod vai saņem naudu (resors, iestāde, pašvaldība) - Purpose — kam nauda paredzēta (resors, programma, apakšprogramma, projekts) kā koks + Parameter — likumā vai pielikumā noteikts lielums, kas nav finanšu piešķīrums (piemēram, IKP prognoze) + Actor — kurš tur, dod vai saņem finansējumu (resors, iestāde, pašvaldība) + Purpose — kam finansējums paredzēts (resors, programma, apakšprogramma, projekts) kā koks ClassItem — izmantotie klasifikāciju kodi ar nosaukumiem un vecākkodu - Allocation — viens naudas fakts + Allocation — viens finanšu fakts Indicator — mērķa sasniegšanas rādītājs (no budžeta paskaidrojumiem; likumā nav) Rule — mašīnlasāms noteikums vai ierobežojums no likuma teksta (piemēram, pārdales robeža) Kopsummas, starpsummas un bilance netiek glabātas: tās aprēķina no Allocation ierakstiem. @@ -15846,7 +15846,7 @@ Pārejas noteikums revenue — valsts ieņēmumi (nodokļi, nodevas), ko administrē resors; resource — resursi izdevumu segšanai konkrētam mērķim (dotācija, pašu ieņēmumi, transferti, ārvalstu palīdzība); - expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, naudas līdzekļu izmaiņas). + expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, līdzekļu atlikumu izmaiņas). @@ -16016,7 +16016,7 @@ Pārejas noteikums - Viens naudas fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf. + Viens finanšu fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf. @@ -16225,7 +16225,7 @@ function vProblem(root){
${xlsx + docx + 1}datnes vienā budžeta likumā (teksts un pielikumi)
${NF.format(printed)}skaitļi, kas drukāti 2026. gada pielikumos
-
${NF.format(nA)}atsevišķi naudas fakti, no kuriem visi šie skaitļi izriet
+
${NF.format(nA)}atsevišķi finanšu fakti, no kuriem visi šie skaitļi izriet
${(printed / nA).toLocaleString("lv-LV", {maximumFractionDigits: 1})}×vidēji tik reižu viens fakts parādās kā drukāts skaitlis

Kur budžets atrodas

@@ -16239,7 +16239,7 @@ function vProblem(root){

Šī lapa aptver 1. līmeni: to, ko pieņem Saeima. Tā ir juridiski saistošā budžeta daļa, un pārējie līmeņi to detalizē.

Kāpēc pielikumi nav dati

    -
  1. Kodu nav. Pielikumi ir izdrukas no Finanšu ministrijas SAP BW sistēmas (BEx Analyzer). Tabulās ir nosaukumi ar atkāpēm, bet nav ekonomiskās, ieņēmumu un finansēšanas klasifikācijas kodu. Kodi ir daļēji slēptās darblapās, pārējie jāatrod pēc nosaukuma klasifikāciju MK noteikumos.
  2. +
  3. Tabulās nav klasifikācijas kodu. Pielikumi ir izdrukas no Finanšu ministrijas SAP BW sistēmas (BEx Analyzer). Katrā rindā ir tikai nosaukums ar atkāpi, piemēram, „Atlīdzība”, bet nav ekonomiskās klasifikācijas koda 1000. Tāpat trūkst ieņēmumu un finansēšanas klasifikācijas kodu. Lai programma varētu noteikt, kas rindā ir, kods jāatrod pēc nosaukuma klasifikāciju MK noteikumos vai pielikuma slēptajās darblapās.
  4. Katram pielikumam ir savs izkārtojums. Rindas, ailes, galvenes un starpsummas atšķiras. 11. pielikumā nav arī atkāpju, tāpēc līmeņi jāatjauno pēc citiem pielikumiem.
  5. Viens skaitlis ir drukāts daudzās vietās. Apakšprogrammas summa atkārtojas programmā, resorā, 3. pielikuma kopsavilkumā un 1. pielikumā. Ja kāda vieta nesakrīt, tas nav redzams bez pārrēķina.
  6. Saites starp pielikumiem nav pierakstītas. Programma 4. pielikumā, tās projekti 11. pielikumā un resora kopsumma 3. pielikumā ir saistīti tikai ar nosaukumiem un kodiem tekstā.
  7. @@ -16263,7 +16263,7 @@ function vProblem(root){
    • Viena XSD shēma visiem gadiem un viena XML datne katrai likuma versijai.
    • Modelis apraksta budžetu kā lēmumu: kurš (resors ar VPK ID), cik (summa), kam (programma, apakšprogramma, projekts), kad (gads), no kāda fonda un pēc kādas klasifikācijas.
    • -
    • Katrs naudas fakts ir glabāts vienreiz, no detalizētākā avota. Kopsummas, starpsummas un bilances tiek aprēķinātas.
    • +
    • Katrs finanšu fakts ir glabāts vienreiz, no detalizētākā avota. Kopsummas, starpsummas un bilances tiek aprēķinātas.
    • Katram faktam ir pastāvīgs identifikators un atsauce uz avota datni un rindu.
    • Pārbaude: no XML atjaunoti visi pielikumos drukātie skaitļi abos gados (sk. Saderība).
    @@ -16475,7 +16475,7 @@ function bSearch(root, M){ html = sec("Programmas, apakšprogrammas, projekti", pur.length, pur.map(p => `
    ${esc(KIND[p.kind] || p.kind)} ${esc(p.code)} ${esc(p.name || "")}${esc(p.id)}
    `).join("")) + sec("Dalībnieki", act.length, act.map(a => `
    ${esc(a.name)}${esc(a.id)}${a.vpk ? " · VPK " + esc(a.vpk) : ""}
    `).join("")) + sec("Klasifikācijas kodi", cls.length, cls.map(([k, c]) => `
    ${esc(c.scheme)} ${esc(c.code)} ${esc(c.name)}
    `).join("")) + - sec("Naudas fakti", al.length, al.map(a => `
    ${fmt(a.amt)} € ${esc(FLOW[a.flow])}, ${esc(NATURE[a.nature])}, ${a.year}${esc(a.id)}
    `).join("")) + + sec("Finanšu fakti", al.length, al.map(a => `
    ${fmt(a.amt)} € ${esc(FLOW[a.flow])}, ${esc(NATURE[a.nature])}, ${a.year}${esc(a.id)}
    `).join("")) + sec("Likuma panti", pr.length, pr.map(p => `
    ${esc(p.article)}. pants ${esc(p.text.replace(/^\s*\d+\.\s*pants\.\s*/, "").slice(0, 160))}…
    `).join("")) || `
    Nekas nav atrasts
    `; } else html = `
    Ierakstiet vismaz 2 rakstzīmes: nosaukumu, kodu (piem. 41.01.00, 7131, F40020000), identifikatoru vai summu.
    `; root.innerHTML = head("Meklēt", `Meklē nosaukumos, kodos, identifikatoros, summās un likuma tekstā.`, ``) + html; @@ -16528,7 +16528,7 @@ function showPurpose(M, pid){ ${breakdown(M, ceil("expenditure"), ys1, `Izdevumi nākamajos gados (3. pielikums)`)} ${breakdown(M, comm, cy, `Ilgtermiņa saistības: izdevumi (11. pielikums)`)} ${kids.length ? `

    Ietver (${kids.length})

    ${kids.map(k => ``).join("")}
    ${esc(k.code)}${esc(k.name || (KIND[k.kind] + " " + k.code))}${fmt0(G(M, k.id, "expenditure", k.kind === "project" ? "commitment" : "appropriation", M.year))}
    ` : ""} - ${direct.length ? `

    Naudas fakti, kas piesaistīti tieši šim mērķim (${direct.length})

    ${direct.slice(0, 400).map(a => ``).join("")}
    AvotsPlūsma / būtībaKodsGadsSumma
    ${M.src[a.src] ? `${esc(srcLabel(M, a))}` : ""}${esc(FLOW[a.flow])}
    ${esc(NATURE[a.nature])}${a.fund === "special" ? ", spec." : ""}${a.partOf ? ", t. sk." : ""}
    ${esc(a.code)}${a.commitmentKind ? `
    ${esc(a.commitmentKind)}` : ""}
    ${a.untilEnd === "true" ? "līdz beigām" : a.year}${fmt(a.amt)}

    Klikšķis uz summas nokopē fakta identifikatoru.

    ` : ""}`; + ${direct.length ? `

    Finanšu fakti, kas piesaistīti tieši šim mērķim (${direct.length})

    ${direct.slice(0, 400).map(a => ``).join("")}
    AvotsPlūsma / būtībaKodsGadsSumma
    ${M.src[a.src] ? `${esc(srcLabel(M, a))}` : ""}${esc(FLOW[a.flow])}
    ${esc(NATURE[a.nature])}${a.fund === "special" ? ", spec." : ""}${a.partOf ? ", t. sk." : ""}
    ${esc(a.code)}${a.commitmentKind ? `
    ${esc(a.commitmentKind)}` : ""}
    ${a.untilEnd === "true" ? "līdz beigām" : a.year}${fmt(a.amt)}

    Klikšķis uz summas nokopē fakta identifikatoru.

    ` : ""}`; openDrawer(`
    ${esc(KIND[p.kind] || "")} · ${esc(M.year)}. gada likums

    ${esc(p.code)} ${esc(p.name || "")}

    `, body); } function showClass(M, k){ @@ -16544,7 +16544,7 @@ function showClass(M, k){ function showAlloc(M, id){ const a = M.byId[id]; if (!a) return; const s = M.src[a.src]; - openDrawer(`
    Naudas fakts

    ${fmt(a.amt)} €

    `, `
    ${Object.entries(a).filter(([k]) => !["amt", "k", "intra", "yk", "ch", "res"].includes(k)).map(([k, v]) => `
    ${esc(k)}
    ${k === "purpose" && M.pur[v] ? `${esc(v)}` : esc(v)}
    `).join("")}
    ${s ? `

    Avots

    ${esc(s.title)}, ${a.srcRow ? esc(a.srcRow) + ". rinda" : ""}
    SHA-256 ${esc(s.sha256)}

    ` : ""}`); + openDrawer(`
    Finanšu fakts

    ${fmt(a.amt)} €

    `, `
    ${Object.entries(a).filter(([k]) => !["amt", "k", "intra", "yk", "ch", "res"].includes(k)).map(([k, v]) => `
    ${esc(k)}
    ${k === "purpose" && M.pur[v] ? `${esc(v)}` : esc(v)}
    `).join("")}
    ${s ? `

    Avots

    ${esc(s.title)}, ${a.srcRow ? esc(a.srcRow) + ". rinda" : ""}
    SHA-256 ${esc(s.sha256)}

    ` : ""}`); } /* ============================================================ 2025 ↔ 2026 */ @@ -16585,7 +16585,7 @@ function vFindings(root){ ["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."], ["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”."], ["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."], - ["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."], + ["Summas, kas likumā redzamas tikai apkopojuma līmenī", "Valsts aizņēmumi, aizdevumi un līdzekļu atlikumu 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."], ["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ā."], ["Speciālā budžeta ieņēmumi nākamajiem gadiem", "2. pielikumā tie 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”."], ["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."], @@ -16603,7 +16603,7 @@ function vFindings(root){

    Pārveidojot abus likumus un pārrēķinot katru drukāto skaitli, atklājās vairākas avotu īpatnības. Neviena no tām nemaina likuma summas. Tās parāda, kāpēc pielikumi nav uzticams datu avots bez pārbaudes.

    Galvenais

      -
    • Viss pieņemtā budžeta saturs ietilpst vienā plakanā XML datnē ar deviņiem ierakstu veidiem. 2026. gadā tie ir ${NF.format(M.A.length)} naudas fakti, ${M.prov.length} panti, ${Object.keys(M.pur).length} mērķi un ${Object.keys(M.cls).length} klasifikācijas kodi.
    • +
    • Viss pieņemtā budžeta saturs ietilpst vienā plakanā XML datnē ar deviņiem ierakstu veidiem. 2026. gadā tie ir ${NF.format(M.A.length)} finanšu fakti, ${M.prov.length} panti, ${Object.keys(M.pur).length} mērķi un ${Object.keys(M.cls).length} klasifikācijas kodi.
    • No šiem faktiem atjaunoti visi pielikumos drukātie skaitļi: ${NF.format(V26.reproduced || 0)} no ${NF.format(V26.total || 0)} (2026) un ${NF.format(V25.reproduced || 0)} no ${NF.format(V25.total || 0)} (2025).
    • Pielikumos viens fakts vidēji parādās ${(V26.total / M.A.length).toLocaleString("lv-LV", {maximumFractionDigits: 1})} reizes: apakšprogrammā, programmā, resorā, kopsavilkumos.
    • Abi gadi izmanto to pašu shēmu un tos pašus rīkus. Atšķirības starp gadiem ir tikai datņu formātā, nevis budžeta struktūrā.
    • @@ -16614,7 +16614,7 @@ function vFindings(root){
      Konsolidētais budžets (1. pielikums)

      Ieņēmumi ${fmt(s.KA)}, izdevumi ${fmt(s.KB)}, finansiālā bilance ${fmt(s.bal)} euro. Aprēķināti no ieņēmumiem un izdevumiem abos fondos, atņemot transfertus starp fondiem (EKK 7110, 7120, 9110, 9120): ${fmt(s.T)} euro.

      Avotu īpatnības

      ${F.map((f, i) => `
      ${i + 1}. ${esc(f[0])}

      ${esc(f[1])}

      `).join("")} -

      Ko datukopā vēl nav

      +

      Kas datukopā vēl nav iekļauts

      • Rezultatīvie rādītāji (Indicator) ir budžeta paskaidrojumos, nevis likumā. Shēmā ieraksts ir rezervēts.
      • Likuma noteikumi mašīnlasāmā formā (Rule), piemēram, pārdales robežas. Shēmā ieraksts ir rezervēts.
      • @@ -16634,7 +16634,7 @@ function vCompat(root){

        Atpakaļsaderība ar likumu

        Katrs pielikumos drukātais skaitlis ir aprēķināts tikai no XML datnes un salīdzināts ar publicēto vērtību. Skaitlis ir atjaunots, ja starpība ir mazāka par 0,5 euro (procentiem no IKP — 0,005).

        1. tools/parse_budget.py nolasa likuma tekstu un visus 12 pielikumus. Katram drukātajam skaitlim tas pieraksta nozīmi: fonds, plūsma, gads, būtība, mērķis, bloks, saistību veids un kodi, ko skaitlis aptver.
        2. -
        3. XML datnē ieraksta tikai naudas faktus. Kopsummas, starpsummas un bilances netiek glabātas.
        4. +
        5. XML datnē ieraksta tikai finanšu faktus. Kopsummas, starpsummas un bilances netiek glabātas.
        6. tools/verify_budget.py pārbauda XML pret XSD un katru drukāto skaitli aprēķina no jauna. Abi rīki izmanto tos pašus summēšanas noteikumus (tools/calc.py).
        ${ids.map(id => ``).join("")} ${keys.map(k => `${ids.map(id => cell(id, k)).join("")}`).join("")} @@ -16652,15 +16652,15 @@ function vCompat(root){ function vModel(root){ const M = cur(); const cnt = {Source: Object.keys(M.src).length, Provision: M.prov.length, Parameter: M.par.length, Actor: Object.keys(M.actors).length, Purpose: Object.keys(M.pur).length, Indicator: M.ind.length, Rule: M.rules.length, ClassItem: Object.keys(M.cls).length, Allocation: M.A.length}; - const REC = [["Budget", "Viena budžeta likuma versija", "id, year, horizonTo, status, 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, vpk"], ["Purpose", "Kam nauda paredzēta (koks)", "kind (resort / programme / subprogramme / project / grant), code, parent, holder, function"], ["Indicator", "Rezultatīvais rādītājs (rezervēts)", "purpose, unit, year, base, target"], ["Rule", "Mašīnlasāms likuma noteikums (rezervēts)", "kind (limit / condition / permission), parameter, value, provision"], ["ClassItem", "Izmantotais klasifikācijas kods", "scheme, code, name, parent, parentScheme, intraFund"], ["Allocation", "Viens naudas fakts", "flow, fund, nature, year, untilEnd, periodFrom/To, holder, recipient, purpose, block, commitmentKind, function, scheme, code, amount, partOf, src, srcRow"]]; - const IDS = [["Budžeta likums", "lv-vb-GGGG", M.id], ["Avots", "…src.pNN", M.id + ".src.p04"], ["Pants", "…pNNN", M.id + ".p017"], ["Parametrs", "…par.-GGGG", M.id + ".par.ikp-" + (M.year + 1)], ["Resors", "…ac.rSS (VPK ID atribūtā vpk)", M.id + ".ac.r13"], ["Pašvaldība", "…ac.m-", M.id + ".ac.m-rigas-valstspilseta"], ["Programma, apakšprogramma", "…pr.SS.PP.AA.00", M.id + ".pr.17.23.06.00"], ["Projekts", "…pj.SS.PP.AA.00.", M.id + ".pj.12.67.02.00.ceki-em-002"], ["Mērķdotācija", "…pr.gNN", M.id + ".pr.g06"], ["Naudas fakts", "…a.pNN.r.y[l][-N]", M.id + ".a.p04.r93." + "y" + M.year]]; + const REC = [["Budget", "Viena budžeta likuma versija", "id, year, horizonTo, status, act, published, version"], ["Source", "Avota dokuments", "kind (lawText / annex / form), annex, url, sha256"], ["Provision", "Likuma pants (teksts)", "article, chapter"], ["Parameter", "Lielums, kas nav finanšu piešķīrums", "name, code, year, value, unit"], ["Actor", "Kurš tur vai saņem finansējumu", "kind (resort / institution / municipality / unallocated), code, vpk"], ["Purpose", "Kam finansējums paredzēts (koks)", "kind (resort / programme / subprogramme / project / grant), code, parent, holder, function"], ["Indicator", "Rezultatīvais rādītājs (rezervēts)", "purpose, unit, year, base, target"], ["Rule", "Mašīnlasāms likuma noteikums (rezervēts)", "kind (limit / condition / permission), parameter, value, provision"], ["ClassItem", "Izmantotais klasifikācijas kods", "scheme, code, name, parent, parentScheme, intraFund"], ["Allocation", "Viens finanšu fakts", "flow, fund, nature, year, untilEnd, periodFrom/To, holder, recipient, purpose, block, commitmentKind, function, scheme, code, amount, partOf, src, srcRow"]]; + const IDS = [["Budžeta likums", "lv-vb-GGGG", M.id], ["Avots", "…src.pNN", M.id + ".src.p04"], ["Pants", "…pNNN", M.id + ".p017"], ["Parametrs", "…par.-GGGG", M.id + ".par.ikp-" + (M.year + 1)], ["Resors", "…ac.rSS (VPK ID atribūtā vpk)", M.id + ".ac.r13"], ["Pašvaldība", "…ac.m-", M.id + ".ac.m-rigas-valstspilseta"], ["Programma, apakšprogramma", "…pr.SS.PP.AA.00", M.id + ".pr.17.23.06.00"], ["Projekts", "…pj.SS.PP.AA.00.", M.id + ".pj.12.67.02.00.ceki-em-002"], ["Mērķdotācija", "…pr.gNN", M.id + ".pr.g06"], ["Finanšu fakts", "…a.pNN.r.y[l][-N]", M.id + ".a.p04.r93." + "y" + M.year]]; const STORE = [["Izdevumi, resursi, finansēšana budžeta gadā", "4. un 5. pielikums — 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"], ["Nodevas pa administrējošām ministrijām", "2. pielikums, partOf uz 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"], ["IKP prognoze", "1. pielikums (Parameter)"], ["Viss pārējais: kopsummas, bilances, 1. pielikums, 3. pielikuma budžeta gads", "aprēķina"]]; root.innerHTML = `

        Modelis

        -

        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. Pielikumi ir šo datu skati.

        +

        Budžets ir lēmums par periodu: kurš drīkst saņemt vai izlietot finanšu līdzekļus, kādā apmērā, kādam mērķim un pēc kādiem noteikumiem. Pielikumi ir šo datu skati.

        Shēma urn:pppa:vpk:budzets:0.1. Viens saknes elements, deviņi plakani ierakstu veidi, saistīti ar identifikatoriem. Rādīts: ${esc(M.id)} (${esc(M.published)}, versija ${esc(M.version)}).

        Pielikums${id.slice(-4)}: drukāti${id.slice(-4)}: atjaunoti
        ${k}. ${esc(AN[k])}
        ${REC.map(r => ``).join("")}
        IerakstsKas tas irGalvenie lauki${esc(M.year)}
        ${r[0]}${r[1]}${esc(r[2])}${r[0] === "Budget" ? 1 : NF.format(cnt[r[0]] || 0)}
        -

        Naudas fakta vērtības

        +

        Finanšu fakta vērtības

        diff --git a/schemas/valsts-budzets-0.1.xsd b/schemas/valsts-budzets-0.1.xsd index 76c1434..74e383d 100644 --- a/schemas/valsts-budzets-0.1.xsd +++ b/schemas/valsts-budzets-0.1.xsd @@ -12,17 +12,17 @@ - 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. + Budžets ir lēmums par periodu: kurš drīkst saņemt vai izlietot finanšu līdzekļus, kādā apmērā, kādam mērķim un pēc kādiem noteikumiem. Modelis nav likuma pielikumu izkārtojuma kopija. Pielikumi ir skati, kurus var atjaunot no šiem ierakstiem. Ierakstu veidi: Source — avota dokuments (likuma teksts, pielikuma datne) ar kontrolsummu Provision — likuma panta daļa (teksts) - Parameter — likumā vai pielikumā noteikts lielums, kas nav naudas piešķīrums (piemēram, IKP prognoze) - Actor — kurš tur, dod vai saņem naudu (resors, iestāde, pašvaldība) - Purpose — kam nauda paredzēta (resors, programma, apakšprogramma, projekts) kā koks + Parameter — likumā vai pielikumā noteikts lielums, kas nav finanšu piešķīrums (piemēram, IKP prognoze) + Actor — kurš tur, dod vai saņem finansējumu (resors, iestāde, pašvaldība) + Purpose — kam finansējums paredzēts (resors, programma, apakšprogramma, projekts) kā koks ClassItem — izmantotie klasifikāciju kodi ar nosaukumiem un vecākkodu - Allocation — viens naudas fakts + Allocation — viens finanšu fakts Indicator — mērķa sasniegšanas rādītājs (no budžeta paskaidrojumiem; likumā nav) Rule — mašīnlasāms noteikums vai ierobežojums no likuma teksta (piemēram, pārdales robeža) Kopsummas, starpsummas un bilance netiek glabātas: tās aprēķina no Allocation ierakstiem. @@ -63,7 +63,7 @@ revenue — valsts ieņēmumi (nodokļi, nodevas), ko administrē resors; resource — resursi izdevumu segšanai konkrētam mērķim (dotācija, pašu ieņēmumi, transferti, ārvalstu palīdzība); - expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, naudas līdzekļu izmaiņas). + expenditure — izdevumi; financing — finansēšana (aizņēmumi, aizdevumi, līdzekļu atlikumu izmaiņas). @@ -233,7 +233,7 @@ - Viens naudas fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf. + Viens finanšu fakts. Kopsummas aprēķina, saskaitot ierakstus bez partOf.
        flow${Object.entries(FLOW).map(([k, v]) => `${k} — ${v}`).join("; ")}
        fund${Object.entries(FUND).map(([k, v]) => `${k} — ${v}`).join("; ")}