Preskoči na glavno vsebino

Generovanie faktúr zo zmlúv cez API

Ako generovať faktúry zo zmlúv cez REST API?

Avtor: Petr Pech

Cez REST API — rovnako ako cez webové rozhranie — je možné vygenerovať faktúry zo zmlúv, a to buď zo všetkých, alebo z jednej konkrétnej. Ide o jednoduché volanie metódou PUT alebo POST.


Zostavenie URL

Adresa

Čo urobí

/c/{firma}/smlouva/generovani-faktur.xml

Vygeneruje vydané faktúry pre všetky odberateľské zmluvy.

/c/{firma}/smlouva/1/generovani-faktur.xml

Vygeneruje vydané faktúry pre odberateľskú zmluvu s ID 1.

/c/{firma}/dodavatelska-smlouva/generovani-faktur.xml

Analogicky vygeneruje prijaté faktúry z dodávateľských zmlúv.

PUT https://demo.flexibee.eu/c/demo/smlouva/generovani-faktur.xml
PUT https://demo.flexibee.eu/c/demo/dodavatelska-smlouva/generovani-faktur.xml

🚨 Volanie nerešpektuje parameter testovacieho uloženia ?dry-run=true — faktúry sa vytvoria aj s ním. Neskúšajte preto generovanie „na nečisto" v produkčnej firme.


Parametre

Požiadavku je možné doplniť voliteľným parametrom datumGenerovani vo formáte ISO 8601 (YYYY-MM-DD); východiskovou hodnotou je aktuálny dátum.

PUT https://demo.flexibee.eu/c/demo/smlouva/generovani-faktur.xml?datumGenerovani=2023-03-01

⚠️ Dátum v inom ako uvedenom formáte neskončí chybou 400, ale 500 s hlásením Text 'nesmysl' could not be parsed at index 0. Formát si preto overte na strane integrácie.


Výsledok

Odpoveď v XML má nasledujúcu podobu — obsahuje odkazy na vytvorené doklady, jedno súhrnné hlásenie a prípadné chybové hlásenia:

<?xml version="1.0"?>
<winstrom version="1.0">
<operation>Generování faktur</operation>
<success>ok</success>
<results>
<result>
<ref>/c/demo/faktura-vydana/1503</ref>
</result>
</results>
<messages>
<message>Počet úspěšně vygenerovaných faktur: 1</message>
</messages>
<errors></errors>
</winstrom>

Element success môže nadobúdať tieto hodnoty:

ok

Vygenerovanie faktúr prebehlo v poriadku. Nemuseli pritom vzniknúť žiadne faktúry, ak to nebolo potrebné — vtedy je v messages hlásenie Nebyla vygenerována žádná nová faktura.

partial

Pre niektoré zmluvy vygenerovanie prebehlo v poriadku, pri iných došlo k chybe.

failed

Neboli vygenerované žiadne faktúry a pri niektorých zmluvách došlo k chybe.

unknown

Nemalo by nikdy nastať.

⚠️ HTTP status je 200 aj pri partial a failed — úspech teda rozpoznáte iba z elementu success, nie zo statusu.


Odkazy na vytvorené doklady a chyby

Elementy result obsahujú odkazy na vytvorené doklady, message súhrnné hlásenie o úspechu (najviac jedno) a error chybové hlásenia — jedno pre každú zmluvu, pri ktorej došlo k chybe. Každá chyba nesie messageCode a je uvedená kódom zmluvy:

<errors>
<error messageCode="polDoklNeniDostVyrobnichCisel">211&gt; - Není zadáno odpovídající množství výrobních čísel (0/64).</error>
<error messageCode="validace.neplatnyCiselnik">TEST_01 - Pole 'Kód z ceníku' obsahuje neplatnou položku číselníku.</error>
</errors>

Chyba pri jednej zmluve nezastaví generovanie ostatných — preto môže celkový výsledok skončiť ako partial.


Žurnál zmlúv

Každé generovanie — ručné aj automatické — sa zapíše do žurnálu, ktorý je cez API dostupný na endpointe smlouva-zurnal:

GET https://demo.flexibee.eu/c/demo/smlouva-zurnal.xml?detail=full
<winstrom version="1.0">
<smlouva-zurnal>
<id>2</id>
<datCas>2019-11-18T09:20:57.413+01:00</datCas>
<transakceK showAs="Ruční generace">operaceZurnalSmlouvy.manualGenerace</transakceK>
<pocetOk>1</pocetOk>
<pocetErr>0</pocetErr>
<chyby></chyby>
<uzivatel>code:admin</uzivatel>
</smlouva-zurnal>
</winstrom>

Vlastnosť transakceK rozlišuje operaceZurnalSmlouvy.manualGenerace (Ruční generace) a operaceZurnalSmlouvy.autoGenerace (Automatická generace); generovanie cez REST API sa do žurnálu zapíše ako ručné.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?