====== Synchronizácia M7 <-> Omega ======
===== Dôležité odkazy =====
| Vývojová verzia Omegy | http://vudpapdev.systemomega.com/ |
| Skript pre sync Omegy | http://vudpapdev.systemomega.com/p/vudpapForeignSync |
===== Prehľad synchronizovaných tabuliek =====
==== courses ====
Zoznam kurzov, pôvodne sa hovorilo aj o témach alebo o výučbových programoch.
Záznamy vytvára M7.
\\ Omega do tejto tabuľky vypĺňa stĺpec ``license_types_list``, v ktorom sa nachádza zoznam čiarkou oddelených [[#license_types|typov hlavných licencii]] (certifikátov). To znamená, že v tomto zozname sa **nenachádzajú** čiastkové certifikáty, potrebné k dosiahnutiu tohoto kurzu.
----
==== course_types ====
Záznamy vytvára výhradne M7.
----
==== courses_resources ====
V tejto tabuľke sa nachádza zoznam všetkých ľudí, ktorí na základe získaných certifikátov spĺňajú všetky požiadavky nastavené v daných [[#courses|kurzoch]].
Záznamy vytvára výhradne Omega.
* ``omega_resource_uuid`` - uuid zdroja.
* ``omega_resource_id`` - omega resource id.
* ``m7_account_id`` - ID [[#accounts|účtu]] v M7.
* ``omega_course_id`` - ID kurzu (projektu) v Omege.
* ``m7_course_id`` - ID [[#courses|kurzu]] v M7.
* ``install_date`` - dátum, kedy bol získaný potrebný certifikát pre kurz (v prípade, že bolo viac hlavných certifikátov).
* ``omega_event_id`` - ID termínu v Omege ((dohľadateľné v c_events)), na ktorom bol získaný hlavný certifikát. Odkazuje na [[#c_events|c_events]].
----
==== c_events ====
Tabuľka hlavných termínov pre [[#courses|kurzy]].
Záznamy vytvára výhradne Omega.
* ``event_type`` - Typ termínu môže byť ''plan'' ako plánovaný termín alebo ''real'' ako skutočne vykonaný termín.
* ``omega_event_id`` - ID termínu v Omege.
* ``omega_event_link_id`` - Odkaz na plánovaný/skutočne vykonaný termín v Omege.
* ``label`` - Názov termínu.
* ``date_start`` - Čas začiatku termínu.
* ``date_end`` - Čas konca termínu.
* ``m7_course_id`` - ID [[#courses|kurzu]] v M7.
* ``omega_location_id`` - ID lokácie v Omege.
* ``location_title`` - Názov lokácie v Omege.
* ``location_type_title`` - Typ lokácie, textovo (hotel, obec, reštaurácia, ...).
* ``location_address`` - Adresa lokácie v Omege.
* ``location_address_street`` - Ulica lokácie.
* ``location_address_city`` - Mesto lokácie.
* ``m7_location_id`` - ID [[#locations|lokácie]] v M7.
* ``m7_organization_id`` - ID [[#organisations|organizácie]] v M7. To iba v prípade, že je termín naplánovaný do organizácie.
* ``omega_project_id`` - ID školenia (projektu) v Omege.
* ``m7_t1_location_id`` .. ``m7_t5_location_id`` - ID lokácie v M7 podľa typu v ceste. \\ Napr. ak sa školenie koná v obci Borinka, potom:
* ``m7_t1_location_id`` bude NULL (štát - nezaradené),
* ``m7_t2_location_id`` bude 1 (Bratislavský kraj),
* ``m7_t3_location_id`` bude 14 (okres Malacky) a
* ``m7_t4_location_id`` bude 118 (obec Borinka).
* ``order_ready`` - Je objednávka kompletne pripravená? (toto sa zatiaľ nepoužíva a asi sa ani nebude)
* ``mts_ready`` - Je MTZ kompletne potvrdené? (toto sa zatiaľ nepoužíva a asi sa ani nebude)
* ``public`` - Verejný termín.
* ``program_xml`` - Program termínu ako XML formát.
----
==== c_events_resources ====
Tabuľka termínov zdrojov.
Záznamy vytvára výhradne Omega.
* ``event_type`` - To isté ako pri [[#c_events|c_events]].
* ``omega_event_id`` - ID termínu v Omege.
* ``omega_parent_event_id`` - ID nadradeného termínu v Omege.
* ``date_start``, ``date_end`` - To isté ako pri [[#c_events|c_events]].
* ``omega_resource_id`` - ID zdroja v Omege.
* ``m7_account_id`` - ID [[#accounts|účtu]] v M7.
* ``project_role`` - rola zdroja na tomto projekte.
* Ak bude obsahovať ''VUD_ADV'', tak sa jedná o lektora na termíne.
* Ak bude obsahovať ''VUD_ORG'', tak sa jedná o organizátora školenia na termíne.
----
==== license_types ====
Zoznam typov licencii (certifikátov).
Záznamy vytvára výhradne Omega.
\\ Dôležitý je stĺpec ``code``, na ktorý sa bude odkazovať aj v iných tabuľkách. Stĺpce ``tests_list`` a ``tests_m7_id`` sa už nepoužívajú.
----
==== licenses_installed ====
Úplný zoznam nadobudnutých licencii (certifikátov).
Záznamy vytvára výhradne Omega.
* ``omega_resource_uuid`` - uuid zdroja.
* ``omega_resource_id`` - ID zdroja v Omege.
* ``m7_account_id`` - ID [[#accounts|účtu]] v M7.
* ``license_type_code`` - [[#license_types|kód typu]] nadobudnutej licencie.
* ``install_date`` - dátum nadobudnutia.
* ``omega_event_id`` - ID [[#c_events|termínu]] v Omege, na ktorom bola táto licencia získaná.
----
==== organisation_types ====
Tabuľku plní výhradne M7.
----
===== Požiadavky na M7 =====
* Identifikačné stĺpce by mali mať prefix podľa systému, napr. ak bude ``m7_id``, tak ``parent_id`` by sa malo volať ``m7_parent_id``.
* Ak bude nejaký záznam odkazovať na záznam do inej tabuľky, napr. ``_organisations.m7_location_id``, tak je nutné, aby bol do synchronizačnej databázy vkladať príkazom ''**add**'' vložený najskôr príslušný záznam z tabuľky ``_locations``. \\ Obecne by sa mal zvoliť správny postup vkladania záznamov, napr. najkôr vložiť číselníky a až potom záznamy, ktoré tieto číselníky používajú.
* Všetky tabuľky, ktoré by odkazovali na iný záznam v tej istej tabuľke, tak treba do synchronizačnej databázy vkladať príkazom ''**add**'' v takom poradí, aby nenastala situácia, že sa bude vkladať záznam, ktorého ``parent_id`` nebolo už predtým vložené. Týka sa to napr. tabuliek ``_locations`` , ``_organisations`` a pod. \\ Inak povedané, najskôr treba vložiť hlavné vetvy a až potom záznamy týchto vetiev.
===== Omega, poznámky ku KV =====
**Lokácie** budú ukladané do objektu (najlepšie adresára alebo štúdia), ktorý ma nastavené **[KV]** ''kp48.locations_root=1''.
Každá nová lokácia bude mať nastavené:
* **[KV]** ''kp48.structure=location''
* **[KV]** ''kp48.m7_id=**{ID}**'', kde ''{ID}'' je skutočné ''id'' z M7.
* **[KV]** ''kp48.m7_type_id=**{ID}**'', kde ''{ID}'' je skutočné ''m7_type_id'' z M7.
* Typ lokácie bude z ``st2_cfg_location_type.unique_idf``, \\ kde ''``st2_cfg_location_type.unique_idf``="kp48-{m7_type_id}"''
Pod každou lokáciou vznikne pohľad **Organizácie**, ktorý bude mať nastavené:
* **[KV]** ''kp48.structure=location_view_organisations''
**Organizácie** budú ukladané do objektu (najlepšie adresára alebo štúdia), ktorý ma nastavené **[KV]** ''kp48.organisations_root=1''.
Každá nová organizácia bude mať nastavené:
* **[KV]** ''kp48.structure=organisation''
* **[KV]** ''kp48.m7_id=**{ID}**'', kde ''{ID}'' je skutočné ''id'' z M7.
* **[KV]** ''kp48.m7_type_id=**{ID}**'', kde ''{ID}'' je skutočné ''m7_type_id'' z M7.
* Organizácia bude mať nastavenú lokáciu, ak takáto lokácia existuje. Bude sa vyhľadávať pomocou ``m7_location_id``.
* Organizácia sa zaradí do pohľadu **Organizácie** pod lokáciu, kam patrí.