Stav addinu: v běžném provozu
Počet uživatelů (úřadů): 10+

BANKY2

Zpracování odpovědí z bank pro hromadné součinnosti, které jsou připraveny pro fázi 4.

Subjekt

Subjekt je daná osoba nebo firma vyskytující se v registru banky.

Vstupní parametry

Pracovní adresář: adresářová cesta ke všem lustracím Evolio serveru. K této cestě je automaticky přidán adresář „BANKY“.

Archiv: adresářová cesta, kam se ukládají zpracované odpovědi.

Connection string: připojovací řetězec k SQL databázi

Komu úkol při pozitivní součinnosti: uživatel Evolia, kterému budou udělovány úkoly při pozitivních součinnostech

Komu úkol při negativní součinnosti: uživatel Evolia, kterému budou přidělovány úkoly při negativních součinnostech

Komu úkol kdy nešlo rozhodnout o výsledku součinnosti: uživatel Evolia, kterému budou udělovány úkoly při nerozhodných součinnostech

HTML náhled (*.XLST): cesta k translančnímu souboru, který XML převede na HTML 4.01

Fáze importu

Import dat probíhá vždy jen pro subjekty, které jsou součástí dané hromadné součinnosti. Importují se pouze záznamy, které mají stav v tabulce LustraceBanky nastaven na „ResponseReceived“. Tedy již odpověď přišla. Není nutné, aby byla k dispozici odpověď ze všech bank. Data se importují postupně tak, jak přichází jednotlivé odpovědi.

Po dokončení importu se pro subjekty, kterých se to týká, nastaví stav na „DataImported“ a značka Importovano na true v tabulce Lustrace banky. Může dojít ke speciálnímu případu, kdy subjekt z XML odpovědi není nalezen mezi povinnými spisu, nebo se vlivem slučování subjektů liší ID subjektu v souboru .list lustrace a ID subjektu v databázi. V tomto případě není možné import provést automaticky. V tabulce LustraceBanky je nastaven stav „SubjectNotFound“. K tomuto nastavení dojde ve třetí fázi addinu. Dále ve čtvrté fázi je k těmto subjektů vygenerován úkon a v závislosti na nastavení i úkol. Ty informují uživatele o tom, že subjekt se nepodařilo nalézt a musí být naimportován ručně z XML odpovědi. Těmto subjektům je pak ve čtvrté fázi v tabulce LustrceBanky nastavena značka Imported na true a považují se za vyřízené. Na konci této fáze dojde ještě ke kontrole, zda v rámci hromadné součinnosti existují v tabulce LustraceBanky ještě záznamy, které nemají nastavenu značku Imported na stav true. Pokud ne, dojde k přepnutí do páté fáze. Kvůli kompatibility z původním addinem BANKY je možné se ještě z fáze 5 vrátit do fáze 4. Je to z důvodu, že není možné z původních bank zjistit na kolik odpovědí se ještě čeká. Po vyřízení všech odpovědí původních bank již pátá fáze bude korektně indikovat importování všech odpovědí.

Obsah importu

Samotný import dat se skládá z několika samostatných kroků:

Import účtů – číslo účtu je standardizováno do formátu 20-ti místného čísla doplněného zleva nulami. Takto je porovnáváno se všemi účtu daného povinného v databázi. V případě, že účet není nalezen dojde k jeho vytvoření a zapsání aktuálního zůstatku do poznámky a speciálních sloupců (mhZustatek a mhZustatekDatumZjisteni) a výsledek lustrace je pozitivní. Pokud je účet nalezen a zůstatek není NULL a liší se od aktuálního zůstatku je lustrace považována za pozitivní (došlo ke změně). Toto chování lze nastavit v nastavení Addinu volbou „Minimální positivní změna zůstatku pro generování úkolu“.
Do poznámky k účtu jsou přidány informace o exekucích pro daný účet. Limit velikosti poznámky je 4000 znaků. Poté dojde k jejímu oříznutí z konce.

Podle hodnoty z XML se rozdělují účty typy:

  • B – Korunový účet
  • S – Vklad
  • T – Termínovaný vklad

