cry-klikvet-logic 1.0.708 → 1.0.711

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.
Files changed (73) hide show
  1. package/dist/index-browser.d.mts +18 -0
  2. package/dist/index-browser.d.mts.map +1 -1
  3. package/dist/index-browser.mjs +12 -0
  4. package/dist/index-browser.mjs.map +1 -1
  5. package/dist/index.d.mts +18 -0
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +12 -0
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/izvozRacunov/db.d.mts +26 -0
  10. package/dist/izvozRacunov/db.d.mts.map +1 -0
  11. package/dist/izvozRacunov/db.mjs +6 -0
  12. package/dist/izvozRacunov/db.mjs.map +1 -0
  13. package/dist/izvozRacunov/generirajIzvoz.d.mts +48 -0
  14. package/dist/izvozRacunov/generirajIzvoz.d.mts.map +1 -0
  15. package/dist/izvozRacunov/generirajIzvoz.mjs +63 -0
  16. package/dist/izvozRacunov/generirajIzvoz.mjs.map +1 -0
  17. package/dist/izvozRacunov/izvoziRacune.d.mts +58 -0
  18. package/dist/izvozRacunov/izvoziRacune.d.mts.map +1 -0
  19. package/dist/izvozRacunov/izvoziRacune.mjs +578 -0
  20. package/dist/izvozRacunov/izvoziRacune.mjs.map +1 -0
  21. package/dist/izvozRacunov/oznake.d.mts +41 -0
  22. package/dist/izvozRacunov/oznake.d.mts.map +1 -0
  23. package/dist/izvozRacunov/oznake.mjs +88 -0
  24. package/dist/izvozRacunov/oznake.mjs.map +1 -0
  25. package/dist/izvozRacunov/schemas/izvozRacunov.schema.json +285 -0
  26. package/dist/izvozRacunov/schemas/izvozRacunov.xsd +400 -0
  27. package/dist/izvozRacunov/serializirajJson.d.mts +16 -0
  28. package/dist/izvozRacunov/serializirajJson.d.mts.map +1 -0
  29. package/dist/izvozRacunov/serializirajJson.mjs +13 -0
  30. package/dist/izvozRacunov/serializirajJson.mjs.map +1 -0
  31. package/dist/izvozRacunov/serializirajXml.d.mts +18 -0
  32. package/dist/izvozRacunov/serializirajXml.d.mts.map +1 -0
  33. package/dist/izvozRacunov/serializirajXml.mjs +309 -0
  34. package/dist/izvozRacunov/serializirajXml.mjs.map +1 -0
  35. package/dist/q-mojPromet.d.mts +1 -1
  36. package/dist/q-promet.d.mts +2 -2
  37. package/dist/q-racunovodji.d.mts +1 -1
  38. package/dist/q-zakljucek-blagajne.d.mts +2 -2
  39. package/dist/racunovodstvo/konti.d.mts +139 -0
  40. package/dist/racunovodstvo/konti.d.mts.map +1 -0
  41. package/dist/racunovodstvo/konti.mjs +135 -0
  42. package/dist/racunovodstvo/konti.mjs.map +1 -0
  43. package/dist/racunovodstvo/kontiUparitev.d.mts +127 -0
  44. package/dist/racunovodstvo/kontiUparitev.d.mts.map +1 -0
  45. package/dist/racunovodstvo/kontiUparitev.mjs +266 -0
  46. package/dist/racunovodstvo/kontiUparitev.mjs.map +1 -0
  47. package/dist/racunovodstvo/stroskovnoMesto.d.mts +56 -0
  48. package/dist/racunovodstvo/stroskovnoMesto.d.mts.map +1 -0
  49. package/dist/racunovodstvo/stroskovnoMesto.mjs +89 -0
  50. package/dist/racunovodstvo/stroskovnoMesto.mjs.map +1 -0
  51. package/dist/test/izvozRacunov.d.mts +2 -0
  52. package/dist/test/izvozRacunov.d.mts.map +1 -0
  53. package/dist/test/izvozRacunov.mjs +258 -0
  54. package/dist/test/izvozRacunov.mjs.map +1 -0
  55. package/dist/test/izvozRacunovShema.d.mts +2 -0
  56. package/dist/test/izvozRacunovShema.d.mts.map +1 -0
  57. package/dist/test/izvozRacunovShema.mjs +267 -0
  58. package/dist/test/izvozRacunovShema.mjs.map +1 -0
  59. package/dist/types/blagajna.d.mts +8 -0
  60. package/dist/types/blagajna.d.mts.map +1 -1
  61. package/dist/types/dnevnikIzvozov.d.mts +1 -0
  62. package/dist/types/dnevnikIzvozov.d.mts.map +1 -1
  63. package/dist/types/izvozRacun.d.mts +481 -0
  64. package/dist/types/izvozRacun.d.mts.map +1 -0
  65. package/dist/types/izvozRacun.mjs +53 -0
  66. package/dist/types/izvozRacun.mjs.map +1 -0
  67. package/dist/types/lokacija.d.mts +10 -0
  68. package/dist/types/lokacija.d.mts.map +1 -1
  69. package/dist/types/nastavitve.d.mts +17 -0
  70. package/dist/types/nastavitve.d.mts.map +1 -1
  71. package/dist/types/racun.d.mts +9 -1
  72. package/dist/types/racun.d.mts.map +1 -1
  73. package/package.json +4 -2
