====== Datamodel.xml ====== ===== Struktura ===== Souborem datamodel.xml je popsána struktura OBISu. Každá tabulka a každý sloupec je nadefinován pomocí několika párových značek. ===== Popis elementů ===== *
Entry{"41","1.2.2005", [[
UpData("alter table partneri_akce add v_datumplneni timestamp")
]]}
Položky tabulky Entry mají následující význam:
* **41** - číslo verze uživatelských dat. Číslování systémových verzí je prováděno po desítkách. Pro uživatelské verze jsou pak vyhrazeny hodnoty mezi. Verze uživatelských dat by tedy měla být o jedničku vyšší než je aktuální verze dat systému.
* **1.2.2005** - datum vytvoření změny dat
* **Updata ...** - příkazy úprav dat (typicky SQL alter table)
=== Datamodel.xml ===
V souboru //datamodel.xml// je pak nutné popsat nově vytvořený sloupec.
Datum plnění
Datum plnění
0
0
Data
63
0
1
===== LookupKeyFields =====
LookupKeyFields je ve formátu:
Middle:[Table.]KeyFields[=LookupKeyFields][:ResultField]
* slozene KeyFields a LookupKeyFields se pisi se strednikem
* moznost filtrace lookup tabulky dle druhu napr. Zastupci:Zastupce|IDPartner=IDPartner
* na pozici Middle muze byt #FieldName, dle jehoz hodnoty je dohledano middle dle ShortCut v midregisteru
===== Běžné =====
Datové pole s vazbou do číselníku:
sklad_karty:idskladkarta
Data
ReadOnly lookup na hodnotu v číselníku:
sklad_karty:idskladkarta=idskladkarta:popis
Lookup
===== Složený =====
Pridani mnozstvi ze skladu do polozek rozpoctu (rpolozky):
Prida se prvni join na cenik pomoci LookupKeyFields:
rozpocty_cenik:idcen=idcen:idrezervace
a druhy join na sklad_karty pomoci:
sklad_karty:rozpocty_cenik.idrezervace=idskladkarta:mnozstvi
vysledkem je nasledujici join:
select ... from rozpocty_rpolozky
LEFT JOIN rozpocty_cenik rozpocty_cenik ON rozpocty_cenik.idcen = rozpocty_rpolozky.idcen
LEFT JOIN sklad_karty sklad_karty ON sklad_karty.idskladkarta = rozpocty_cenik.idrezervace
===== Variantní =====
Pokud potřebujeme, aby byl Lookup variantní (odskok do různých tabulek), lze toto docílit následujícím postupem.
Nejprve musí existovat sloupec, který bude rozhodovat o tom, do které tabulky bude Lookup proveden. Např. sloupec //Typ dokladu// v položkách majetku. V sloupci //Č. dokladu// je pak odkaz na tento "rozhodovací sloupec" v tagu //LookupKeyFields// uvozený znakem #.
Ukázka části souboru //Datamodel.xml//:
...
Č. dokladu
Číslo dokladu
#TypDokl
String
8
8
Data
5
0
1
...
Typ dokladu
Typ dokladu [F - Faktury, P - Pohyby na skladu (výdejky)]
String
1
1
Data
10
0
1
F-Faktury
P-Pohyby skladu
...
V uvedeném příkladu tedy může //typ dokladu// nabývat hodnot //F resp. P//. Která tabulka se má otevřít se pak zjistí ze souboru //Midregister.xml// z atributu //ShortCut// v tagu //Middle// (viz. následující ukázka:
...
...
...
===== SQL field =====
Dodací listy všechny
Dodací listy
(select CAST(list(distinct f.idfaktura,',') as VARCHAR(100))
from faktury_faktury f
JOIN faktury_fpolozky fp ON fp.idfaktura = f.idfaktura
JOIN faktury_fdruh fd ON fd.idfdruh = f.idfdruh
where
fp.idzakaz = zakazky_zakpol.idzakaz and
fp.idzakpol = zakazky_zakpol.idzakpol and
fd.znamenko = 0 and fd.znamenkodph = 0)
String
100
100
Sql
0
1