Import vkladních knížek – Importuje se do stejné tabulky jako účtu. Pravidla pro import jsou také velmi podobná. Jako typ účtu je nastaven Vkladní knížka.
Cenné papíry – Importují se do majetkových hodnot Cenné papíry. Existence cenného papíru v databázi je prověřena na základ čísla ISIN. Pokud cenný papír existuje, je ještě porovnána hodnota jejich počtu. V případě odlišnosti je lustrace pozitivní.
Schránky – Nakonec dojde k importu schránek do ostatních majetkových hodnot. Porovnává se na základě ID schránky.

Tvar poznámky úkonu

Pro každý nalezený účet bez ohledu na to, jestli došlo k jeho změně nebo importu jako nového jsou do poznámky vloženy informace o aktuálním zůstatku účtu a uvalených exekucí na tento účet.Dále pokud počet není nulový, je přiložena informace o počtu cenných papírů, vkladních knížek a schránek.

Podrobný popis zpracování odpovědí

Provede se kontrola na přítomnost connection stringu a platnost pracovního adresáře (+BANKY). Pak se vyhledají součinnosti ve fázi 4 a provede se import odpovědí v dané součinnosti. Nejříve se provede kontrola, že XMl obsahuje element Vyzva a že není prázdný. Pak se provede kontrola na přítomnost elementu Odpovedel. Pokud není element přítomen fáze vrátí varování, ale import neukončí. Poté se získá číslo hromadné součinnosti a provede se nalezení dané součinnosti v Evoliu. Musí být právě jedna, jinak se import neprovede. XML se převede do HTML, pokud je přítomen XLST soubor a XML i HTML se přidá do úkonu, který se uloží do nalezené hromadné součinnosti. Fáze poté zpracovává jednotlivé subjekty.
Nejdříve se provede kontrola, jací uživatelé jsou přiřazeni do jednotlivých druhů úkolů. Chybějící jsou nahrazeny klíčovým slovem [[vyřizuje]]. Pak se prochází jednotlivé subjekty. U nich jsou zapsány i spisy, ke kterým mají patřit. Takže se najde spis a subjekt v Evoliu. Zkontroluje, zda subjekt patří do spisu. Když ne import odpovědi pro daný subjekt se neprovede a Evolio server ohlásí chybu. Dále zkontroluje, jestli spis patří do součinnosti, na kterou se odpovídá. Když ne, Evolio server ohlásí varování a import pokračuje dál. Z XML odpovědi se vyjme do nového XML souboru jen část, která souvisí s daným subjektem a provede se její zpracování. Účty a cenné papíry se importují do majetkových hodnot. Nově vzniklé XML se převede do HTML. HTML i XML se uloží do úkonu spisu. Řídícím členem, jestli je součinnost pozitivní nebo ne je element zprava.

Úspěšně zpracované XML soubory dostanou příponu .zpracováno.
Pokud byl výsledek lustrace (úkon) aktualizován, pak je kontrolována existence úkolu dle níže zmíněných kritérií. Pokud existuje takový úkol, pak není úkol vytvářen.

if (lustrationResult == LustrationResult.New || lustrationResult == LustrationResult.Changed)
taskExists = this.TaskExists(„Pozitivní součinnost“, lustrationType, subject.CaseID, subject.ClientID, massCooperationNumber, subject.Subject, subject.Info, taskUser, ref taskID);

if (lustrationResult == LustrationResult.Error || lustrationResult == LustrationResult.Other) taskExists = this.TaskExists(„Problém při zpracování součinnosti“, lustrationType, subject.CaseID, subject.ClientID, massCooperationNumber, subject.Subject, subject.Info, taskUser, ref taskID);

string.Format(@“Select IDPlánovač from Plánovač where IDSmlouvy = {0}

AND ČÍSLO_KLIENTA = {1}

AND Komu = ‚{2}‘

AND Kategorie = ‚Kontroly‘

AND Předmět = ‚{3} {4}‘

AND Poznámka LIKE ‚{5} – {6}%'“, new object[] { caseID, clientID, user, taskName, lustrationType, subjectName, massCooperationNumber });