Přeskočit na hlavní obsah
Zápočty

Jak vytvořit vzájemný zápočet dokladů v REST API?

Petr Pech avatar
Autor: Petr Pech
Aktualizováno před více než rokem

Vzájemný zápočet je fiktivní bankovní výpis, kterým jsou prováděny zejména úhrady pohledávek a závazků na principu vzájemných zápočtů.

<?xml version="1.0"?>
<winstrom version="1.0">
<faktura-vydana>
<id>code:FAV1</id>
<typDokl>code:FAKTURA</typDokl>
<bezPolozek>true</bezPolozek>
<sumOsv>100.0</sumOsv>
</faktura-vydana>
<faktura-prijata>
<id>code:FAP1</id>
<typDokl>code:FAKTURA</typDokl>
<cisDosle>F123</cisDosle>
<datSplat>2017-12-31+01:00</datSplat>
<bezPolozek>true</bezPolozek>
<sumOsv>100.0</sumOsv>
</faktura-prijata>
</winstrom>

Pro připravené faktury lze provést zápočet následujícím způsobem:

<?xml version="1.0"?>
<winstrom version="1.0">
<vzajemny-zapocet>
<id>code:ZAP+0016/2017</id>
<typDokl>code:ZAPOCET</typDokl>
<typPohybuK>typPohybu.prijem</typPohybuK>
<!-- částka úhrady -->
<sumOsv>1.0</sumOsv>
<bezPolozek>true</bezPolozek>
<sparovani>
<uhrazovanaFak type="faktura-vydana">code:FAV1</uhrazovanaFak>
<zbytek>castecnaUhrada</zbytek>
</sparovani>
<!-- číslo zápočtu -->
<cisSouhrnne>ZAP-123</cisSouhrnne>
</vzajemny-zapocet>
<vzajemny-zapocet>
<id>code:ZAP+0017/2017</id>
<typDokl>code:ZAPOCET</typDokl>
<typPohybuK>typPohybu.vydej</typPohybuK>
<sumOsv>1.0</sumOsv>
<bezPolozek>true</bezPolozek>
<sparovani>
<uhrazovanaFak type="faktura-prijata">code:FAP1</uhrazovanaFak>
<zbytek>castecnaUhrada</zbytek>
</sparovani>
<cisSouhrnne>ZAP-123</cisSouhrnne>
</vzajemny-zapocet>
</winstrom>

Může se stát, že částky na uhrazujícím a uhrazovaném dokladu nesouhlasí (zbývá část doplatit), v takovém případě se import řídí hodnotou v tagu zbytek.

Pomocí zápočtů lze uhradit i vydanou fakturu s vydaným dobropisem. Částky jsou opět uvedeny obě kladné, dobropis je odlišen typem pohybu - výdej:

<?xml version="1.0"?>
<winstrom version="1.0">
<vzajemny-zapocet>
<typDokl>code:ZAPOCET</typDokl>
<typPohybuK>typPohybu.vydej</typPohybuK>
<bezPolozek>true</bezPolozek>
<sumOsv>1000</sumOsv>
<sparovani>
<uhrazovanaFak type="faktura-vydana">code:DOBROPIS1</uhrazovanaFak>
<zbytek>ne</zbytek>
</sparovani>
<primUcet>code:395000</primUcet>
<protiUcet>code:311001</protiUcet>
<cisSouhrnne>ZAP1</cisSouhrnne>
</vzajemny-zapocet>
<vzajemny-zapocet>
<typDokl>code:ZAPOCET</typDokl>
<typPohybuK>typPohybu.prijem</typPohybuK>
<bezPolozek>true</bezPolozek>
<sumOsv>1000</sumOsv>
<sparovani>
<uhrazovanaFak type="faktura-vydana">code:FAV1</uhrazovanaFak>
<zbytek>ne</zbytek>
</sparovani>
<primUcet>code:395000</primUcet>
<protiUcet>code:311001</protiUcet>
<cisSouhrnne>ZAP1</cisSouhrnne>
</vzajemny-zapocet>
</winstrom>

Lze zvolit tyto hodnoty zbytku:

  • ne: zbytek nesmí nastat; pokud k němu dojde, jedná se o chybu

  • castecnaUhrada: pokud je částka na uhrazujícím dokladu menší než na uhrazovaném, jedná se o částečnou úhradu

Analogicky lze provádět i odpárování:

<?xml version="1.0"?>
<winstrom version="1.0">
<vzajemny-zapocet>
<id>code:ZAP+0016/2017</id>
<odparovani>
<uhrazovanaFak type="faktura-vydana">code:FAV1</uhrazovanaFak>
</odparovani>
</vzajemny-zapocet>
</winstrom>

Příklad tvorby zápočtu v JSON formátu:

  • Na straně pohledávek jsou dvě vydané faktury (VF1-0033/2023 a VF1-0031/2023) o celkové částce 1210 Kč.

  • Na straně závazků je jedna přijatá faktura rovněž o celkové částce 1210 Kč.

  • Výsledkem je vytvoření obou stran zápočtů mezi sebou spárovaných pomocí shodujícího se čísla zápočtu ("cisSouhrnne").

{
"winstrom":{
"vzajemny-zapocet":[
{
"datVyst":"2023-09-07",
"sumOsv":1000,
"bezPolozek":true,
"typDokl":"code:ZAPOCET",
"typPohybuK":"typPohybu.prijem",
"sparovani":{
"uhrazovanaFak@type":"faktura-vydana",
"uhrazovanaFak":"code:VF1-0033/2023",
"zbytek":"ne"
},
"cisSouhrnne":"5"
},
{
"datVyst":"2023-09-07",
"sumOsv":210,
"bezPolozek":true,
"typDokl":"code:ZAPOCET",
"typPohybuK":"typPohybu.prijem",
"sparovani":{
"uhrazovanaFak@type":"faktura-vydana",
"uhrazovanaFak":"code:VF1-0031/2023",
"zbytek":"ne"
},
"cisSouhrnne":"5"
},
{
"datVyst":"2023-09-07",
"sumOsv":1210,
"bezPolozek":true,
"typDokl":"code:ZAPOCET",
"typPohybuK":"typPohybu.vydej",
"sparovani":{
"uhrazovanaFak@type":"faktura-prijata",
"uhrazovanaFak":"code:PF0016/2023",
"zbytek":"ne"
},
"cisSouhrnne":"5"
}
]
}
}
Dostali jste odpověď na svou otázku?