Popis ovladače HBXML.hbd

Obecný ovladač, pomocí kterého je možné provádět univerzální exporty platebních příkazů a importy bankovních výpisů.

Přenosovým médiem je XML soubor, který má přesně definovanou strukturu. V praxi to znamená, že pokud se vyexportuje platební příkaz, na disku vznikne XML soubor, který je dále možno uživatelsky zpracovávat (např. XSL transformací apod.). V případě importu bankovního výpisu je třeba, aby byl externí bankovní výpis uložen ke zpracování v ABRA Gen v souboru XML definované struktury v cestě zadané v parametrech ovladače HBXML.hbd.

Popis struktury pro Bankovní výpis

V následující tabulce je uveden popis položek XML a jejich přiřazení k položkám databázových tabulek ABRA Gen, kde tabulka BankStatements je tabulka hlaviček bankovních výpisů a BankStatements2 je tabulka řádků bankovních výpisů. Více viz popis Struktur a definic GenDoc.chm.

XML element Popis Cílová položka v systému ABRA Gen
<ABRA-GX-BankStatement> Povinné - identifikace souboru. Vždy na první úrovni. ---
<DocDate> Nepovinné - datum bankovního výpisu ve formátu YYYYMMDD. Element může být obsažen pouze jednou. BankStatements.DocDate$DATE
<ExternalNumber> Nepovinné - číslo výpisu. Element může být obsažen pouze jednou. BankStatements.ExternalNumber
<Rows> Řádky příkazu (Subelement elementu <ABRA-GX-BankStatement>) - obsahuje tolik subelementů <Row>, kolik má bankovní výpis řádků. Povinné. Element může být obsažen pouze jednou. ---
<Row>

Subelement <Rows>. Jeden řádek výpisu.

Obsahuje následující elementy:

---
<DocDate> Subelement <Row>. Povinné - datum řádku výpisu ve formátu YYYYMMDD BankStatements2.DocDate$DATE
<Credit> Subelement <Row>. Povinné - příznak Kreditu ("A"... kredit, "N"... debet) BankStatements2.Credit
<Amount> Subelement <Row>. Povinné - částka na řádku. Na 2 desetinná místa, oddělovačem je '.' (tečka) BankStatements2.Amount
<CurrencyCode> Subelement <Row>. Nepovinné - ISO kód měny. Pokud neuveden, převezme se měna daného účtu nebo <CurrencyBankCode>.

BankStatements2.Currency_ID

odpovídá kódu měny v tagu <CurrencyCode> nebo
<CurrencyBankCode>

<CurrencyBankCode> Subelement <Row>. Nepovinné - ČNB kód měny. Pokud neuveden, převezme se měna daného účtu nebo <CurrencyCode>.
<VarSymbol> Subelement <Row>. Nepovinné - Variabilní symbol obratu. Dle tohoto symbolu se po přijetí do ABRA Gen provádí spojení s placeným dokladem. BankStatements2.VarSymbol
<LocalAmount> Subelement <Row>. Nepovinné - pokud je vyplněno <Amount> - částka v lokální měně BankStatements2.LocalTAmount
<OwnBankAccount> Subelement <Row>. Slouží ke kontrole. Nepovinné - číslo bankovního účtu, pro který je daný řádek. Ve formátu 6+10+4 (předčíslí+číslo+kód banky - vše bez oddělovačů). Pokud tento element není uveden, při importu se neprovede kontrola účtu a řádek bude automaticky považován za řádek k účtu, jehož BV je právě zadáván. Pokud je uvedeno a účet nesouhlasí, řádek nebude přijat. -
<BankAccount> Subelement <Row>. Číslo protiúčtu operace.

BankStatements2.BankAccount

Dále platí: Pokud existuje uživatelská položka X_BankAccount, Y_BankAccount, S_BankAccount nebo U_BankAccount vázaná k záznamu v tabulce BankStatements2, naplní se z tagu <BankAccount>. Naplní se první z existujících uživatelských položek. Existence položek se kontroluje v pořadí, jak jsou výše uvedeny. Např. pokud existuje položka X_BankAccount, naplní se a další výše uvedené uživatelské položky neplní.

