Dobropis sa s dobropisovanou faktúrou prepája väzbou. Cez REST API možno buď naviazať už existujúci dobropis na faktúru, alebo nechať celý dobropis vrátane väzieb vytvoriť zo zvolených položiek pôvodného dokladu. Oba postupy sú vnorené elementy importu a fungujú na evidenciách faktura-vydana a faktura-prijata.
⚠️ Doklad, do ktorého vnorené elementy uvádzate, musí byť typu dobropis. Inak import skončí chybou parovaniDobropisuNeniDobropis. Na iných evidenciách než pri vydaných a prijatých faktúrach sa elementy tichým spôsobom ignorujú a import prejde bez efektu.
Prepojenie dobropisu s faktúrou
Väzbu na existujúci dobropis vytvorí element vytvor-vazbu-dobropis:
<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana>
<!-- dobropis; může být i "faktura-prijata" -->
<id>code:DOBROPIS1</id>
<!-- lze normálně uvést další vlastnosti dokladu jako při běžném importu -->
<vytvor-vazbu-dobropis>
<dobropisovanyDokl>code:FAKTURA1</dobropisovanyDokl>
<!-- identifikátor dobropisovaného dokladu -->
</vytvor-vazbu-dobropis>
</faktura-vydana>
</winstrom>
Dobropisovaný doklad sa v elemente dobropisovanyDokl uvádza podľa obvyklých pravidiel pre identifikátory. Ak faktúra nie je nájdená, import skončí chybou.
Jeden dobropis možno naviazať len na jednu faktúru. Na jednu faktúru však môže byť naviazaných viac dobropisov. Pokus o naviazanie dobropisu, ktorý je už na nejakú faktúru naviazaný, skončí chybou parovaniDobropisuLzeJenJednou — je potrebné najprv zrušiť existujúcu väzbu.
Po úspešnom prepojení sa na dobropisovanom doklade nastaví príznak dobropisovano na true a väzba sa objaví v relácii vazby oboch dokladov. V zázname väzby je dobropisovaná faktúra vo vlastnosti a a dobropis vo vlastnosti b:
GET https://demo.flexibee.eu/c/demo/faktura-vydana/DOBROPIS1.json?relations=vazby
Dôležité upozornenia
Služba vytvára iba väzbu — dobropisujúci doklad musí mať správne vytvorené položky.
Vytvorená väzba prepája len hlavičky dokladov, prepojenie položiek nerieši.
Nákupná cena uvedená na položkách by mala zodpovedať skladovej cene tovaru z dobropisovaného dokladu, inak nebude sedieť stav skladu.
Ak nie je uvedená nákupná cena, použije sa aktuálna skladová cena.
Ak nie je tovar skladom, použije sa nákupná cena z cenníka.
ℹ️ Ak zakladáte dobropis bežným importom, musí byť množstvo na jeho položkách záporné — inak import skončí chybou polDoklDobropisChybaZaporneMnozstvi. Naopak v službe dobropisuj popísanej nižšie sa dobropisované množstvo uvádza kladne.
Vytvorenie dobropisu vrátane väzieb
Druhou možnosťou je nechať celý dobropis vytvoriť službou dobropisuj. Vznikne plnohodnotný dobropis s väzbou aj medzi položkami. Okrem identifikátora dobropisovanej faktúry (dobropisovanyDokl) sa uvedie, ktoré položky sa majú dobropisovať (polozkyDokladu) — pri každej jej id a množstvo mnozMj:
<winstrom version="1.0">
<faktura-vydana>
<typDokl>code:DOBROPIS</typDokl>
<!-- lze uvést další vlastnosti dokladu jako při běžném importu -->
<dobropisuj>
<dobropisovanyDokl>code:VF1-0001/2021</dobropisovanyDokl>
<polozkyDokladu>
<polozka>
<id>123</id>
<mnozMj>1</mnozMj>
</polozka>
</polozkyDokladu>
</dobropisuj>
</faktura-vydana>
</winstrom>
Element polozkyDokladu je povinný — bez neho import skončí chybou validace.notNull. Uvedené položky musia byť na dobropisovanom doklade a nemožno dobropisovať väčšie množstvo, než na položke zostáva; služba si teda stráži, koľko už bolo dobropisované.
Výsledkom je nový doklad so zápornými sumami, s väzbou na dobropisovanú faktúru a s príznakom dobropisovano nastaveným na pôvodnom doklade. Číslo nového dokladu nájdete v návratových hodnotách vo results.
💡 Import s parametrom ?dry-run=true vstup iba skontroluje a doklad nevytvorí — v results potom vráti id rovné -1. Oplatí sa tak overiť ID položiek a množstvo, než dobropis skutočne vznikne.
Výrobné čísla
Ak má položka evidované výrobné čísla, je potrebné zadať zodpovedajúci počet výrobných čísel v elemente vyrobniCislaId:
<winstrom version="1.0">
<faktura-vydana>
<typDokl>code:DOBROPIS</typDokl>
<dobropisuj>
<dobropisovanyDokl>code:VF1-0001/2021</dobropisovanyDokl>
<polozkyDokladu>
<polozka>
<id>123</id>
<mnozMj>1</mnozMj>
<vyrobniCislaId>
<vyrobniCisloId>456</vyrobniCisloId>
</vyrobniCislaId>
</polozka>
</polozkyDokladu>
</dobropisuj>
</faktura-vydana>
</winstrom>
Výrobné čísla sád
Zadať možno aj výrobné čísla sád v elemente vyrobniCislaSad:
<winstrom version="1.0">
<faktura-vydana>
<typDokl>code:DOBROPIS</typDokl>
<dobropisuj>
<dobropisovanyDokl>code:VF1-0001/2021</dobropisovanyDokl>
<polozkyDokladu>
<polozka>
<id>123</id>
<mnozMj>1</mnozMj>
<vyrobniCislaSad>
<vyrobniCislaSady>
<sadaId>789</sadaId>
<vyrobniCislaId>
<vyrobniCisloId>456</vyrobniCisloId>
</vyrobniCislaId>
</vyrobniCislaSady>
</vyrobniCislaSad>
</polozka>
</polozkyDokladu>
</dobropisuj>
</faktura-vydana>
</winstrom>
Vytvorenie vzájomného zápočtu
Ak sa v elemente vytvor-vazbu-dobropis uvedie vytvorZapocet s hodnotou true, vytvorí sa zároveň vzájomný zápočet, ktorým sa faktúra a dobropis uhradia. Typ dokladu zápočtu je potom povinný a uvádza sa v elemente typDoklZapocet:
<winstrom version="1.0">
<faktura-vydana>
<!-- dobropis; může být i "faktura-prijata" -->
<id>code:DOBROPIS1</id>
<vytvor-vazbu-dobropis>
<dobropisovanyDokl>code:FAKTURA1</dobropisovanyDokl>
<vytvorZapocet>true</vytvorZapocet>
<typDoklZapocet>code:ZAPOCET</typDoklZapocet>
</vytvor-vazbu-dobropis>
</faktura-vydana>
</winstrom>
Typ dokladu sa berie z evidencie typ-vzajemnych-zapoctu. Bez elementu typDoklZapocet skončí import chybou importXmlEmptyIdentifier.
Zápočtom vzniká dvojica dokladov v evidencii vzajemny-zapocet — jeden na strane faktúry, druhý na strane dobropisu, oba na sumu dobropisu. Pravidlá, ktorými sa zápočet riadi:
Údaj | Odkiaľ sa berie |
Dátum zápočtu | Dátum z novšieho z oboch dokladov. |
Číslo súhrnné | Variabilný symbol z faktúry. |
Kurz pri dokladoch v cudzej mene | Stiahnutý kurz k dátumu zápočtu. |
Po zápočte sa zmení stav úhrady oboch dokladov: dobropis je uhradený a faktúra je uhradená v rozsahu sumy dobropisu (pri čiastočnom dobropise teda stavUhr.castUhr).
Zrušenie väzby dobropisu
Väzbu zruší prázdny element zrus-vazbu-dobropis:
<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana>
<!-- dobropis; může být i "faktura-prijata" -->
<id>code:DOBROPIS1</id>
<zrus-vazbu-dobropis/>
</faktura-vydana>
</winstrom>
🚨 Zrušiť možno iba ručne vytvorenú väzbu, teda tú, ktorá vznikla elementom vytvor-vazbu-dobropis. Väzbu, ktorú vytvorila služba dobropisuj, zrušiť nemožno — import vráti chybu parovaniDobropisuNelzeZrusit. Dobropis vytvorený službou dobropisuj preto nemožno od faktúry odpojiť a prenaviazať inam.
Chybové stavy
Všetky nižšie uvedené prípady vracajú 400 a celý import sa nevykoná:
Kód chyby | Príčina |
| Doklad, do ktorého ste element vnorili, nie je typu dobropis. |
| Doklad uvedený v |
| Dobropis je už naviazaný na inú faktúru. |
| Väzba nevznikla ručne, ale službou |
| Položka uvedená v |
| Dobropisované množstvo je vyššie než množstvo, ktoré na položke zostáva. |
| Položka dobropisu zakladaného bežným importom má nezáporné množstvo. |
| V službe |
| Je uvedené |
