Dobropis se s dobropisovanou fakturou provazuje vazbou. Přes REST API lze buď navázat už existující dobropis na fakturu, nebo nechat celý dobropis včetně vazeb vytvořit ze zvolených položek původního dokladu. Oba postupy jsou vnořené elementy importu a fungují na evidencích faktura-vydana a faktura-prijata.
⚠️ Doklad, do kterého vnořené elementy uvádíte, musí být typu dobropis. Jinak import skončí chybou parovaniDobropisuNeniDobropis. Na jiných evidencích než u vydaných a přijatých faktur se elementy tiše ignorují a import projde bez efektu.
Provázání dobropisu s fakturou
Vazbu na existující dobropis vytvoří 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 se v elementu dobropisovanyDokl uvádí podle obvyklých pravidel pro identifikátory. Pokud faktura není nalezena, import skončí chybou.
Jeden dobropis lze navázat jen na jednu fakturu. Na jednu fakturu ale může být navázáno více dobropisů. Pokus o navázání dobropisu, který už na nějakou fakturu navázaný je, skončí chybou parovaniDobropisuLzeJenJednou — je nutné nejdřív zrušit stávající vazbu.
Po úspěšném provázání se na dobropisovaném dokladu nastaví příznak dobropisovano na true a vazba se objeví v relaci vazby obou dokladů. V záznamu vazby je dobropisovaná faktura ve vlastnosti a a dobropis ve vlastnosti b:
GET https://demo.flexibee.eu/c/demo/faktura-vydana/DOBROPIS1.json?relations=vazby
Důležitá upozornění
Služba vytváří pouze vazbu — dobropisující doklad musí mít správně vytvořené položky.
Vytvořená vazba propojuje jen hlavičky dokladů, propojení položek neřeší.
Nákupní cena uvedená na položkách by měla odpovídat skladové ceně zboží z dobropisovaného dokladu, jinak nebude sedět stav skladu.
Pokud není uvedena nákupní cena, použije se aktuální skladová cena.
Pokud není zboží skladem, použije se nákupní cena z ceníku.
ℹ️ Zakládáte-li dobropis běžným importem, musí být množství na jeho položkách záporné — jinak import skončí chybou polDoklDobropisChybaZaporneMnozstvi. Naopak ve službě dobropisuj popsané níže se dobropisované množství uvádí kladně.
Vytvoření dobropisu včetně vazeb
Druhou možností je nechat celý dobropis vytvořit službě dobropisuj. Vznikne plnohodnotný dobropis s vazbou i mezi položkami. Kromě identifikátoru dobropisované faktury (dobropisovanyDokl) se uvede, které položky se mají dobropisovat (polozkyDokladu) — u každé její id a množství 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 něj import skončí chybou validace.notNull. Uvedené položky musí ležet na dobropisovaném dokladu a nelze dobropisovat větší množství, než na položce zbývá; služba si tedy hlídá, kolik už bylo dobropisováno.
Výsledkem je nový doklad se zápornými částkami, s vazbou na dobropisovanou fakturu a s příznakem dobropisovano nastaveným na původním dokladu. Číslo nového dokladu najdete v návratových hodnotách ve results.
💡 Import s parametrem ?dry-run=true vstup jen zkontroluje a doklad nevytvoří — v results pak vrátí id rovné -1. Vyplatí se tak ověřit ID položek a množství, než dobropis skutečně vznikne.
Výrobní čísla
Má-li položka evidovaná výrobní čísla, je třeba zadat odpovídající počet výrobních čísel v elementu 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 sad
Zadat lze i výrobní čísla sad v elementu 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>
Vytvoření vzájemného zápočtu
Pokud se v elementu vytvor-vazbu-dobropis uvede vytvorZapocet s hodnotou true, vytvoří se zároveň vzájemný zápočet, kterým se faktura a dobropis uhradí. Typ dokladu zápočtu je pak povinný a uvádí se v elementu 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 se bere z evidence typ-vzajemnych-zapoctu. Bez elementu typDoklZapocet skončí import chybou importXmlEmptyIdentifier.
Zápočtem vzniká dvojice dokladů v evidenci vzajemny-zapocet — jeden na straně faktury, druhý na straně dobropisu, oba na částku dobropisu. Pravidla, kterými se zápočet řídí:
Údaj | Odkud se bere |
Datum zápočtu | Datum z novějšího z obou dokladů. |
Číslo souhrnné | Variabilní symbol z faktury. |
Kurz u dokladů v cizí měně | Stažený kurz k datu zápočtu. |
Po zápočtu se změní stav úhrady obou dokladů: dobropis je uhrazený a faktura je uhrazená v rozsahu částky dobropisu (u částečného dobropisu tedy stavUhr.castUhr).
Zrušení vazby dobropisu
Vazbu zruší prázdný 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šit lze pouze ručně vytvořenou vazbu, tedy tu, která vznikla elementem vytvor-vazbu-dobropis. Vazbu, kterou vytvořila služba dobropisuj, zrušit nelze — import vrátí chybu parovaniDobropisuNelzeZrusit. Dobropis vytvořený službou dobropisuj proto nelze od faktury odpojit a přenavázat jinam.
Chybové stavy
Všechny níže uvedené případy vracejí 400 a celý import se neprovede:
Kód chyby | Příčina |
| Doklad, do kterého jste element vnořili, není typu dobropis. |
| Doklad uvedený v |
| Dobropis už je navázaný na jinou fakturu. |
| Vazba nevznikla ručně, ale službou |
| Položka uvedená v |
| Dobropisované množství je vyšší než množství, které na položce zbývá. |
| Položka dobropisu zakládaného běžným importem má nezáporné množství. |
| Ve službě |
| Je uvedeno |
