Přeskočit na hlavní obsah

Služby pro skladové pohyby v API (není vydáno)

Tvorba faktury a pokladního dokladu z příjemky nebo výdejky

Autor: Petr Pech

Obdobně jako je v desktopové či webové aplikaci možné z výdejky vytvořit fakturu a pokladní doklad, je totéž možné provést i pomocí REST API.

Totéž platí i pro tvorbu a dokončení převodky, pakliže je skladový doklad výdejem pro převodku. Pokud by Vás zajímalo, jak na to, nahlédněte do našeho jiného návodu.

V tomto návodu si však ukážeme, jak tyto operace provést prostřednictvím REST API. Podobnost těchto operací můžeme najít v realizaci objednávky.

Tvorbu vydané a přijaté faktury, tvorbu pokladního dokladu zajišťuje funkce realizaceSklPoh. Funkce realizaceSklPoh podporuje dvě služby.

Požadavek lze zaslat metodou PUT/POST na URL adresu typu:

https://localhost:5434/v2/c/testovaci/skladovy-pohyb.json

Tvorbu faktury či pokladního dokladu z dokladu skladového podporuje pouze API v2. V URL adrese je tedy zapotřebí "v2" uvést (viz příklad výše).

V těle požadavku poté zasíláme níže zmíněné informace dle potřeby.

Vytvoření faktury

Služba vyžaduje použití dvou atributů:

  • type - vytvorit-fakturu

  • typDokl - identifikátor objektu z evidence typ-faktury-prijate nebo typ-faktury-vydane

Příklad zápisu v XML pro tvorbu faktury z příjemky nebo výdejky:

<winstrom version="1.0">
<skladovy-pohyb>
<id>123</id>
<realizaceSklPoh type="vytvorit-fakturu">
<typDokladu>code:FAKTURA</typDokladu>
</realizaceSklPoh>
</skladovy-pohyb>
</winstrom>

Příklad zápisu v JSON pro tvorbu faktury z příjemky nebo výdejky:

{
"winstrom":{
"skladovy-pohyb":[
{
"id":123,
"realizaceSklPoh":{
"@type":"vytvorit-fakturu",
"typDokl":"code:FAKTURA"
}
}
]
}
}

To, zdali má být vytvořena přijatá nebo vydaná faktura, určuje typ pohybu skladového dokladu. Pokud se jedná o příjemku, bude vytvořena faktura přijatá. Pokud se jedná o výdejku, bude vytvořena faktura vydaná.

Pokud je výdejka vytvořena nejdříve realizací objednávky, přepne tvorba faktury tímto způsobem stav objednávky na "Hotovo".

Vytvoření pokladního dokladu

Služba vyžaduje použití dvou atributů (příp. volitelného třetího):

  • type - vytvorit-pokladni-doklad

  • typDokl - identifikátor objektu z evidence typ-pokladni-pohyb

  • bsp a rada - nepovinné, odvodí se z typu dokladu

Příklad zápisu v XML pro tvorbu pokladního dokladu:

<winstrom version="1.0">
<skladovy-pohyb>
<id>321</id>
<realizaceSklPoh type="vytvorit-pokladni-doklad">
<typDokladu>code:POKLADNA</typDokladu>
</realizaceSklPoh>
</skladovy-pohyb>
</winstrom>

Příklad zápisu v JSON pro tvorbu pokladního dokladu:

{
"winstrom":{
"skladovy-pohyb":[
{
"id":321,
"realizaceSklPoh":{
"@type":"vytvorit-pokladni-doklad",
"typDokl":"code:POKLADNA"
}
}
]
}
}

To, zdali má být vytvořen pokladní výdej nebo příjem, určuje typ pohybu skladového dokladu. Pokud se jedná o příjemku, bude vytvořen příjmový pokladní doklad. Pokud se jedná o výdejku, bude vytvořen výdajový pokladní doklad.

Příklad cURL volání

Obdobně jako k provedení kterékoliv jiné operace v API, bývá běžně využit příkaz cURL. Níže je možné čerpat z jednoho takového příkladu.

curl -X PUT 
'https://localhost:5434/v2/c/flexi_clean/skladovy-pohyb.json'
-H 'Accept: application/json' -H 'Content-Type: application/json'
--data-binary '
{ "winstrom":{ "skladovy-pohyb":[{ "id":385, "realizaceSklPoh":{ "@type":"vytvorit-pokladni-doklad", "typDokl":"code:POKLADNA" } }] } }'
--insecure -u admin:adminadmin | jq

Rozúčtování vedlejších nákladů na sklad

Pomocí REST API je možné také rozúčtovat vedlejší náklady na skladový doklad

Vstupní parametry:

  • vedlejsiNaklady: Výše vedlejších nákladů k rozúčtování (povinný).

  • podleCeny: Příznak, že se mají náklady rozúčtovat podle ceny (nepovinný). Možné hodnoty jsou true nebo false. Pokud není uveden, nebo má hodnotu false, budou náklady rozúčtovány podle počtu kusů.

Příklad zápisu v XML pro volání služby rozuctuj :

<winstrom version="1.0"> 
<skladovy-pohyb>
<!-- Skladový doklad, na nějž mají být náklady rozúčtovány. -->
<id>code:S+0001/2021</id>
<!-- Lze uvést i další vlastnosti dokladu, jako při běžném importu. -->
<rozuctuj>
<vedlejsiNaklady>50</vedlejsiNaklady>
<podleCeny>false</podleCeny>
</rozuctuj>
</skladovy-pohyb>
</winstrom>

Výsledkem budou změny cen výše uvedeného dokladu, který měl původně cenaMj 100:

<winstrom version="1.0"> 
<skladovy-pohyb>
<id>code:S+0001/2021</id>
<polozkyDokladu>
<skladovy-pohyb-polozka>
<mnozMj>2.0</mnozMj>
<cenaMj>125.0</cenaMj>
<cenaMjNakl>25.0</cenaMjNakl>
<cenaMjPoriz>100.0</cenaMjPoriz>
<sumCelkem>250.0</sumCelkem>
</skladovy-pohyb-polozka>
</polozkyDokladu>
</skladovy-pohyb>
</winstrom>


Dostali jste odpověď na svou otázku?