Převody vystavených faktur z externích systémů do iFIS*Pohledávky

Z BBM Dokumentace iFIS
Skočit na navigaciSkočit na vyhledávání

Popis datového rozhraní pro převod dat z externích systémů do iFIS/Pohledávky

Externí aplikace může zajišťovat přenos pohledávek (vystavené faktury, vystavené zálohové listy) do datového rozhraní iFIS/Pohledávky. Samotný zápis dat do datových struktur iFIS je možné provádět buď prostřednictvím SOAP webové služby, nebo pomocí konektorů (funkcí) na úrovni databáze Oracle iFIS. Návratovou hodnotou volání datového rozhraní je vždy jednoznačné číslo vytvořeného záznamu v iFIS/Finance. Přes tento identifikátor může externí systém zjišťovat podrobnosti o stavu zpracování jednotlivých dokladů.

Technická specifikace webové služby IMPODFA je k dispozici v připojených dokumentech:

ImpODFA_docHtml.zip

ImpODFA doc.xsd

pohledavka_faktura_24132_request.xml

iFIS pohledavka_faktura_24132.jpg

Technická specifikace databázové části datového rozhraní PACKAGE fis_01.IMP_ODFA

  • Pro fyzický zápis pohledávkových dokladů do iFIS/Finance je využívána databázová package IMP_ODFA, která obsahuje jednotlivé výkonné funkce (vstupní konektory).
  • Vstupním konektorem se rozumí databázová funkce, která umožňuje externím aplikacím požadovanou manipulaci s daty iFIS
  • Externí aplikace ovlivňuje chování konektoru zadáním tzv. vstupních argumentů
  • Vstupní argumenty konektorů, které mají definovány default hodnoty, jsou nepovinné
  • Argumenty, u nichž jsou uvedeny možné hodnoty, nebo odkazy na domény, nebo odkazy na jiné číselníky jsou na tyto hodnoty kontrolovány
  • Rozhraní po provedení transakce vrací odpověď, ve které je obsažen popis chyby a nebo ID záznamu ve vstupním zásobníku iFIS/Finance/Pohledávky.
  • Další pravidla jsou součástí popisu příslušných funkcí (viz. dále).


/***********************************************************************
   Jmeno:    IMP_ODFA
   Ucel:    Import pohledávek do FIS*Finance
***********************************************************************/
FUNCTION Otevri_Doklad
POPIS : Funkce otevira rozhrani pro nasledne zpracovani pohledavky

VYSTUP: výstupem je popis chyby, pokud nějaká chyba nastane
VSTUP : "firmidno_" vnitrni identifikator adresy firmy oberatele
                   (nepovinny), ma prednost pred argumentem "ico_"
        "ico_" ICO firmy odberatele, povinne, pokud neni uveden argument
                  "firmidno_"
        "kopridno_" vnitrni identifikator adresy firmy konecneho
            prijemce (nepovinny), ma prednost pred argumentem "icokp_"
        "icokp_" ICO firmy konecneho prijemce, nepovinne. Pokud je
                  uveden argument "kopridno_", ignoruje se
        "mesic_" ucetni obdobi pohledavky - mesic, nepovinne
        "rok_" ucetni obdobi pohledavky - rok, nepovinne
        "mena_" Mena pohledavky, povinne
        "penale_" denni penale v %, nepovinne
        "vsmb_" variabilni symbol, max 10 znaku, nepovinne
        "ksmb_" konstantni symbol, max 10 znaku, nepovinne
        "ssmb_" specificky symbol, max 10 znaku, nepovinne
        "pril_" prilohy, max 20 znaku, nepovinne
        "cdl_" číslo dod.listu nebo číslo dokladu v externí aplikaci, max 15 znaku, nepovinne
        "dodp_" čislo objednávky nebo dodavkoveho prikazu, max 10 znaku, nepovinne
        "popis_" Popis dokladu, volny text max 255 znaku, nepovinne
        "zprava_" Zprava pro odberatele, volny text max 255 znaku, nepovinne
        "zppl_" zpusob uhrady, možné hodnoty PPrikazem,H-Hotovosti, I-Inkasem, povinne
        "datv_" Datum vystaveni pohledavky,nepovinne
        "dats_" Datum splatnosti pohledavky,nepovinne
        "datd_" datum plneni DUZP, nepovinne
        "vf_"  typ dokladu, povinné, možné hodnoty 'N' - vystavená faktura/vnitropodniková faktura nebo'P' - zálohový list
