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_    vnitřní identifikátor adresy firmy oběratele (nepovinný), má přednost před argumentem ico_
        ico_         IČO firmy odběratele, (nepovinné)
        kopridno_    vnitřní identifikátor adresy firmy konečného příjemce (nepovinný), má přednost před argumentem icokp_
        icokp_       IČO firmy konečného příjemce, nepovinné. Pokud je uveden argument kopridno_ , ignoruje se
        mesic_       účetní období pohledávky - měsíc, nepovinné
        rok_         účetní období pohledávky - rok, nepovinné
        mena_        měna pohledávky, povinné
        penale_      denní penále v %, nepovinné
        slevy_       slevy v procentech, nepovinné
        vsmb_        variabilní symbol, max 10 znaků, nepovinné
        ksmb_        konstantní symbol, max 10 znaků, nepovinné
        ssmb_        specifický symbol, max 10 znaků, nepovinné
        pril_        přílohy, max 20 znaků, nepovinné
        cdl_         číslo dodacího listu, max 15 znaků, nepovinné
        dodp_        číslo dodávkového příkazu, max 10 znaků, nepovinné
        popis_       popis dokladu, volný text max 255 znaků, nepovinné
        zprava_      zpráva pro odběr., volný text max 255 znaků, nepovinné
        zppl_        příznak způsobu úhrady, povinné
        datv_        datum vystaveni pohledávky, nepovinné
        dats_        datum splatnosti pohledávky, nepovinné
        datd_        datum uskutečnění zdanitelného plnění, nepovinné
        vf_          typ dokladu, povinné, povoleno pouze 'N' - faktura a 'P' zálohový list a 'D' dobropis
        krech_nr_    externí číslo importované pohledávky, max 15 znaků, povinné
        zrus_id_     zatim nevyužívaný argument, max 15 znaků nepovinné
        rel1_id_     externí číslo dobropisované pohledávky, pro typ dokladu "dobropis" povinný argument, max 15 znaků
        nsidno_      id nákladového střediska, nepovinné
        typaidno_    id typu akce, nepovinné
        akce_        id akce, nepovinné
        komidno_     id komplexní položky, nepovinné
        rsridno_     id řádku smlouvy, nepovinné
        vlucidno_    id vlastního bank. účtu, nepovinné
        schvaluje_   osobní nebo rodné číslo osoby, která schvaluje doklad, nepovinné
        prpartn_     konečný příjemce i s adresou, volný text max 255 znaků, povinné pokud není uveden některý z argumentů firmidno_, ico_, kopridno, icokp_, peridno_, přednostně se převezme uvedená hodnota kopridno_ nebo icokp_
        ns_          číslo NS, přednost má nsidno_, nepovinné
        ta_          číslo TA, přednost má typaidno_, nepovinné
        nakce_       název akce, přednost má akce_, nepovinné
        kp_          číslo komplexní položky, přednost má komidno_, nepovinné
        ejidno_      číslo cílové EJ, nepovinné - v tom případě se přebírá EJ uživatele, který doklad zapisuje,
        todfidno     id deníku, nepovinné
        tof_         číslo deníku, nepovinné
        datk_        datum kurzu, nepovinné
        peridno_     id osoby, nepovinné
        zdrojDat_    příznak zdroje dat, nepovinné
        prkidno_     id účetního pravidla, nepovinné
        zpus_odesl_  dokl_ příznak způsobu odeslání dokladu (doména), nepovinné
        odesl_partn_ adresa pro doručení faktury, nepovinné
        jazyk_       jazyk faktury, nepovinné
        spisznacka_  spisová značka, nepovinné
        faadrcp_     součást adresy obch.partnera - č.p., nepovinné
        faadrm_      součást adresy obch.partnera - místo, nepovinné
        faadrpsc_    součást adresy obch.partnera - PSČ, nepovinné
        faadrul_     součást adresy obch.partnera - ulice, default null,
        faadrz_      součást adresy obch.partnera - stát, nepovinné
        facast_      součást adresy obch.partnera - název části, nepovinné
        fadic_       DIČ obch.partnera, nepovinné
        fanazev_     název firmy och. partnera, nepovinné

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, povinné, pokud je závazek v domácí měně
        "zcm_"      castka v cizi mene, povinne, pokud je závazek v cizi mene
        "zdcm_"     zaklad dane v cizi mene nepovinne
        "dcm_"      castka DPH v cizi mene, nepovinne
        "hdan_"     castka DPH v domaci mena, nepovinne
        "sazba_"    sazba DPH v %, povinne
        "stav_"     stav radku (kvuli zaloham), povinne, povolena pouze hodnota 'E'
        "danidno_"  id sazby DPH viz. sazebník DPH, nepovinne
        "nsidno_"   id nakl. Strediska, nepovinne
        "typaidno_" id typu akce, nepovinne, nepovinne
        "akce_"     id akce, nepovinne, nepovinne
        "komidno_"  id komplexni polozky, nepovinne
        "rsfidno_"  id radku ceny ze smlouvy (viz. iFIS/Registr smluv), nepovinne
        "kodal_"    id analytickeho uctu (viz. iFIS/Účetní rozvrh), nepovinne
        "audal_"    číslo analytického účtu (viz. iFIS/Účetní rozvrh), nepovinne
        "ns_"       číslo NS, přednost má nsidno_, nepovinne
        "ta_"       číslo TA, přednost má typaidno_, nepovinne
        "nakce_"    název akce, přednost má akce_, nepovinne
        "kp_"       číslo komplexní položky, přednost má komidno_, nepovinne

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 vstupního zásobníku iFIS/Finance/Pohledávky (fis_xx.tekodih)
         "Pohledavka" , argument, zda se má rozhraní pokusit o automatické zpracování dat ve vstupním zásobníku iFIS/Finance/Pohledávky a založit tak konečnou pohledávkovou fakturu přímo v iFIS/Finance/Pohledávky, default 'N'
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_xx.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;