Preskoči na glavno vsebino

REST API v účtovníctve

Ako vytvoriť vzájomný zápočet dokladov v REST API?

Avtor: Petr Pech

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"
}
]
}
}


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?