"krech_nr_" cislo importovaneho dokladu v externí aplikaci, max 15 znaku, povinne
        "zrus_id_" zatim nevyuzivany parametr, max 15 znaku nepovinne
        "rel1_id_" zatim nevyuzivany parametr, max 15 znaku nepovinne
        "nsidno_"    id nakladoveho strediska, nepovinne, default null
        "typaidno_"  id typu akce, nepovinne, default null
        "akce_"      id akce, nepovinne, default null
        "komidno_"   id komplexní polozky, nepovinne, default null
        "rsridno_"   id radku smlouvy, nepovinne, default null 
	  "vlucidno_"  id vlastniho bank. uctu, nepovinne, default null
        "schvaluje_" osobni nebo rodne cislo osoby, ktera schvaluje doklad,
                     default null
        "prpartn_"   konečný příjemce i s adresou, volný text max 255 znaku,
                     default null, přednost  kopridno_ a icokp_
        "ns_"        číslo NS, přednost  nsidno_, default null
        "ta_"        číslo TA, přednost  typaidno_, default null
        "nakce_"     název akce, přednost  akce_, default null
        "kp_"        číslo komplexní položky, přednost  komidno_, default null
        "ejidno_"    číslo cílové EJ, default null - v tom pripade je to EJ uzivatele,
        "todfidno"   id deníku, default null
        "tof_"       číslo deníku, default null
        "datk_"      datum kurzu, default null

NAVRATOVA HODNOTA : Pri chybe vraci FALSE jinak vraci TRUE.
***********************************************************************/
 
/***********************************************************************
   FUNCTION Zapis_Radek
POPIS : Funkce zapisuje radek pohledavky. Radky nelze zapisovat, pokud
  Nebylo provedeno otevreni dokladu pomoci funkce Otevri_Doklad.

VSTUP : "text_" text radku, nepovinne, max 255 znaku
        "mj_" merna jednotka, max 10 znaku, nepovinne
        "pocet_" mnozstvi, nepovinne
        "cenamj_" cena za jednotku v domaci nebo cizi mene, nepovinne
        "cenc_" zaklad dane v domaci mene, povinne
        "zcm_" castka v cizi mene, povinne, pokud je zavazek v cizi mene
        "zdcm_" zaklad dane v cizi mene nepovinne
        "dcm_" castka DPH v cizi mene, nepovinne
        "hdan_" castka DPH v domaci mena, povinne
        "sazba_" sazba DPH v %
        "stav_" stav radku (kvuli zaloham), povinne, povolena pouze hodnota 'E'
        "DANIDNO_" id sazby DPH viz. sazebník DPH (J_SZD), nepovinne, default null
        "nsidno_"   id nakl. Strediska (ELAURI_VW), nepovinne, default null
        "typaidno_" id typu akce, nepovinne (ELAURI_VW), default null
        "akce_"     id akce, nepovinne (ELAURI_VW), default null
        "komidno_"  id komplexni polozky (ELAURI_VW), default null
        "rsfidno_"  id radku ceny ze smlouvy (viz iFIS/Smlouvy), default null
"kodal_"    id analytickeho uctu
"audal_"    číslo analytického účtu, default null
"ns_"       číslo NS, přednost má nsidno_, default null
"ta_"       číslo TA, přednost má typaidno_, default null
"nakce_"    název akce, přednost má akce_, default null
"kp_"       číslo komplexní položky, přednost má komidno_, default null

VYSTUP : "Chyba" - text chyboveho hlaseni pri chybe.
NAVRATOVA HODNOTA : Pri chybe vraci FALSE jinak vraci TRUE.
***********************************************************************/



/***********************************************************************
   FUNCTION Uzavri_Doklad
POPIS :  Funkce provadi formalni kontroly uplnosti dokladu, uzavira jej
         pro dalsi zpracovani v uloze Finance a inicializuje rozhrani
         pro zpracovani dalsiho dokladu.
VYSTUP : "Chyba" - text chyboveho hlaseni pri chybe.
      "CisloDokl" - cislo dokladu pod kterym byl doklad ulozen do
             tabulky rozhrani
NAVRATOVA HODNOTA : Pri chybe vraci FALSE jinak vraci TRUE.
***********************************************************************/


/***********************************************************************
   PROCEDURE Reset_Doklad
POPIS :  V pripade ze dojde k chybe pri zapisu radku dokladu nebo pri
         uzavreni dokladu je nutne inicializovat rozhrani touto
         procedurou. Zaroven tato procedura provadi rollback k okamziku
         otevreni dokladu.
***********************************************************************/


Podrobnější komentáře k některým vstupním argumentům v db rozhraní PACKAGE fis_01.IMP_ODFA:

a) funkce otevri_doklad

  • firmidno_ a ico_ - Jeden z těchto parametrů musí být v rámci volání funkce vyplněný. Pokud jsou vyplněny oba, přednost má firmidno_, ve kterém se předpokládá jednoznačný identifikátor partnera. Pokud je vyplněn pouze porametr ico_, hledá se firma s IČO, které je obsahem parametru. U takové firmy se hledá její hlavní část. Pokud žádná její část není označena jako hlavní, kontroluje se, zda existuje pouze jedna. Ta se předvyplní na importovaný doklad v iFIS/Pohledávky. Pokud jich existuje více, je vydáno chybové hlášení a předání podkladů pro vystavení pohledávky skončí neúspěšně chybou.
  • kopridno_ a icokp - parametry pro identifikaci konečného příjemce. Mohou být prázdné. Jinak platí totéž, co platí i pro předchozí dvojici vstupních parametrů.
  • mesic_ a rok_ - udávají účetní období, do kterého se má budoucí pohledávkový doklad zapsat. Když jsou prázdné, pohledávka se zapíše do aktuálně otevřeného období pro pohledávky (lokální parametr ODFAMES1)