<SpecSymbol> Subelement <Row>. Specifický symbol operace. BankStatements2.SpecSymbol
<ConstSymbolCode> Subelement <Row>. Konstantní symbol operace. V ABRA Gen se nevyužívá. -
<SwiftCode> Subelement <Row>. SwiftCode protistrany. Neplní se v žádném ovladači (nepoužívá se). -
<IBANCode> Subelement <Row>. IBANCode protistrany. Neplní se v žádném ovladači (nepoužívá se) -
<Description> Subelement <Row>. Popis operace (AV - zpráva). BankStatements2.Text

Příklad xml souboru, který vznikl na základě přijatého souboru s bankovním výpisem z banky a který bude moci být naimportován do vystavovaného bankovního výpisu obecným e-bankingovým driverem HBXML.hbd:

<?xml version="1.0" encoding="Windows-1250" ?>

<ABRA-GX-BankStatement>
 <ExternalNumber>00196</ExternalNumber>
 <DocDate>20021108</DocDate>
 <Rows>
<Row>
    --- údaje řádku 1 ---
  <DocDate>20021108</DocDate>
   <Credit>A</Credit>
   <Amount>442.50</Amount>
   <VarSymbol>2419911124</VarSymbol>
   <OwnBankAccount>00000001150732930300</OwnBankAccount>  
   <CurrencyCode>CZK</CurrencyCode>
</Row>

<Row>
    --- údaje řádku 2 ---
   <DocDate>20021109</DocDate>
   <Credit>N</Credit>
   <Amount>4550.50</Amount>
   <VarSymbol>2555551124</VarSymbol>
   <OwnBankAccount>00000001150732930300</OwnBankAccount>  
   <CurrencyCode>CZK</CurrencyCode>
</Row>

  --- atd. dalších řádků ... ---
 </Rows>
</ABRA-GX-BankStatement>

Při přebírání souboru NENÍ prováděna kontrola správnosti XML souboru (PARSE), proto je třeba, aby byl formát korektní.

Případ, kdy přijatý soubor z banky obsahuje data z více bank.výpisů a více účtů

Může nastat situace, kdy jeden soubor, který jste přijali od banky, obsahuje více než jeden bankovní výpis z více než jednoho bankovního účtu. Příkladem může být soubor pro elektronickou výměnu dat mezi bankou a klientem, ve formátu "Kompatibilní média", v němž je každý výpis zahájen kódem 074 se specifikacemi výpisu (číslo bankovního výpisu, datum výpisu ….) a dále pak pokračují řádky s kódem 075, kde je číslo vlastního účtu, datum transakce, částka a jiné.

  • Soubor obsahuje platby z jednoho účtu, ale více bankovních výpisů:

    Import e-bankingem do dokladu bankovního výpisu neřeší možnost importovat z jednoho souboru různé bankovní výpisy. (Element <Rows> v importní xml souboru může být právě jednou, pokud by byl uveden vícekrát, nebudou jeho další výskyty driverem HBXML.hbd zpracovány). Situaci je tedy třeba řešit např. převedením jednoho souboru z banky na několik xml souborů, z nichž každý bude odpovídat jednomu bankovnímu výpisu. Případně, pokud by nebylo třeba zachovat informace o externím čísle výpisu z banky a jeho datu vystavení, by bylo možno řádky z různých bankovních výpisů vnořit všechny jako subelementy jednoho elementu <Rows> (závisí pochopitelně na tom, jakým způsobem zachováváte kontinuitu s číslováním banky a zda je možné zadat platby z více bankovních výpisů pod jeden doklad BV v ABRA Gen či nikoliv.)

  • Soubor obsahuje platby z více účtů:

Tento problém může být řešen pomocí elementu <OwnBankAccount>. Jak je uvedeno v popisu elementu výše, je-li element uveden, provádí se kontrola, zda daný řádek odpovídá účtu, do něhož se e-bankingem importuje, tj. účtu zadanému předtím v hlavičce editovaného bankovního výpisu. Tedy načtou se jen ty řádky, které danému bankovnímu účtu odpovídají, ty které odpovídají jinému číslu účtu je třeba obdobně naimportovat do jiného dokladu bankovního výpisu, v jehož hlavičce bude vybrán odpovídající bankovní účet. Zde je třeba ale ošetřit, zadání správného datumu bankovního výpisu a jeho externího čísla, jelikož elementy <DocDate> a <ExternalNumber> mohou být v importní xml souboru právě jednou stejně jako element <Rows>, pokud by byly uvedeny vícekrát, nebudou jejich další výskyty driverem HBXML.hbd zpracovány.

Popis struktur pro Platební příkaz

XML element Popis
<ABRA-GX-PaymentOrder> Identifikace souboru s platebními příkazy z ABRA Gen - v první úrovni
<CompanyName> Jméno vlastní firmy
<DueDate> Datum splatnosti
<SentDate> Datum odeslání příkazu
<DocDate> Datum dokladu
<OrdNumber> Číslo příkazu
<LocalCurrencyCode> ISO kód místní měny (CZK)
<LocalCurrencyBankCode> ČNB kód místní měny (číslo)
<LocalCountryCode> ISO kód tuzemska (CZ)
<BankAccount> Údaje o vlastním účtu (Subelement elementu <ABRA-GX-PaymentOrder>) - obsahuje 5 následujících elementů
<Name> Subelement <BankAccount>. Název účtu
<BankAccount> Subelement <BankAccount>. Číslo účtu ve formátu 6+10+4 (předčíslí + číslo + kód banky - bez oddělovačů)
<SpecSymbol> Subelement <BankAccount>. Specifický symbol účtu
<CurrencyCode> Subelement <BankAccount>. ISO kód měny účtu
<CurrencyBankCode> Subelement <BankAccount>. ČNB kód měny účtu
<SwiftCode> Subelement <BankAccount>. Swift kód vlastního bank. účtu.
<IBANCode> Subelement <BankAccount>. IBAN kód vlastního bank. účtu.
<BankCountryCode> Subelement <BankAccount>. Kód země banky vlastního bank. účtu. Pokud není vyplněn, tak se naplní kódem země z Firemních údajů.
<CompanyAddress> Údaje o vlastní firmě (Subelement elementu <ABRA-GX-PaymentOrder>) - obsahuje 4 následující elementy
<Street> Subelement <CompanyAddress>. Adresa - Ulice.
<City> Subelement <CompanyAddress>. Adresa - Město.
<Country> Subelement <CompanyAddress>. Adresa - Stát.
<PostCode> Subelement <CompanyAddress>. Adresa - PSČ.
<OrgIdentNumber> Subelement <CompanyAddress>. IČO vlastní firmy.
<VATIdentNumber> Subelement <CompanyAddress>. DIČ vlastní firmy.
<Rows> Řádky příkazu (Subelement elementu <ABRA-GX-PaymentOrder>) - obsahuje tolik subelementů <Row>, kolik je řádků příkazu.
<Row> Jeden řádek příkazu (Subelement elementu <Rows>). Obsahuje následující elementy:
<Position> Subelement <Row>. Pozice
<DueDate> Subelement <Row>. Datum splatnosti
<Description> Subelement <Row>. Popis (AV - zpráva)
<Amount> Subelement <Row>. Částka v měně příkazu (desetinný oddělovač je "." (tečka))
<CurrencyCode> Subelement <Row>. ISO kód měny
<CountryCode> Subelement <Row>. ISO kód země
<ForeignIssue> Subelement <Row>. Způsob platby dodatečných poplatků transakce ("0"... OUR, "1"... BEN,"2"... SHA )
<Urgent> Subelement <Row>. Urgentnost platby ("0"... STD, "1"... URG)
<VarSymbol> Subelement <Row>. Variabilní symbol
<ConstSymbolCode> Subelement <Row>. Konstantní symbol
<SpecSymbol> Subelement <Row>. Specifický symbol
<TargetBankAccount> Subelement <Row>. Číslo protiúčtu
<TargetBankName> Subelement <Row>. Název banky protiúčtu
<TargetBankStreet> Subelement <Row>. Ulice banky protiúčtu
<TargetBankCity> Subelement <Row>. Město banky protiúčtu
<TargetBankPostCode> Subelement <Row>. PSČ banky protiúčtu
<TargetBankCountry> Subelement <Row>. Kód země banky protiúčtu
<TargetBankCountryCode> Subelement <Row>. Kód země banky protiúčtu
<TargetCompany> Subelement <Row>. Údaje o protistraně. Obsahuje následujících 5 elementů.
<Name> Subelement <TargetCompany>. Jméno firmy
<Street> Subelement <TargetCompany>. Adresa - Ulice
<City> Subelement <TargetCompany>. Adresa - Město
<PostCode> Subelement <TargetCompany>. Adresa - PSČ
<Country> Subelement <TargetCompany>. Adresa - Kód země
<CountryName> Subelement <TargetCompany>. Adresa - Jméno země
<CountryNumCode> Subelement <TargetCompany>. Adresa - Třímístný číselný kód daného státu podle ISO3166.
<CurrencyBankCode> Subelement <Row>. Číselný bankovní kód měny.
<SwiftCode> Subelement <Row>. Swift kód.
<PDocumentsDisplayNames> Subelement <Row>. Pokud řádek platí více než jeden doklad, je zde seznam placených dokladů.
<SEPAPayment> Subelement <Row>. Příznak o zahraniční platbě s příznakem SEPA. SEPA platby jsou v systému ABRA Gen řešeny pomocí definovatelných položek dohodnutého jména SEPAPayment vytvořených k řádku plat. příkazu. Pokud taková položka existuje a je naplněna pomocí uživatelského formuláře na platebním příkazu, ovladač na ni reaguje a vyexportuje ji. Dále viz realizace plateb s příznakem SEPA.

