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 P–Prikazem,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 má kopridno_ a icokp_
"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
"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_.
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;