b) funkce ZapisRadek

  • sazba_ - pokud je zadána pouze číselná hodnota sazby DPH, pak se do na doklad v iFIS předvyplňuje pouze tato základní hodnota, konkrétní sazbu DPH pak musí uživatel iFIS vybrat ze seznamu možných hodnot.
  • danidno_ - identifikátor sazby DPH ze sazebníku DPH (J_SZD.szd_id), vstupní parametr sazba_ musi být uveden současně také a nesmí být v rozporu s identifikací sazby v parametru danidno_.
Pozor Pozor
I na nedaňové řádky faktury je nutné uvádět sazbu daně určenou výhradně pro nedaňové finanční operace. Na zálohových listech je vždy uváděna sazba 0% Není daňový doklad.

Fakturované částky nejsou v iFIS nikterak kontrolovány. Kontroly částek nejsou prováděny ani podle sazby DPH ani podle kurzu. Výpočty fakturovaných částek zajišťuje externí aplikace. iFIS tyto částky pouze přebírá 1:1.


Názorný příklad zápisu nového dokladu pomocí konektorů iFIS přes standardní prostředek SQL*Plus.

SQL> connect USER_EXT_APL_XXX /XXXXX@testdb
Spojeno.
SQL> @C:\imp_pohl
Byl vygenerovan podklad č.117 pro vystavení pohledavky v iFIS.

Procedura PL/SQL úspěšně dokončena.

Potvrzení transakce dokončeno.


Obsah souboru IMP_POHL.sql:

Set serveroutput on size 1000000;
declare
    chyba varchar2(2000);
    cislodokl number(10);
  begin
    if not imp_odfa.otevri_doklad(
            chyba,
            null,  -- id partnera - firmy
            '40755592', --ICO (ICO BBM z evidence partneru)
            null,   -- id konecneho prijemce
            null,   -- ico konecneho prijemce
            null,   -- mesic
            null,   -- rok
            'CZK',  -- mena
            null,   -- denni penale v procentech
            null,   -- slevy v procentech
            null,   -- variabilni symbol
            '308',  -- konstantni symbol
            null,   -- specificky symbol
            null,   -- prilohy
            null,   -- cislo dodaciho listu
            null,   -- dodavkovy prikaz
            'pokusny import', -- popis dokladu
            'Zprava pro prijemce',
            'P',           -- zpusob uhrady
            trunc(sysdate), -- datum vystaveni dokladu
            trunc(sysdate+10), -- datum splatnosti
            trunc(sysdate), -- DUZP
            'N',            -- typ dokladu, N=faktura, P=zalohovy list
            1,              -- ZDE UVEST cislo importovaneho dokladu z externí aplikace(nelze opakovane zapisovat stejne cislo dokladu)
            null,           -- zatim se nevyuziva
            null,           -- zatim se nevyuziva
            null,           -- id nakladoveho strediska
            null,           -- id typu akce
            null,           -- id akce
            null,           -- id komplexni polozky
            null,           -- id radku smlouvy (vyuziva se jen pri generovani z RS)
            null            -- id vlastniho bankovniho uctu
    ) then
      imp_odfa.reset_doklad;
      RAISE_APPLICATION_ERROR(-20103, chyba);   
    end if;
    /*zacatek smycky pro zapsani vsech radku dokladu*/
    if not imp_odfa.zapis_radek(chyba,
                       'Text 1. radku',
                       'ks', -- merna jednotka
                       3,    -- pocet mernych jednotek,
                       500,  -- cena za MJ
                       1500, -- zaklad dane
                       null, -- castka v cizi mene vcetne dane
                       null, -- zaklad dane v cizi mene
                       null, -- dan v cizi mene
                       75,   -- èástka DPH
                       5,    -- hodnota sazby DPH
                       'E',
                       null, -- id sazby DPH
                       null, -- id nakladoveho strediska
                       null, -- id typu akce
                       null, -- id akce
                       null, -- id komplexni polozky
                       null  -- id radku smlouvy (vyuziva se pri generovani z RS)
    ) then
      imp_odfa.reset_doklad;
      RAISE_APPLICATION_ERROR(-20104, chyba);   
    end if;
    --konec smycky pro zaspani vsech radku dokladu
    if not imp_odfa.uzavri_doklad(chyba,cislodokl) then
      imp_odfa.reset_doklad;
      RAISE_APPLICATION_ERROR(-20105, chyba);   
    end if;
    -- ZDE je mozno prevzit cislo vygenerovaneho podkladu pro vystavení pohledavky iFIS, které je ulozeno v promenne cislodokl
    dbms_output.put_line('Byl vygenerovan podklad č.'||cislodokl||' pro vystavení pohledavky v iFIS.');
  end;
/
commit;