Všechny elementy (u kterých to připadá v úvahu) jsou s diakritikou, v kódování 1250 (potažmo v kódování ABRA Gen).

Parametry tohoto ovladače jsou uspořádány do následujících záložek:

Obsažené záložky: Platební příkazy Bankovní výpisy

Platební příkazy

Název Doplňující popis
Cesta pro ukládání vygenerovaného platebního příkazu Zde je třeba zadat platné jméno adresáře včetně disku a koncového zpětného lomítka. Adresář musí být vytvořen.
Po exportu spustit Po vlastním exportu je možné spustit externí program, například program, který rovnou umožní vytvořený el. platební příkaz odeslat do banky (odpovídající stránka WWW). Ve volání programu lze využívat parametry - viz popis u funkce Parametry.

Bankovní výpisy

Název Doplňující popis
Cesta k datům bankovního výpisu Zde je třeba zadat platné jméno adresáře včetně disku a koncového zpětného lomítka. Adresář musí být vytvořen.
Před importem spustit Před vlastním importem je možné spustit libovolný externí program. Zadaný program se spustí ještě před vyhledáním importních souborů. Tuto vlastnost je tedy možné využít pro spuštění programu, který stahuje výpisy z banky.
Soubor výpisu po zpracování

Nastavení, co se má se souborem výpisu stát po zpracování. Možnosti jsou následující:

  • neprovádět žádnou akci
  • přesunout soubor do jiné složky (v tom případě je nutné ještě nastavit cestu do této složky, viz parametr Soubor výpisu přesunout do složky)
  • smazat
Soubor výpisu přesunout do složky Složka, do které se má soubor výpisu přesunout po zpracování. Relevantní pouze v kombinaci s nastavením předchozího parametru na "Přesunout soubor do jiné složky".