Vzájomný zápočet je fiktívny bankový výpis, ktorým sa vykonávajú najmä úhrady pohľadávok a záväzkov na princípe vzájomných zápočtov. V API na to slúži evidencia vzajemny-zapocet.
ℹ️ Obe strany zápočtu sa zakladajú ako samostatné doklady a spája ich zhodné číslo zápočtu v elemente <cisSouhrnne>. Strana pohľadávok má typPohybu.prijem, strana záväzkov typPohybu.vydej; sumy sa uvádzajú vždy kladné.
Príprava faktúr
Pre ukážku si najprv založíme vydanú a prijatú faktúru, medzi ktorými sa bude zápočet vykonávať:
<?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>
Vykonanie zápočtu
Pre pripravené faktúry možno vykonať zápočet nasledujúcim spôsobom:
<?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 sa stať, že sumy na uhrádzajúcom a uhrádzanom doklade nesúhlasia (zostáva časť doplatiť). V takom prípade sa import riadi hodnotou v tagu <zbytek>. V zápočtoch sa najčastejšie používajú tieto dve hodnoty:
ne— zvyšok nesmie nastať; ak k nemu dôjde, ide o chybu.castecnaUhrada— ak je suma na uhrádzajúcom doklade menšia ako na uhrádzanom, ide o čiastočnú úhradu.
ℹ️ Element <zbytek> prijíma rovnaké hodnoty ako pri párovaní platieb — okrem dvoch vyššie aj zauctovat, ignorovat, castecnaUhradaNeboZauctovat a castecnaUhradaNeboIgnorovat. Neplatná hodnota vráti 400 elementInvalidValue.
Úhrada faktúry dobropisom
Pomocou zápočtov možno uhradiť aj vydanú faktúru s vydaným dobropisom. Sumy sú opäť uvedené obe kladné, dobropis je odlíšený typom pohybu — výdaj:
<?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>
Odpárovanie
Analogicky možno vykonávať aj odpárovanie — namiesto elementu <sparovani> sa použije <odparovani>:
<?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>
Zápočet viacerých faktúr v JSON
Požiadavku možno samozrejme zasielať aj vo formáte JSON. Nasledujúci príklad rieši túto situáciu:
Na strane pohľadávok sú dve vydané faktúry (VF1-0033/2023 a VF1-0031/2023) o celkovej sume 1 210 Kč.
Na strane záväzkov je jedna prijatá faktúra taktiež o celkovej sume 1 210 Kč.
Výsledkom je vytvorenie oboch strán zápočtov, medzi sebou spárovaných pomocou zhodujúceho sa čí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"
}
]
}
}
Zápočet v cudzej mene
Vzájomný zápočet možno zakladať aj v mene. Spárovanie následne funguje na rovnakom princípe ako pri zápočtoch v tuzemskej mene — namiesto sumOsv sa uvedie sumOsvMen a doplní sa kurz a mena:
{
"winstrom": {
"vzajemny-zapocet": [
{
"typDokl": "code:ZAPOCET",
"typPohybuK": "typPohybu.vydej",
"sumOsvMen": 200,
"bezPolozek": true,
"kurz": 23.527,
"mena": "code:EUR"
}
]
}
}
