Obdobně jako v aplikaci je možné záznam zkopírovat i přes REST API. Při importu lze namísto běžného vytvoření založit nový záznam kopií již existujícího záznamu. K tomu slouží atribut sourceId, ve kterém uvedete identifikátor kopírovaného záznamu.
Příklad
Kopie skladového pohybu, kde nově vytvořenému záznamu nastavíme jiné datum vystavení:
<winstrom version="1.0">
<skladovy-pohyb sourceId="1179">
<datVyst>2022-09-11</datVyst>
</skladovy-pohyb>
</winstrom>
Uvedené atributy (zde datVyst) se přiřadí nově vytvořenému záznamu, ostatní se převezmou z kopírovaného.
Kopírovat lze i podle kódu a totéž funguje ve formátu JSON:
<winstrom version="1.0">
<ucet sourceId="code:132001">
<id>code:132002</id>
<nazev>Zboží na hlavním skladě</nazev>
</ucet>
</winstrom>
{
"winstrom": {
"@version": "1.0",
"faktura-vydana": [{
"@sourceId": "123",
"firma": "code:JINY_ODBERATEL"
}]
}
}
Idempotence
Pokud je uveden identifikátor nového záznamu, je volání idempotentní. Opakované odeslání požadavku způsobí pouze běžnou aktualizaci již existujícího záznamu.
Pokud identifikátor není uveden nebo takový záznam dosud neexistuje, vytvoří se kopie záznamu odkazovaného atributem sourceId.
ℹ️ Jak to poznat v odpovědi: kopie vrátí ID nového záznamu, zatímco při opakovaném volání s již existujícím <id> dostanete zpět ID toho původního záznamu — nová kopie nevznikne.
Na co si dát pozor
Vytváření kopie záznamu se obvykle musí postarat o zajištění unikátnosti vlastností (např. pole Zkratka u číselníků), ale v některých případech je to již zajištěno automaticky (např. při kopírování dokladů).
Odkaz na neexistující
sourceIdskončí chybou400s kódemNOT-FOUND.Než kopii pošlete naostro, ověřte si výsledek testovacím uložením (
?dry-run=true) — v tagu<content />uvidíte, co by se skutečně uložilo.
