IFIS*Pohledávky a externí systémy

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. Datové rozhraní validuje zapisovaná data a následně je zapisuje do evidence iFIS/Pohledávky.

  • 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.
  • Vstupní konektory jsou volány buď napřímo a nebo přes webovou službu (WS).
  • 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.
  • Konektor kontroluje všechna databázová integritní omezení.
  • Jakákoliv chyba při zpracování transakce způsobí automatické odvolání všech změn, které funkce provedla.
  • Databázové funkce automaticky vrací po provedení transakce tzv. výstupní argumenty. Tyto výstupní argumenty informují externí aplikaci o stavu provedené transakce (informace o správně provedené transkaci, informace o jednoznačných identifikátorech nově založených záznamů v iFIS, informace o chybných vstupních argumentech, o porušených integritních omezeních, či o porušení pravidel pro uložení dat do iFIS/Finance).
  • Další pravidla jsou součástí popisu příslušných funkcí (viz dále).


Techická specifikace webové služby ImpODFA.wsdl

  <?xml version="1.0" encoding="UTF-8" ?> 
- <!-- 
Generated by the Oracle JDeveloper 10g Web Services WSDL Generator
  --> 
- <!-- 
Date Created: Thu Feb 08 09:58:42 CET 2007
  --> 
- <definitions name="ImpODFA" targetNamespace="http://fvz/ImpODFA.wsdl" xmlns="http://schemas.xmlsoap.
org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.
org/wsdl/soap/" xmlns:tns="http://fvz/ImpODFA.wsdl" xmlns:ns1="http://fvz/ImpODFA.xsd">
- <types>
- <schema targetNamespace="http://fvz/ImpODFA.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http:
//schemas.xmlsoap.org/soap/encoding/">
- <complexType name="fvz_ImpODFAImpl_zapis_radek_Out" jdev:packageName="fvz" xmlns:jdev="http://xmlns.oracle.
com/jdeveloper/webservices">
- <all>
  <element name="chybaOut" type="string" /> 
  <element name="return" type="boolean" /> 
  </all>
  </complexType>
- <complexType name="fvz_ImpODFAImpl_otevri_doklad_Out" jdev:packageName="fvz" xmlns:jdev="http://xmlns.oracle.
com/jdeveloper/webservices">
- <all>
  <element name="chybaOut" type="string" /> 
  <element name="return" type="boolean" /> 
  </all>
  </complexType>
- <complexType name="fvz_ImpODFAImpl_uzavri_doklad_Out" jdev:packageName="fvz" xmlns:jdev="http://xmlns.oracle.
com/jdeveloper/webservices">
- <all>
  <element name="chybaOut" type="string" /> 
  <element name="cislodoklOut" type="decimal" /> 
  <element name="return" type="boolean" /> 
  </all>
  </complexType>
  </schema>
  </types>
- <message name="zapis_radek0Request">
  <part name="text" type="xsd:string" /> 
  <part name="mj" type="xsd:string" /> 
  <part name="pocet" type="xsd:string" /> 
  <part name="cenamj" type="xsd:string" /> 
  <part name="cenc" type="xsd:string" /> 
  <part name="zcm" type="xsd:string" /> 
  <part name="zdcm" type="xsd:string" /> 
  <part name="dcm" type="xsd:string" /> 
  <part name="hdan" type="xsd:string" /> 
  <part name="sazba" type="xsd:string" /> 
  <part name="stav" type="xsd:string" /> 
  <part name="danidno" type="xsd:string" /> 
  <part name="nsidno" type="xsd:string" /> 
  <part name="typaidno" type="xsd:string" /> 
  <part name="akce" type="xsd:string" /> 
  <part name="komidno" type="xsd:string" /> 
  <part name="rsfidno" type="xsd:string" /> 
  </message>
- <message name="zapis_radek0Response">
  <part name="return" type="ns1:fvz_ImpODFAImpl_zapis_radek_Out" /> 
  </message>
  <message name="reset_doklad1Request" /> 
  <message name="reset_doklad1Response" /> 
