Přeskočit na hlavní obsah

Smlouvy v API

Jak tvořit odběratelské či dodavatelské smlouvy pomocí REST API Flexi?

Autor: Petr Pech

Odběratelské a dodavatelské smlouvy slouží k automatické fakturaci v pravidelných, případně i nepravidelných intervalech na základě využívání nebo poskytování služeb.

Ze smluv lze přes REST API generovat faktury a smlouvy lze také valorizovat. V tomto návodu se podíváme na to, jak smlouvy — odběratelské i dodavatelské — přes REST API tvořit.


Způsob volání

Smlouvu vytvoříte HTTP metodou PUT nebo POST; podporované výstupní formáty jsou XML a JSON.

POST https://demo.flexibee.eu/c/demo/smlouva.xml
POST https://demo.flexibee.eu/c/demo/dodavatelska-smlouva.json

Evidence smlouva nese odběratelské smlouvy, evidence dodavatelska-smlouva dodavatelské. Segment {firma} v adrese je databázový identifikátor firmy.

Doprovodné evidence

Kolem smluv existují další evidence, které slouží pro sledování nebo import doprovodných informací:

Evidence

K čemu slouží

Definice typu smlouvy — předpis, ze kterého reálná smlouva vychází, obdobně jako typ dokladu.

Evidence vlastních stavů smluv — například když potřebujete smlouvy na první pohled rozlišit podle nějakého příznaku.

Položky smluv. Aby se ze smlouvy vygenerovala faktura, musí mít smlouva alespoň jednu položku s tím, co se má fakturovat, a se specifiky frekvence a data generování.

Historie generování faktur ze smluv — uživatel, datum generace, způsob (manuální či automatický), počty vygenerovaných faktur a případné chyby.

⚠️ Evidence smlouva-polozka je společná pro položky odběratelských i dodavatelských smluv a nelze do ní importovat samostatně — bez hlavičky smlouvy vrací požadavek 400 s kódem importNotAllowed a hlášením Import není povolen. Položky proto posílejte vnořené do smlouvy, ať už při jejím vytvoření, nebo pozdější aktualizací.


Tělo požadavku

V těle požadavku uveďte hlavičku smlouvy s povinnými vlastnostmi a případně její položky:

Vlastnost

Význam

kod

Číslo smlouvy, max. 20 znaků.

nazev

Název smlouvy, max. 255 znaků.

smlouvaOd

Zahájení platnosti smlouvy ve formátu data — obecně nastává okamžikem podpisu smlouvy. Platnost uvedená na položce smlouvy má přednost.

typSml

Odkaz na definovaný typ smlouvy.

firma

Odkaz do adresáře — firma, ke které se smlouva váže.

U položek smlouvy jsou povinné kod (označení, max. 20 znaků) a nazev (max. 255 znaků). Odkážete-li položku na ceníkovou položku elementem cenik, přebere se kód i název z ceníku a uvádět je nemusíte.

⚠️ Ostatní vlastnosti povinné nejsou, pro správné generování faktur je ale nutné je nastavit podle toho, jak potřebujete fakturovat. Více o nastavení a příkladech najdete v článku Odběratelské smlouvy v praxi.


Výsledek

Úspěch poznáte z HTTP statusu nebo z vlastnosti success v odpovědi. Při úspěšném vytvoření je vracen status 201 Created a dokument ve standardním formátu, viz návratové hodnoty. Při neúspěchu je vracen status 4xx nebo 5xx a zpráva o důvodu.


Ukázky volání

Odběratelská smlouva v XML

POST https://demo.flexibee.eu/c/demo/smlouva.xml
<winstrom>
<smlouva>
<kod>INTERNETROK23</kod>
<nazev>Internet na rok výhodně</nazev>
<smlouvaOd>2023-03-01</smlouvaOd>
<typSml>code:SMLOUVA</typSml>
<firma>code:ABRA</firma>
</smlouva>
</winstrom>

Tímto voláním vznikne odběratelská smlouva „Internet na rok výhodně" s předem definovaným typem SMLOUVA pro firmu ABRA, platná od 1. 3. 2023.

Dodavatelská smlouva s položkami v JSON

PUT https://demo.flexibee.eu/c/demo/dodavatelska-smlouva.json
{
"winstrom": {
"dodavatelska-smlouva": {
"kod": "INTERNETROK23",
"nazev": "Internet na rok výhodně",
"smlouvaOd": "2023-03-01",
"typSml": "code:SMLOUVA",
"firma": "code:ABRA",
"frekFakt": 12,
"den": 31,
"mesic": 1,
"zpusFaktK": "zpusobFakt.dopredu",
"typDoklFak": "code:FAKTURA",
"polozkySmlouvy": {
"smlouva-polozka": [
{
"kod": "INTERNET2023",
"nazev": "Internet výhodně 2023"
},
{
"cenik": "code:KONZULTACE"
}
]
}
}
}
}

Zde vznikne dodavatelská smlouva se dvěma položkami. Faktury se budou generovat s typem dokladu FAKTURA, frekvence fakturace je 12 měsíců, obrátkový den a měsíc 31/1 a fakturuje se dopředu. Položka KONZULTACE je řešena odkazem na ceníkovou položku, odkud se automaticky přeberou povinné kód a název; položka INTERNET2023 je vytvořena bez vazby na ceník.

Vlastnost zpusFaktK přijímá hodnoty zpusobFakt.dopredu (Fakturovat dopředu) a zpusobFakt.zpetne (Fakturovat zpětně).


Neúspěšné požadavky

Situace

Odpověď

Chybí typ smlouvy

400, validace.notNullPole 'Typ smlouvy' musí být vyplněno.

Položka bez vazby na ceník a bez názvu

400, validace.notNullPole 'Název' musí být vyplněno.

Špatně zapsaný číselníkový údaj, například způsob fakturace

400, importXmlNeplatnyCiselnikzpusobFakt.doprdu není platný kód lokalizovaného číselníku zpusobFakt.

Import samostatné položky bez hlavičky smlouvy

400, importNotAllowedImport není povolen.

🚨 Nepovinné vlastnosti jako frekvence fakturace nebo obrátkový den a měsíc Flexi nijak nehlídá. Požadavek s hodnotami "frekFakt": 121, "den": 311 nebo "mesic": 13 projde bez chyby, ale výsledkem jsou nesmyslné hodnoty, které pak zabrání generování faktur.


FAQ

Jak najdu fakturu vygenerovanou ze smlouvy?

Vygenerovaná faktura nese číslo smlouvy v textové vlastnosti cisSml i vazbu smlouva, takže faktury dané smlouvy lze přímo vyfiltrovat:

GET https://demo.flexibee.eu/c/demo/faktura-vydana/(smlouva='code:45644').json

Kde najdu příklady zadání smluv?

Videotutoriál a příklady zadání najdete v článku Odběratelské a dodavatelské smlouvy, širší souvislosti pak v sérii Odběratelské smlouvy v praxi.

Jak zjistím, zda a kdy se ze smlouvy generovalo?

Historii najdete v evidenci smlouva-zurnal — obsahuje uživatele, datum, způsob generování, počty faktur i případné chyby.


Související

Dostali jste odpověď na svou otázku?