@@ -0,0 +1,135 @@
1
+ // AI created: 2026-09-29 (VOD: konti)
2
+ // AI moved: 2026-10-05 (iz klikVetApp/code/VOD/vodKonti.ts v klikvet-logic — skupna raba VOD izvoza in izvoza izdanih računov)
3
+ /**
4
+ * Konti, na katere se knjiži izdan račun — dogovor z računovodstvom.
5
+ *
6
+ * Modul je **skupen**: uporabljata ga VOD izvoz knjižb (`klikVetApp/code/VOD`)
7
+ * in izvoz izdanih računov v zunanji sistem (`src/izvozRacunov`). Predpona `Vod`
8
+ * je ostala iz časa, ko je bil VOD edini porabnik; pomen je isti za vsak izvoz
9
+ * v računovodstvo.
10
+ */
11
+ export const PRIVZETI_KONTI = {
12
+ terjatev: '1200',
13
+ prihodek: '7600',
14
+ ddv: '2600',
15
+ blagajna: '1000',
16
+ };
17
+ /**
18
+ * Iz davčne stopnje v obliko, ki je ključ preslikave.
19
+ *
20
+ * Stopnja pride iz baze kot `double`, zato jo pred iskanjem zaokrožimo na štiri
21
+ * decimalke — `0.09500000000000001` bi sicer zgrešil ključ `0.095`.
22
+ */
23
+ export function kljucStopnje(dst) {
24
+ return Number(dst.toFixed(4));
25
+ }
26
+ /**
27
+ * Konto za debetno knjižbo prihodka denarja.
28
+ *
29
+ * Vrstni red je od najbolj specifičnega k najbolj splošnemu, s **posebno izjemo pri
30
+ * zavarovanju**: tam je `Placilo.nacin` ime zavarovalnice, zato mora konto konkretne
31
+ * zavarovalnice prevladati nad morebitnim kontom istoimenskega načina plačila.
32
+ *
33
+ * | Kategorija | 1. | 2. | 3. | 4. | 5. |
34
+ * | -------------- | ------------- | ------------- | ------------------- | ----------------- | -------------- |
35
+ * | kartica | način plačila | blagajna | `konti.kartice` | `konti.blagajna` | `konti.terjatev` |
36
+ * | gotovina | način plačila | blagajna | `konti.blagajna` | `konti.terjatev` | — |
37
+ * | zavarovanje | zavarovalnica | način plačila | `konti.zavarovanje` | `konti.terjatev` | — |
38
+ * | odloženo | način plačila | — | `konti.terjatev` | — | — |
39
+ *
40
+ * Kartica pade pred `konti.terjatev` na **blagajno**: denar je ob izdaji računa že
41
+ * prejet, zato terjatev ne nastane. Brez te stopnje bi kartični promet končal med
42
+ * terjatvami do kupcev in bi računovodstvo odprlo neplačane postavke.
43
+ *
44
+ * `Blagajna.konto` je namenoma šele za kategorijo, ker lahko blagajna sprejme
45
+ * različne načine plačila (`negotovinska`), zato sam način plačila pove več.
46
+ *
47
+ * Zavarovalnica ima **svojega partnerja** na knjižbi (`Partner/Sifra`), zato
48
+ * ločenega konta ne potrebuje — privzeto gre terjatev na isti konto kot do
49
+ * strank, razlikuje pa se po partnerju. Svoj konto dobi le, če ga zahteva
50
+ * računovodstvo (`zavarovalnice.konto` ali `VodKonti.zavarovanje`).
51
+ *
52
+ * `1210` privzeto NI uporabljen: v Opalovem priporočenem kontiranju
53
+ * (`primeri-knjizb-izdanih-racunov-2025.pdf`) je to terjatev do **tujih**
54
+ * kupcev (izvoz, tristranska dobava), ne terjatev do zavarovalnice.
55
+ */
56
+ export function kontoZaPlacilo(kategorija, nacinPlacila, blagajna, zavarovalnica, konti) {
57
+ var _a, _b, _c, _d, _e, _f, _g, _h;
58
+ if (kategorija === 'zavarovanje') {
59
+ return (_c = (_b = (_a = zavarovalnica === null || zavarovalnica === void 0 ? void 0 : zavarovalnica.konto) !== null && _a !== void 0 ? _a : nacinPlacila === null || nacinPlacila === void 0 ? void 0 : nacinPlacila.konto) !== null && _b !== void 0 ? _b : konti.zavarovanje) !== null && _c !== void 0 ? _c : konti.terjatev;
60
+ }
61
+ if (nacinPlacila === null || nacinPlacila === void 0 ? void 0 : nacinPlacila.konto)
62
+ return nacinPlacila.konto;
63
+ if (kategorija === 'kartica')
64
+ return (_f = (_e = (_d = blagajna === null || blagajna === void 0 ? void 0 : blagajna.konto) !== null && _d !== void 0 ? _d : konti.kartice) !== null && _e !== void 0 ? _e : konti.blagajna) !== null && _f !== void 0 ? _f : konti.terjatev;
65
+ if (kategorija === 'gotovina')
66
+ return (_h = (_g = blagajna === null || blagajna === void 0 ? void 0 : blagajna.konto) !== null && _g !== void 0 ? _g : konti.blagajna) !== null && _h !== void 0 ? _h : konti.terjatev;
67
+ return konti.terjatev;
68
+ }
69
+ /**
70
+ * Konto prihodka za posamezno postavko računa.
71
+ *
72
+ * Vrstni red je od najbolj podrobnega k najbolj splošnemu: konto na artiklu
73
+ * prevlada nad konto kategorije, kategorija pa nad splošnim prihodkom.
74
+ * Kategorijo damo kot parameter, ker je na voljo tudi takrat, kadar artikla v
75
+ * šifrantu ni (tedaj `artikel` manjka, `postavka.kategorija` pa je).
76
+ */
77
+ export function kontoPrihodka(artikel, kategorija, konti, dst) {
78
+ var _a;
79
+ var _b, _c, _d;
80
+ // Konto artikla je najbolj podroben in zato najmočnejši. Sledi konto stopnje,
81
+ // ki računovodstvu omogoča ločevanje prihodkov po obdavčitvi, šele nato
82
+ // kategorija in nazadnje splošni prihodek.
83
+ const poStopnji = dst === undefined ? undefined : (_a = konti.prihodekPoStopnji) === null || _a === void 0 ? void 0 : _a[dst];
84
+ return (_d = (_c = (_b = artikel === null || artikel === void 0 ? void 0 : artikel.konto) !== null && _b !== void 0 ? _b : poStopnji) !== null && _c !== void 0 ? _c : konti[KLJUC_PRIHODKA_PO_KATEGORIJI[kategorija !== null && kategorija !== void 0 ? kategorija : '']]) !== null && _d !== void 0 ? _d : konti.prihodek;
85
+ }
86
+ /**
87
+ * Konto obračunanega DDV za posamezno stopnjo.
88
+ *
89
+ * Kjer stopnja svojega konta nima, velja splošni `ddv` — tako ostane izvoz
90
+ * nespremenjen, dokler računovodstvo stopenj ne začne ločevati.
91
+ */
92
+ export function kontoDdv(dst, konti) {
93
+ var _a;
94
+ var _b;
95
+ return (_b = (_a = konti.ddvPoStopnji) === null || _a === void 0 ? void 0 : _a[dst]) !== null && _b !== void 0 ? _b : konti.ddv;
96
+ }
97
+ /** Kategorija artikla → ključ konta prihodka v `VodKonti`. */
98
+ const KLJUC_PRIHODKA_PO_KATEGORIJI = {
99
+ storitev: 'prihodekStoritev',
100
+ izdelek: 'prihodekIzdelek',
101
+ zdravilo: 'prihodekZdravilo',
102
+ 'potrošni material': 'prihodekMaterial',
103
+ };
104
+ /**
105
+ * Kategorije postavke, ki imajo svoj konto prihodka — v vrstnem redu, kot jih
106
+ * našteva tabela uparitve.
107
+ *
108
+ * Potrebujejo jih prikazi, ki hočejo povedati, **na kateri konto zares pade**
109
+ * posamezna kategorija: kateri konto dobi kategorija, pove `kontoPrihodka`,
110
+ * seznam kategorij pa je treba od nekod vzeti — tu je isti vir kot preslikava
111
+ * sama, zato se seznam in preslikava ne moreta razhajati.
112
+ */
113
+ export const KATEGORIJE_PRIHODKA = Object.keys(KLJUC_PRIHODKA_PO_KATEGORIJI);
114
+ /**
115
+ * Dejanski konti, na katere padejo kategorije postavk — za prikaz v tabeli uparitve.
116
+ *
117
+ * Uporablja isto verigo kot izvoz (`kontoPrihodka`), le brez konta stopnje, zato se
118
+ * prikaz in izvoz ne moreta razhajati. Kategorije z istim kontom se združijo, da
119
+ * vrstica ostane kratka; rezultat je urejen po padanju — najbolj splošni konto nazadnje.
120
+ */
121
+ export function kontiPrihodkaPoKategorijah(konti) {
122
+ var _a;
123
+ const kategorije = [
124
+ ...KATEGORIJE_PRIHODKA.map((k) => [k, k]),
125
+ // Postavka brez znane kategorije pade naravnost na splošni prihodek.
126
+ ['brez kategorije', undefined],
127
+ ];
128
+ const poKontu = new Map();
129
+ for (const [naziv, kategorija] of kategorije) {
130
+ const konto = kontoPrihodka(undefined, kategorija, konti);
131
+ poKontu.set(konto, [...((_a = poKontu.get(konto)) !== null && _a !== void 0 ? _a : []), naziv]);
132
+ }
133
+ return [...poKontu].map(([konto, kategorije]) => ({ konto, kategorije }));
134
+ }
135
+ //# sourceMappingURL=konti.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"konti.mjs","sourceRoot":"","sources":["../../src/racunovodstvo/konti.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import type { Konto } from '../types/konto.mjs';
2
+ import { type VodKonti } from './konti.mjs';
3
+ /**
4
+ * Ključ vrstice, ki ni konto: rezervni kupec, uporabljen, kadar račun nima znane
5
+ * stranke. Živi **samo** v tabeli nastavljenih kontov.
6
+ */
7
+ export declare const KLJUC_SPLOSNEGA_KUPCA = "splosniKupec";
8
+ /**
9
+ * Skupina vrstic — kontni razred in evidenca, v katero knjižba sodi.
10
+ *
11
+ * Pripadnost je lastnost **vrstice** (`VodKontoVrstica.skupina`); tu je opis, ki se
12
+ * izpiše v naslovu skupine. Naziv nosi kontni razred, evidenca pa pove, kam knjižba
13
+ * pristane — zato je iz tabele razvidno, kaj se nanaša na **davčno knjigo**
14
+ * (obračun DDV) in kaj na **prihodkovno stran** (prihodki od prodaje).
15
+ */
16
+ export interface VodKontoSkupina {
17
+ kljuc: string;
18
+ naziv: string;
19
+ evidenca: string;
20
+ }
21
+ /**
22
+ * Vrstni red skupin je hkrati vrstni red vrstic v obeh tabelah: kontni razredi
23
+ * naraščajo (`10/12` → `76` → `26`), izravnave so na koncu. Vrstice iste skupine
24
+ * se v tabeli držijo skupaj, zato mora biti vsaka skupina v seznamu vrstic
25
+ * neprekinjena.
26
+ */
27
+ export declare const VOD_KONTO_SKUPINE: VodKontoSkupina[];
28
+ export interface VodKontoVrstica {
29
+ kljuc: keyof VodKonti;
30
+ naziv: string;
31
+ /** Ključ skupine iz `VOD_KONTO_SKUPINE` — določa naslov in vrstni red v tabeli. */
32
+ skupina: string;
33
+ /** Privzetek iz `PRIVZETI_KONTI`; prazno pomeni, da privzetka ni. */
34
+ privzeto?: string;
35
+ /** Kolekcije, kjer se ta element lahko prevlada (povezave na strani). */
36
+ prevladaS?: string[];
37
+ /** Podrejena vrstica — v tabeli se izpiše zamaknjena pod nadrejeno. */
38
+ podrejeno?: boolean;
39
+ /**
40
+ * Podrobnejše vrednosti tega elementa so vrstice **po stopnjah** iz spodnje
41
+ * tabele (`VOD_PRIHODEK_STOPNJE_VRSTICE` oz. `VOD_DDV_STOPNJE_VRSTICE`).
42
+ * Na strani se izpiše kot oznaka v stolpcu „Natančnejše vrednosti so v“.
43
+ */
44
+ stopnjeSpodaj?: boolean;
45
+ }
46
+ /**
47
+ * Vrstica konta po davčni stopnji.
48
+ *
49
+ * Ključ tu **ni** `keyof VodKonti`: v kolekciji `konti` je ploščat (`ddv22`,
50
+ * `prihodek22`), izvoz pa ga zloži v preslikavo stopnja → konto
51
+ * (`VodKonti.ddvPoStopnji` oz. `VodKonti.prihodekPoStopnji`) — zato ima svoj tip
52
+ * s stopnjo, ki pove, v katero preslikavo vrstica sodi.
53
+ */
54
+ export interface VodStopnjaVrstica extends Omit<VodKontoVrstica, 'kljuc'> {
55
+ kljuc: string;
56
+ stopnja: number;
57
+ }
58
+ export declare const VOD_KONTO_VRSTICE: VodKontoVrstica[];
59
+ /**
60
+ * Konti obračunanega DDV po davčnih stopnjah — **davčna knjiga**.
61
+ *
62
+ * Niso privzetki, ampak **izjema od njih**: prazna vrstica pomeni, da stopnja pade
63
+ * na splošni `ddv`. Zato te vrstice namenoma **nimajo** `privzeto` — polje na strani
64
+ * se ne pred-izpolni, sicer bi se v bazo zapisala kopija splošnega konta in vez
65
+ * na `ddv` bi prenehala veljati.
66
+ *
67
+ * Vrstni red je od najpogostejše stopnje (22 %) navzdol.
68
+ */
69
+ export declare const VOD_DDV_STOPNJE_VRSTICE: VodStopnjaVrstica[];
70
+ /**
71
+ * Konti prihodka po davčnih stopnjah — **prihodkovna stran** iste knjižbe, ki ji
72
+ * davčno knjigo polni `VOD_DDV_STOPNJE_VRSTICE`.
73
+ *
74
+ * Zanje velja enako kot za vrstice DDV: **nimajo privzetka** in se ne pred-izpolnijo,
75
+ * ker prazno pomeni »pade naprej po verigi« — na kategorijo postavke in šele nato na
76
+ * splošni `prihodek`. Pred-izpolnitev bi v bazo zapisala kopijo splošnega konta in za
77
+ * vse postavke te stopnje izklopila kategorije (`7620` zdravila …).
78
+ *
79
+ * Vrstni red je od najpogostejše stopnje (22 %) navzdol.
80
+ */
81
+ export declare const VOD_PRIHODEK_STOPNJE_VRSTICE: VodStopnjaVrstica[];
82
+ /**
83
+ * Vse vrstice kontov po vrstnem redu strani.
84
+ *
85
+ * `vrstniRed` v bazi in iskanje vrstice po ključu tečeta po tem seznamu, zato se
86
+ * mora ujemati z vrstnim redom tabele: najprej privzeti konti (zgornja tabela),
87
+ * nato podrobnejše vrstice po stopnjah iz spodnje tabele (prihodek pred DDV, ker je
88
+ * skupina prihodkov pred skupino obračuna DDV).
89
+ */
90
+ export declare const VOD_VSE_VRSTICE: (VodKontoVrstica | VodStopnjaVrstica)[];
91
+ export interface KontiZaIzvoz {
92
+ konti: Partial<VodKonti>;
93
+ neznanaStranka?: {
94
+ sifra: string;
95
+ naziv: string;
96
+ tujiProgram?: string;
97
+ };
98
+ }
99
+ /**
100
+ * Preslika vrstice kolekcije `konti` v `opts` izvoza.
101
+ *
102
+ * Vrne samo tisto, kar je v bazi; česar ni (ali je prazno), ostane vgrajeni
103
+ * privzetek v `PRIVZETI_KONTI`. Vrstice z neznanim ključem se ignorirajo, da
104
+ * morebitna ročno dodana vrstica ne more pokvariti izvoza.
105
+ *
106
+ * Vrstice po stopnjah (`VOD_DDV_STOPNJE_VRSTICE`, `VOD_PRIHODEK_STOPNJE_VRSTICE`) so v
107
+ * bazi ploščate, izvoz pa jih bere kot preslikavi stopnja → konto, zato se zberejo v
108
+ * `ddvPoStopnji` in `prihodekPoStopnji`.
109
+ */
110
+ export declare function kontiIzDb(vrstice: Konto[] | undefined): KontiZaIzvoz;
111
+ /** Vrstica iz kolekcije `konti` po ključu (tudi izbrisane, da jih stran lahko prikaže). */
112
+ export declare function vrsticaPoKljucu(vrstice: Konto[] | undefined, kljuc: string): Konto | undefined;
113
+ /** Skupina po ključu; `undefined` za neznan ključ. */
114
+ export declare function skupinaPoKljucu(kljuc: string): VodKontoSkupina | undefined;
115
+ /**
116
+ * Vse vrstice po skupinah, v vrstnem redu tabel.
117
+ *
118
+ * Vrstice se delijo po `skupina`, znotraj skupine pa ohranijo vrstni red iz
119
+ * `VOD_KONTO_VRSTICE`, `VOD_PRIHODEK_STOPNJE_VRSTICE` in `VOD_DDV_STOPNJE_VRSTICE`.
120
+ * Skupina, ki v seznamu ni, se izpusti — zato je izpis na strani vedno skladen z
121
+ * `VOD_KONTO_SKUPINE` in se skupina z nobeno vrstico ne izpiše prazna.
122
+ */
123
+ export declare function vrsticePoSkupinah(vrstice: (VodKontoVrstica | VodStopnjaVrstica)[]): {
124
+ skupina: VodKontoSkupina;
125
+ vrstice: (VodKontoVrstica | VodStopnjaVrstica)[];
126
+ }[];
127
+ //# sourceMappingURL=kontiUparitev.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kontiUparitev.d.mts","sourceRoot":"","sources":["../../src/racunovodstvo/kontiUparitev.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,iBAAiB,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAK9C,CAAA;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,QAAQ,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAyF9C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,EAItD,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,EAI3D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,eAAe,GAAG,iBAAiB,CAAC,EAIlE,CAAA;AAwBD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,YAAY,CAuDpE;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE9F;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,CAAC,eAAe,GAAG,iBAAiB,CAAC,EAAE,GAAG;IACpF,OAAO,EAAE,eAAe,CAAA;IACxB,OAAO,EAAE,CAAC,eAAe,GAAG,iBAAiB,CAAC,EAAE,CAAA;CAChD,EAAE,CAKF"}
@@ -0,0 +1,266 @@
1
+ // AI modified: 2026-10-02 (skupine kontov: kontni razred + evidenca; vrstice `prihodek` po stopnjah)
2
+ // AI created: 2026-09-29 (VOD: vrstice uparitve kontov in preslikava v opts izvoza)
3
+ // AI moved: 2026-10-05 (iz klikVetApp/code/VOD/vodKontiUparitev.ts v klikvet-logic)
4
+ // Vrstice uparitve kontov (stran `glavneUparitve`) in preslikava zbirke `konti` v `VodKonti`.
5
+ //
6
+ // Vrstni red je del dogovora z računovodstvom: najprej po skupinah (kontni razred),
7
+ // znotraj skupine od najbolj splošnega elementa k najbolj podrobnemu — kar je
8
+ // podrobnejše, prevlada in je zato nižje. Nazivi, vrstni red, skupine in „kje se da
9
+ // prevladati“ so tu zato, da ima stran `glavneUparitve` kaj izpisati, tudi ko je
10
+ // kolekcija `konti` prazna — v bazi pa so shranjeni zato, da jih računovodstvo vidi
11
+ // in da se ob morebitni spremembi dogovora spremeni le podatek, ne koda.
12
+ import { PRIVZETI_KONTI } from './konti.mjs';
13
+ /**
14
+ * Ključ vrstice, ki ni konto: rezervni kupec, uporabljen, kadar račun nima znane
15
+ * stranke. Živi **samo** v tabeli nastavljenih kontov.
16
+ */
17
+ export const KLJUC_SPLOSNEGA_KUPCA = 'splosniKupec';
18
+ /**
19
+ * Vrstni red skupin je hkrati vrstni red vrstic v obeh tabelah: kontni razredi
20
+ * naraščajo (`10/12` → `76` → `26`), izravnave so na koncu. Vrstice iste skupine
21
+ * se v tabeli držijo skupaj, zato mora biti vsaka skupina v seznamu vrstic
22
+ * neprekinjena.
23
+ */
24
+ export const VOD_KONTO_SKUPINE = [
25
+ { kljuc: 'terjatve', naziv: 'Terjatve in denar (10/12)', evidenca: 'saldakonti in glavna knjiga' },
26
+ { kljuc: 'prihodki', naziv: 'Prihodki od prodaje (76)', evidenca: 'prihodkovna stran glavne knjige' },
27
+ { kljuc: 'ddv', naziv: 'Obračun DDV (26)', evidenca: 'davčna knjiga' },
28
+ { kljuc: 'izravnave', naziv: 'Izravnave', evidenca: 'samo glavna knjiga' },
29
+ ];
30
+ export const VOD_KONTO_VRSTICE = [
31
+ {
32
+ kljuc: 'terjatev',
33
+ naziv: 'terjatev do stranke',
34
+ skupina: 'terjatve',
35
+ privzeto: PRIVZETI_KONTI.terjatev,
36
+ // Zadnja postaja verige: prevladajo jo lahko način plačila (vedno), blagajna
37
+ // (kartica, gotovina) in zavarovalnica (zavarovanje).
38
+ prevladaS: ['naciniPlacil', 'blagajne', 'zavarovalnice'],
39
+ },
40
+ {
41
+ kljuc: 'blagajna',
42
+ naziv: 'gotovina v blagajni',
43
+ skupina: 'terjatve',
44
+ privzeto: PRIVZETI_KONTI.blagajna,
45
+ prevladaS: ['naciniPlacil', 'blagajne'],
46
+ },
47
+ {
48
+ kljuc: 'kartice',
49
+ naziv: 'kartična plačila',
50
+ skupina: 'terjatve',
51
+ privzeto: PRIVZETI_KONTI.kartice,
52
+ prevladaS: ['naciniPlacil', 'blagajne'],
53
+ },
54
+ {
55
+ kljuc: 'zavarovanje',
56
+ naziv: 'terjatev do zavarovalnice',
57
+ skupina: 'terjatve',
58
+ // Privzetka namenoma ni: prazno pomeni, da terjatev pade na `terjatev`.
59
+ privzeto: PRIVZETI_KONTI.zavarovanje,
60
+ // Pred tem privzetkom sta konto zavarovalnice in konto načina plačila.
61
+ prevladaS: ['zavarovalnice', 'naciniPlacil'],
62
+ },
63
+ {
64
+ kljuc: 'prihodek',
65
+ naziv: 'splošni',
66
+ skupina: 'prihodki',
67
+ privzeto: PRIVZETI_KONTI.prihodek,
68
+ prevladaS: ['artikli'],
69
+ // Konto stopnje (`prihodekPoStopnji`) prevlada nad kategorijo, zato je
70
+ // nastavljiv v spodnji tabeli.
71
+ stopnjeSpodaj: true,
72
+ },
73
+ {
74
+ kljuc: 'prihodekStoritev',
75
+ naziv: 'storitev',
76
+ skupina: 'prihodki',
77
+ privzeto: PRIVZETI_KONTI.prihodekStoritev,
78
+ prevladaS: ['artikli'],
79
+ podrejeno: true,
80
+ },
81
+ {
82
+ kljuc: 'prihodekIzdelek',
83
+ naziv: 'izdelek',
84
+ skupina: 'prihodki',
85
+ privzeto: PRIVZETI_KONTI.prihodekIzdelek,
86
+ prevladaS: ['artikli'],
87
+ podrejeno: true,
88
+ },
89
+ {
90
+ kljuc: 'prihodekZdravilo',
91
+ naziv: 'zdravilo',
92
+ skupina: 'prihodki',
93
+ privzeto: PRIVZETI_KONTI.prihodekZdravilo,
94
+ prevladaS: ['artikli'],
95
+ podrejeno: true,
96
+ },
97
+ {
98
+ kljuc: 'prihodekMaterial',
99
+ naziv: 'potrošni material',
100
+ skupina: 'prihodki',
101
+ privzeto: PRIVZETI_KONTI.prihodekMaterial,
102
+ prevladaS: ['artikli'],
103
+ podrejeno: true,
104
+ },
105
+ {
106
+ kljuc: 'ddv',
107
+ naziv: 'splošni',
108
+ skupina: 'ddv',
109
+ privzeto: PRIVZETI_KONTI.ddv,
110
+ // Stopnje, ki svojega konta nimajo, padejo na tega — zato so v spodnji tabeli.
111
+ stopnjeSpodaj: true,
112
+ },
113
+ {
114
+ kljuc: 'zaokrozevanje',
115
+ naziv: 'zaokrožitve',
116
+ skupina: 'izravnave',
117
+ privzeto: PRIVZETI_KONTI.zaokrozevanje,
118
+ },
119
+ ];
120
+ /**
121
+ * Konti obračunanega DDV po davčnih stopnjah — **davčna knjiga**.
122
+ *
123
+ * Niso privzetki, ampak **izjema od njih**: prazna vrstica pomeni, da stopnja pade
124
+ * na splošni `ddv`. Zato te vrstice namenoma **nimajo** `privzeto` — polje na strani
125
+ * se ne pred-izpolni, sicer bi se v bazo zapisala kopija splošnega konta in vez
126
+ * na `ddv` bi prenehala veljati.
127
+ *
128
+ * Vrstni red je od najpogostejše stopnje (22 %) navzdol.
129
+ */
130
+ export const VOD_DDV_STOPNJE_VRSTICE = [
131
+ { kljuc: 'ddv22', naziv: 'DDV 22 %', skupina: 'ddv', stopnja: 0.22 },
132
+ { kljuc: 'ddv95', naziv: 'DDV 9,5 %', skupina: 'ddv', stopnja: 0.095 },
133
+ { kljuc: 'ddv5', naziv: 'DDV 5 %', skupina: 'ddv', stopnja: 0.05 },
134
+ ];
135
+ /**
136
+ * Konti prihodka po davčnih stopnjah — **prihodkovna stran** iste knjižbe, ki ji
137
+ * davčno knjigo polni `VOD_DDV_STOPNJE_VRSTICE`.
138
+ *
139
+ * Zanje velja enako kot za vrstice DDV: **nimajo privzetka** in se ne pred-izpolnijo,
140
+ * ker prazno pomeni »pade naprej po verigi« — na kategorijo postavke in šele nato na
141
+ * splošni `prihodek`. Pred-izpolnitev bi v bazo zapisala kopijo splošnega konta in za
142
+ * vse postavke te stopnje izklopila kategorije (`7620` zdravila …).
143
+ *
144
+ * Vrstni red je od najpogostejše stopnje (22 %) navzdol.
145
+ */
146
+ export const VOD_PRIHODEK_STOPNJE_VRSTICE = [
147
+ { kljuc: 'prihodek22', naziv: '22 %', skupina: 'prihodki', stopnja: 0.22 },
148
+ { kljuc: 'prihodek95', naziv: '9,5 %', skupina: 'prihodki', stopnja: 0.095 },
149
+ { kljuc: 'prihodek5', naziv: '5 %', skupina: 'prihodki', stopnja: 0.05 },
150
+ ];
151
+ /**
152
+ * Vse vrstice kontov po vrstnem redu strani.
153
+ *
154
+ * `vrstniRed` v bazi in iskanje vrstice po ključu tečeta po tem seznamu, zato se
155
+ * mora ujemati z vrstnim redom tabele: najprej privzeti konti (zgornja tabela),
156
+ * nato podrobnejše vrstice po stopnjah iz spodnje tabele (prihodek pred DDV, ker je
157
+ * skupina prihodkov pred skupino obračuna DDV).
158
+ */
159
+ export const VOD_VSE_VRSTICE = [
160
+ ...VOD_KONTO_VRSTICE,
161
+ ...VOD_PRIHODEK_STOPNJE_VRSTICE,
162
+ ...VOD_DDV_STOPNJE_VRSTICE,
163
+ ];
164
+ /** Ključi, ki jih izvoz pozna — vse drugo iz kolekcije `konti` se ignorira. */
165
+ const DOVOLJENI_KLJUCI = new Set(VOD_VSE_VRSTICE.map((v) => v.kljuc));
166
+ /**
167
+ * Ključ vrstice po stopnjah → stopnja in preslikava, v katero se zloži.
168
+ *
169
+ * V bazi je vrstica ploščata (`kljuc` + `konto`), izvoz pa stopnje bere kot
170
+ * preslikavo stopnja → konto (`kontoDdv`, `kontoPrihodka`).
171
+ */
172
+ const STOPNJA_PO_KLJUCU = new Map([
173
+ ...VOD_DDV_STOPNJE_VRSTICE.map((v) => [v.kljuc, { stopnja: v.stopnja, konto: 'ddv' }]),
174
+ ...VOD_PRIHODEK_STOPNJE_VRSTICE.map((v) => [v.kljuc, { stopnja: v.stopnja, konto: 'prihodek' }]),
175
+ ]);
176
+ /**
177
+ * Preslika vrstice kolekcije `konti` v `opts` izvoza.
178
+ *
179
+ * Vrne samo tisto, kar je v bazi; česar ni (ali je prazno), ostane vgrajeni
180
+ * privzetek v `PRIVZETI_KONTI`. Vrstice z neznanim ključem se ignorirajo, da
181
+ * morebitna ročno dodana vrstica ne more pokvariti izvoza.
182
+ *
183
+ * Vrstice po stopnjah (`VOD_DDV_STOPNJE_VRSTICE`, `VOD_PRIHODEK_STOPNJE_VRSTICE`) so v
184
+ * bazi ploščate, izvoz pa jih bere kot preslikavi stopnja → konto, zato se zberejo v
185
+ * `ddvPoStopnji` in `prihodekPoStopnji`.
186
+ */
187
+ export function kontiIzDb(vrstice) {
188
+ var _a, _b, _c, _d, _e, _f;
189
+ const konti = {};
190
+ /** Konta DDV po stopnjah — v bazi so to ločene vrstice (`ddv22`, `ddv95`, `ddv5`). */
191
+ const ddvPoStopnji = {};
192
+ /** Konta prihodka po stopnjah — prav tako ločene vrstice (`prihodek22`, …). */
193
+ const prihodekPoStopnji = {};
194
+ let neznanaStranka;
195
+ for (const vrstica of vrstice !== null && vrstice !== void 0 ? vrstice : []) {
196
+ if (!vrstica || vrstica._deleted)
197
+ continue;
198
+ if (vrstica.kljuc === KLJUC_SPLOSNEGA_KUPCA) {
199
+ // `Sifra` je šifra v Vascu/Pantheonu (`anQId` oziroma corporate id),
200
+ // `Sifra_tuji_program` pa izvozna šifra v Klik.vetu (`_exportId`).
201
+ // Splošni kupec je rezervni kupec, zato izvozne šifre ni nujno imel —
202
+ // takrat v XML gre le Vascova.
203
+ // `_pantheonId` je staro ime polja `_externalId`; v bazi je ostalo pri zapisih,
204
+ // nastalih pred preimenovanjem (dogovor je, da podatkov ne selimo). Brez
205
+ // tega branja bi splošni kupec ostal brez šifre in vsak anonimni račun bi
206
+ // šel v izvoz s praznim `Sifra`.
207
+ const vascova = String((_c = (_b = (_a = vrstica._externalId) !== null && _a !== void 0 ? _a : vrstica._corporateId) !== null && _b !== void 0 ? _b : vrstica._pantheonId) !== null && _c !== void 0 ? _c : '').trim();
208
+ const izvozna = String((_d = vrstica._exportId) !== null && _d !== void 0 ? _d : '').trim();
209
+ if (vascova || izvozna) {
210
+ neznanaStranka = {
211
+ sifra: vascova || izvozna,
212
+ ...(izvozna ? { tujiProgram: izvozna } : {}),
213
+ naziv: String((_e = vrstica.nazivKupca) !== null && _e !== void 0 ? _e : '').trim(),
214
+ };
215
+ }
216
+ continue;
217
+ }
218
+ if (!DOVOLJENI_KLJUCI.has(vrstica.kljuc))
219
+ continue;
220
+ const konto = String((_f = vrstica.konto) !== null && _f !== void 0 ? _f : '').trim();
221
+ if (!konto)
222
+ continue;
223
+ const stopnja = STOPNJA_PO_KLJUCU.get(vrstica.kljuc);
224
+ if (stopnja) {
225
+ if (stopnja.konto === 'ddv')
226
+ ddvPoStopnji[stopnja.stopnja] = konto;
227
+ else
228
+ prihodekPoStopnji[stopnja.stopnja] = konto;
229
+ continue;
230
+ }
231
+ konti[vrstica.kljuc] = konto;
232
+ }
233
+ return {
234
+ // Preslikavi se dodata le, kadar je kaj vpisanega: prazen objekt bi v izvozu
235
+ // pomenil »stopnje so nastavljene«, čeprav nobena ni.
236
+ konti: {
237
+ ...konti,
238
+ ...(Object.keys(ddvPoStopnji).length ? { ddvPoStopnji } : {}),
239
+ ...(Object.keys(prihodekPoStopnji).length ? { prihodekPoStopnji } : {}),
240
+ },
241
+ ...(neznanaStranka ? { neznanaStranka } : {}),
242
+ };
243
+ }
244
+ /** Vrstica iz kolekcije `konti` po ključu (tudi izbrisane, da jih stran lahko prikaže). */
245
+ export function vrsticaPoKljucu(vrstice, kljuc) {
246
+ return (vrstice !== null && vrstice !== void 0 ? vrstice : []).find((v) => v && !v._deleted && v.kljuc === kljuc);
247
+ }
248
+ /** Skupina po ključu; `undefined` za neznan ključ. */
249
+ export function skupinaPoKljucu(kljuc) {
250
+ return VOD_KONTO_SKUPINE.find((s) => s.kljuc === kljuc);
251
+ }
252
+ /**
253
+ * Vse vrstice po skupinah, v vrstnem redu tabel.
254
+ *
255
+ * Vrstice se delijo po `skupina`, znotraj skupine pa ohranijo vrstni red iz
256
+ * `VOD_KONTO_VRSTICE`, `VOD_PRIHODEK_STOPNJE_VRSTICE` in `VOD_DDV_STOPNJE_VRSTICE`.
257
+ * Skupina, ki v seznamu ni, se izpusti — zato je izpis na strani vedno skladen z
258
+ * `VOD_KONTO_SKUPINE` in se skupina z nobeno vrstico ne izpiše prazna.
259
+ */
260
+ export function vrsticePoSkupinah(vrstice) {
261
+ return VOD_KONTO_SKUPINE.map((skupina) => ({
262
+ skupina,
263
+ vrstice: vrstice.filter((v) => v.skupina === skupina.kljuc),
264
+ })).filter((s) => s.vrstice.length > 0);
265
+ }
266
+ //# sourceMappingURL=kontiUparitev.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kontiUparitev.mjs","sourceRoot":"","sources":["../../src/racunovodstvo/kontiUparitev.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Stroškovno mesto za izvoz v računovodstvo — **ena sama veriga**, ki jo uporabljata
3
+ * tako izvoz knjižb (`klikVetApp/code/VOD/izvoziRacuneVOD.ts`) kot izvoz izdanih
4
+ * računov (`src/izvozRacunov`) in prikaz na strani `glavneUparitve.vue`.
5
+ *
6
+ * Zakaj ločen modul: stran v stolpcu »privzeto« obljublja tisto, kar bo izvoz
7
+ * zares vzel. Če bi verigo pisala vsaka stran svojo, bi se prikaz in datoteka
8
+ * razhajala — natanko to, čemur se pri kontih izogibamo s skupnimi funkcijami.
9
+ *
10
+ * Veriga (bolj določeno prevlada): **blagajna → lokacija → nadrejena lokacija**.
11
+ * Blagajna ve, kam gre denar tega računa; lokacija je okvir; nadrejena lokacija
12
+ * je najbolj splošna (npr. terenska enota pod matično ambulanto). Manjkajočega
13
+ * mesta **ne izmišljamo** — račun gre v izvoz brez elementa, izvoz pa opozori.
14
+ */
15
+ /**
16
+ * Največja dolžina stroškovnega mesta (10 znakov), kot jo določa VOD shema
17
+ * (`Stroskovno_mesto`, `xs:maxLength 10`).
18
+ *
19
+ * Pantheonova imena stroškovnih mest so daljša (`PE PODČETRTEK` = 13), zato v
20
+ * datoteko ne gredo — vrednost je koda (`anQId`), ime pa služi le prikazu.
21
+ */
22
+ export declare const NAJVEC_ZNAKOV_STROSKOVNEGA_MESTA = 10;
23
+ /** Vrednost, ki sme v `Stroskovno_mesto`: neprazna in največ 10 znakov. */
24
+ export declare function veljavnoStroskovnoMesto(v: unknown): string | undefined;
25
+ /** Lokacija, kot jo potrebuje veriga: svoje mesto in id nadrejene lokacije. */
26
+ export interface LokacijaZaMesto {
27
+ /** Shranjeno stroškovno mesto lokacije (koda iz računovodskega sistema). */
28
+ mesto?: string;
29
+ /** Id nadrejene lokacije (`delLokacijeId`), po kateri se deduje. */
30
+ nadrejena?: string;
31
+ }
32
+ /** Mesta blagajn, ključena po `_id` blagajne. */
33
+ export declare function mestaBlagajnIz(zapisi: Iterable<{
34
+ _id?: string;
35
+ stroskovnoMesto?: string;
36
+ }>): Map<string, string>;
37
+ /** Mesta lokacij, ključena po `_id` lokacije (z id-jem nadrejene lokacije). */
38
+ export declare function mestaLokacijIz(zapisi: Iterable<{
39
+ _id?: string;
40
+ stroskovnoMesto?: string;
41
+ delLokacijeId?: string;
42
+ }>): Map<string, LokacijaZaMesto>;
43
+ /**
44
+ * Stroškovno mesto, ki velja za vrstico (račun, blagajno ali lokacijo).
45
+ *
46
+ * Vrne **prazen niz**, kadar ga ni nikjer v verigi — klicatelj se sam odloči,
47
+ * ali element izpusti (izvoz) ali izpiše pomišljaj (prikaz).
48
+ *
49
+ * Cikel v `delLokacijeId` (podatki so lahko tudi ročno pokvarjeni) nas ne sme
50
+ * zavrteti: vsako lokacijo obiščemo največ enkrat, veriga pa se takrat ustavi.
51
+ */
52
+ export declare function stroskovnoMestoZaVrstico(vrstica: {
53
+ blagajna_id?: string;
54
+ lokacija_id?: string;
55
+ }, mestaBlagajn: Map<string, string>, mestaLokacij: Map<string, LokacijaZaMesto>): string;
56
+ //# sourceMappingURL=stroskovnoMesto.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stroskovnoMesto.d.mts","sourceRoot":"","sources":["../../src/racunovodstvo/stroskovnoMesto.mts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKtE;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC/B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAC7B,MAAM,EAAE,QAAQ,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC7B,MAAM,EAAE,QAAQ,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClF,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAW9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,MAAM,CAeR"}