- <message name="otevri_doklad2Request">
  <part name="firmidno" type="xsd:string" /> 
  <part name="ico" type="xsd:string" /> 
  <part name="kopridno" type="xsd:string" /> 
  <part name="icokp" type="xsd:string" /> 
  <part name="mesic" type="xsd:string" /> 
  <part name="rok" type="xsd:string" /> 
  <part name="mena" type="xsd:string" /> 
  <part name="penale" type="xsd:string" /> 
  <part name="slevy" type="xsd:string" /> 
  <part name="vsmb" type="xsd:string" /> 
  <part name="ksmb" type="xsd:string" /> 
  <part name="ssmb" type="xsd:string" /> 
  <part name="pril" type="xsd:string" /> 
  <part name="cdl" type="xsd:string" /> 
  <part name="dodp" type="xsd:string" /> 
  <part name="popis" type="xsd:string" /> 
  <part name="zprava" type="xsd:string" /> 
  <part name="zppl" type="xsd:string" /> 
  <part name="datv" type="xsd:dateTime" /> 
  <part name="dats" type="xsd:dateTime" /> 
  <part name="datd" type="xsd:dateTime" /> 
  <part name="vf" type="xsd:string" /> 
  <part name="krechNr" type="xsd:string" /> 
  <part name="zrusId" type="xsd:string" /> 
  <part name="rel1Id" type="xsd:string" /> 
  <part name="nsidno" type="xsd:string" /> 
  <part name="typaidno" type="xsd:string" /> 
  <part name="akce" type="xsd:string" /> 
  <part name="komidno" type="xsd:string" /> 
  <part name="rsridno" type="xsd:string" /> 
  <part name="vlucidno" type="xsd:string" /> 
  </message>
- <message name="otevri_doklad2Response">
  <part name="return" type="ns1:fvz_ImpODFAImpl_otevri_doklad_Out" /> 
  </message>
  <message name="uzavri_doklad3Request" /> 
- <message name="uzavri_doklad3Response">
  <part name="return" type="ns1:fvz_ImpODFAImpl_uzavri_doklad_Out" /> 
  </message>
- <portType name="ImpODFAPortType">
- <operation name="zapis_radek">
  <input name="zapis_radek0Request" message="tns:zapis_radek0Request" /> 
  <output name="zapis_radek0Response" message="tns:zapis_radek0Response" /> 
  </operation>
- <operation name="reset_doklad">
  <input name="reset_doklad1Request" message="tns:reset_doklad1Request" /> 
  <output name="reset_doklad1Response" message="tns:reset_doklad1Response" /> 
  </operation>
- <operation name="otevri_doklad">
  <input name="otevri_doklad2Request" message="tns:otevri_doklad2Request" /> 
  <output name="otevri_doklad2Response" message="tns:otevri_doklad2Response" /> 
  </operation>
- <operation name="uzavri_doklad">
  <input name="uzavri_doklad3Request" message="tns:uzavri_doklad3Request" /> 
  <output name="uzavri_doklad3Response" message="tns:uzavri_doklad3Response" /> 
  </operation>
  </portType>
- <binding name="ImpODFABinding" type="tns:ImpODFAPortType">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <operation name="zapis_radek">
  <soap:operation soapAction="" style="rpc" /> 
- <input name="zapis_radek0Request">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </input>
- <output name="zapis_radek0Response">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </output>
  </operation>
- <operation name="reset_doklad">
  <soap:operation soapAction="" style="rpc" /> 
- <input name="reset_doklad1Request">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </input>
- <output name="reset_doklad1Response">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </output>
  </operation>
- <operation name="otevri_doklad">
  <soap:operation soapAction="" style="rpc" /> 
- <input name="otevri_doklad2Request">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </input>
- <output name="otevri_doklad2Response">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </output>
  </operation>
- <operation name="uzavri_doklad">
  <soap:operation soapAction="" style="rpc" /> 
- <input name="uzavri_doklad3Request">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </input>
- <output name="uzavri_doklad3Response">
  <soap:body use="encoded" namespace="ImpODFA" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </output>
  </operation>
  </binding>
- <service name="ImpODFA">
- <port name="ImpODFAPort" binding="tns:ImpODFABinding">
  <soap:address location="http://ifis.xxxx.cz/ws/ImpODFA" /> 
  </port>
  </service>
  </definitions>


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

/***********************************************************************
   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
            'KC',  -- 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;