Základní dotazování

V tomto oddíle se dozvíte o základech dotazování

Operátory

Seznam základních operátorů.

Operátor Název Význam Příklad
|| (+) Spojení řetězců Spojí dva řetězce do jednoho Code || Name nebo Code + Name
+ Plus Sečte dvě čísla LocalAmountWithoutVAT + VATAmount
- Mínus Odečte dvě čísla Amount - VATAmount
mul (*) Krát Vynásobí dvě čísla UnitPrice * Quantity nebo UnitPrice mul Quantity
div (/) Děleno Vydělí dvě čísla TotalPrice / Quantity nebo TotalPrice div Quantity
mod (%) Zbytek po dělení (modulo) Vypočte zbytek po dělení TotalPrice % 3 nebo TotalPrice mod 3

Funkce

Seznam základních funkcí.

Funkce Význam Příklad
upper() Převede řetězec na velká písmena where=upper(name)+like+'*ABRA*'
lower() Převede řetězec na malá písmena where=lower(name)+like+'*abra*'

Logické (booleovské) operátory

Seznam základních logických operátorů.

Operátor Název Význam Příklad
not Negace Neguje výraz, který za operátorem následuje. not (Firm_ID eq '1100000101')
and A zároveň Platí, pokud platí (jsou kladné) oba operandy. (Firm_ID eq '1100000101') and (Amount ge 1000)
or Nebo Platí, pokud platí (je kladný) alespoň jeden z operandů. (Firm_ID eq '1100000101') or (Amount ge 1000)

Dávkové zpracování

Web API podporuje dávkové/transakční zpracování, tj. je možné spojit několik operací/požadavků do jedné dávky a zajistit, že všechny operace budou provedeny jako celek nebo se neprovede žádná z nich.

Každá operace dávkovým zpracováním má následující strukturu

{
	"type": string,
	"id": string,
	"data": any,
	"allow_expr": boolean
}

Kde má každá vlastnost své patřičné využití.

Vlastnost Popis
type Typ operace.
ID Unikátní identifikátor operace v rámci jedné dávky. Nesmí začínat číslicí.
data Konkrétní obsah operace.
allow_expr Příznak, zda je v datech operace povoleno používat výrazy. Nepovinná vlastnost, výchozí hodnota je false.

Operace Create

Operace create, slouží k vytvoření nového záznamu.

"data": {
	"class_id": "accounts",
	"object_data": {
		"name": "acc 1",
		"code": "009"
	},
	"query": {
		"select": ["id", "code", "name"]
	},
	"with-softvalidation": false,
	"strictdataprotection": false
	}
}

Kde má každá vlastnost své patřičné využití.

Vlastnost Popis
class_id ID třídy vytvářeného business objektu.
object_data Specifikace vytvářeného business objektu.
query Seznam polí z vytvořeného business objektu, která se mají vrátit v odpovědi. Nepovinná vlastnost. Výchozí hodnota je ["id"].
with-softvalidation Příznak, zda se má před uložením vytvářeného objektu provést softvalidace. Nepovinná vlastnost. Výchozí hodnota je true.
strictdataprotection Určuje, zda se při pokusu o vytvoření BO zohledňuje přístup k chráněným položkám v rámci definic ochrany dat. Nepovinná vlastnost. Výchozí hodnota je true.

Operace Update

Operace update, slouží k upravení stávajícího záznamu.

"data": {
	"class_id": "accounts",
	"obj_id": "1J50000101",
	"object_data": {
		"name": "acc 1"
	},
	"query": {
		"select": ["id", "code", "name"]
	},
	"with-softvalidation": false,
	"strictdataprotection": false
	}
}

Kde má každá vlastnost své patřičné využití.

Vlastnost Popis
class_id ID třídy aktualizovaného business objektu.
obj_id ID aktualizovaného business objektu z uvedené třídy.
object_data Specifikace požadovaných změn business objektu.
query Seznam polí z aktualizovaného business objektu, která se mají vrátit v odpovědi. Nepovinná vlastnost. Výchozí hodnota je ["id"].
with-softvalidation Příznak, zda se má před uložením změn provést softvalidace. Nepovinná vlastnost. Výchozí hodnota je true.
strictdataprotection Určuje, zda se při pokusu o aktualizaci BO zohledňuje přístup k chráněným položkám v rámci definic ochrany dat. Nepovinná vlastnost. Výchozí hodnota je true.

Operace Delete

Operace delete, slouží ke smazání existujícího záznamu.

"data": {
	"class_id": "accounts",
	"obj_id": "1J50000101"
}

Kde má každá vlastnost své patřičné využití.

Vlastnost Popis
class_id ID třídy aktualizovaného business objektu.
obj_id ID aktualizovaného business objektu z uvedené třídy.

Práce s adresářem

V tomto oddíle naleznete příklady práce s adresářem firem.

Získání všech záznamů z adresáře

Zobrazí všechny záznamy z číselníku Adresář firem se všemi údaji

GET

https://atd.abra.eu/demodata/firms

POST

https://atd.abra.eu/demodata/firms/query
{"select": []}

POST

https://atd.abra.eu/demodata/query
{"class": "firms", "select": []}

Response

[
	{
		"afterdueterm": 0,
		"afterduetermenabled": false,
		"checkcredit": false,
		"code": "111",
		"commercialsagreement": 0,
		"communicationtype_id": null,
		"correctedat$date": null,
		"taxidentnumber": "",
		"name:": "CarComponents Corp.",
		"turnover_id": null,
		"vatcountry_id": null,
		"vatidentnumber": "",
		"vatpayor": false,
		"wwwaddress": ""
	},
	{
		"afterdueterm": 0,
		"afterduetermenabled": false,
		"checkcredit": false,
		"code": "00022",
		"commercialsagreement": 0,
		"communicationtype_id": null,
		"correctedat$date": "2006-10-24T14:27:43.451",
		"correctedby_id": "1300000101",
		"name": "Teer Corporation",
		"taxidentnumber": "",
		"turnover_id": null,
		"vatcountry_id": null,
		"vatidentnumber": "",
		"vatpayor": false,
		"wwwaddress": ""
	},
	...
]

Získání vybraných záznamů z adresáře

Díky klauzuli SELECT získáme námi vybrané záznamy z číselníku Adresář firem se všemi údaji

GET

https://atd.abra.eu/demodata/firms?select=id,name+as+Nazev

POST

https://atd.abra.eu/demodata/firms/query
{"select": ["ID", {"value":"Name","name":"Nazev"}]}

POST

https://atd.abra.eu/demodata/query
{
    "class": "firms",
    "select": ["ID", {"value":"Name","name":"Nazev"}]
}

Získání všech záznamů z adresáře, včetně údajů o provozovnách

Zde využijeme klauzuli EXPAND, která nám dopomůže zobrazit i detail z řádků provozoven

GET

https://atd.abra.eu/demodata/firms?select=id,name&expand=firmoffices(name,address_id.street)

POST

https://atd.abra.eu/demodata/firms/query
{"select": ["ID", "Name", {"name":"firmoffices","value":["Name","Address_id.street"]}]}

POST

https://atd.abra.eu/demodata/query
{
    "class": "firms",
    "select": ["ID", "Name", {"name":"firmoffices","value":["Name","Address_id.street"]}]
}

Smazání firmy

Smazání záznamu se provádí metodou DELETE, nicméně pro smazání záznamu je nezbytné udat ID požadovaného objektu.

DELETE

https://atd.abra.eu/demodata/firms/3000000101

Skrytí firmy

Skrytí firmy se provádí nastavení položky hidden na hodnotu true.

PUT

https://atd.abra.eu/demodata/firms/9000000101
Body
{"hidden": true}

POST

https://atd.abra.eu/demodata/firms/query
{"where": ["id like 'Q760100101'"], "hidden": true}

POST

https://atd.abra.eu/demodata/query
{
    "class": "firms",
    "where": ["id like 'Q760100101'"],
    "hidden": true
}

Získání skrytých firem

Zobrazení skrytých firem, se provádí parametrem hidden.

GET

https://atd.abra.eu/demodata/firms/views/hidden?select=id,name
Body
{"hidden": true}

Skladové hospodářství

Do této sekce jsou zařazeny různé příklady související se skladovými doklady - zejména jejich vytváření a také čerpání obsahu z určitého typu dokladu do jiného a se skladovým hospodářstvím obecně.

Vytvoření skladové příjemky

V těle požadavku nevyplňujte zároveň celkovou a jednotkovou cenu. Business logika ABRA Gen ceny automaticky dopočítává a zaokrouhluje dle nastavení. Pokud by spolu uvedené ceny nekorespondovaly, požadavek by skončil chybou.

POST

https://atd.abra.eu/demodata/receiptcards?select=id
Body

{
	"actualizesuppliers": true,
	"docdate$date": "2018-08-31T00:00:00.000",
	"docqueue_id": "O600000101",
	"firm_id": "3000000101",
	"firmoffice_id": "3000000101",
	"rows": [
		{
        "rowtype": 3,
		"store_id": "2100000101",
		"storecard_id": "2100000101",
		"quantity": 2,
		"qunit": "ks",
		"unitprice": 1500,
		"division_id": "2100000101"
		}
	]
}

Response

Status: 201 Created
{
	"id": "DJ20000101"
}

Vytvoření skladové příjemky

Přesun mezi sklady se provádí pomocí dvojice dokladů Převodka výdej a Převodka příjem.

POST

https://atd.abra.eu/demodata/outgoingtransfers?select=id
Obsah pro Body můžete použít z prvního příkladu

Vytvoření převodky příjem

Převodka příjem se vždy vytváří importem existující Převodky výdej.

POST

https://atd.abra.eu/demodata/incomingtransfers/import/outgoingtransfers/9J20000101?select=id
Body

{
	"params": {
		"docqueue_id": "S600000101",
		"store_id": "3200000101"
	}
}

Vytvoření dodacího listu

Vytvoření dodacího listu s jedním skladovým řádkem.

POST

https://atd.abra.eu/demodata/billsofdelivery?select=id
Body

{
	"docdate$date": "2018-08-31T00:00:00.000",
	"docqueue_id": "P600000101",
	"firm_id": "3000000101",
	"firmoffice_id": "3000000101",
	"rows": [
		{
			"rowtype": 3,
			"store_id": "3200000101",
			"storecard_id": "2100000101",
			"quantity": 2,
			"qunit": "ks",
			"division_id": "2100000101"
		}
	]
}

Přidání dodavatele ke skladové kartě

Přidání dodavatele (existující firmy z adresáře firem) k existující skladové kartě.

POST

https://atd.abra.eu/demodata/billsofdelivery?select=id
Body

{
	"storecard_id": "I600000101",
	"firm_id": "J000000101",
	"unitpurchaseprice": 280,
	"purchasecurrency_id": "0000CZK000",
	"purchasecurrrate": 1,
	"purchasedate$date": "2019-04-15T06:48:25.372Z",
	"qunit": "l",
	"unitrate": 1
}

Změna hlavního dodavatele na skladové kartě

Vytvoření dodacího listu s jedním skladovým řádkem.

PUT

https://atd.abra.eu/demodata/storecards/I600000101?select=id,mainsupplier_id
Body

{
	"mainsupplier_id": "ID00000101"
}

Výběr skladových karet omezený za skladové menu

Příklad demonstruje omezování záznamů podle filtrovacích podmínek s využitím klauzule WHERE. Výběr chceme omezit za skladové menu Počítačové komponenty. Klauzule ORDERBY setřídí data dle zadané položky, v našem příkladu podle kódu.

GET

https://atd.abra.eu/demodata/storecards?select=id,code,name&where=storemenuitem_id+eq+'A000000101'&orderby=code

Výběr skladových karet s omezením počtu vrácených záznamů

Příklad omezení počtu záznamů, pokud potřebujeme záznamy získávat po částech. Klauzule TAKE udává počet vracených záznamů, klauzule SKIP počet přeskočených záznamů. Praktickou oblastí využití této funkcionality je stránkování.

GET

https://atd.abra.eu/demodata/storecards?select=id,code,name&where=storemenuitem_id+eq+'A000000101'&orderby=code&take=3&skip=5

Objednávky

Příklady v této sekci se věnují práci s objednávkami - podíváme se na jejich načítání, vytváření a úpravy.

Vytvoření objednávky přijaté

V těle požadavku nevyplňujte zároveň celkovou a jednotkovou cenu. Business logika ABRA Gen ceny automaticky dopočítává a zaokrouhluje dle nastavení. Pokud by spolu uvedené ceny nekorespondovaly, požadavek by skončil chybou.

POST

https://atd.abra.eu/demodata/receivedorders?select=id
Body

{
	"docqueue_id": "I700000101",
	"firm_id": "2800000101",
	"ExternalNumber": "Objednávka z e-shopu č. 1",
	"PricesWithVAT": true,
	"rows": [
		{
			"rowtype": 3,
			"store_id": "2100000101",
			"storecard_id": "Z100000101",
			"quantity": 1,
			"division_id": "2100000101"
		}
	]
}

Response

Status: 201 Created
{
	"id": "4700000101"
}

Doplnění dalšího řádku do objednávky přijaté

Doplnění řádku s dopravným do existující objednávky přijaté s ID 5700000101. Jedná se o aktualizaci existujícího objektu, proto použijeme metodu PUT.

PUT

https://atd.abra.eu/demodata/receivedorders/5700000101?select=id
Body

{
	"rows": [
		{
			"rowtype": 1,
			"text": "Dopravné a balné",
			"totalprice": 125,
			"vatrate_id": "02100X0000",
			"division_id": "2100000101"
		}
	]
}

Tisk existující objednávky přijaté do PDF

Tisk objednávky přijaté s ID 1700000101 do PDF souboru s využitím systémové tiskové sestavy Formulář objednávky přijaté.

GET

https://atd.abra.eu/demodata/receivedorders.pdf?select=id&report=9700000001&where=id+eq+'1700000101'

Získání seznamu dosud nedodaných objednávek

Potřebujeme získat seznam objednávek přijatých, které dosud nejsou zcela vyčerpány do následných dokladů. Jedná se o další ukázku využití klauzule WHERE.

GET

https://atd.abra.eu/demodata/receivedorders?where=isavailablefordelivery+eq+'A'&select=id,externalnumber,firm_id.name

Získání seznamu objednávek určité skladové položky

Potřebujeme získat seznam objednávek přijatých od určitého odběratele (firmy), ve kterých si tento odběratel objednával určitou skladovou kartu. Jedná se o ukázku omezení podle vnořené kolekce s využitím klauzule exists.

GET

https://atd.abra.eu/demodata/receivedorders/?select=displayname,firm_id&expand=rows(storecard_id,store_id,quantity,qunit,rowtype)&where=exists(rows where storecard_id eq '7100000101') and firm_id eq '5000000101'

Ceníky

Příklady související s ceníky - zejména dotazování na existující záznamy.

Získání ceny z prodejního ceníku pro konkrétní skladovou kartu

Jedná se o příklad rozšířeného dotazování, kdy je dotaz předáván v těle POST požadavku.

POST

https://atd.abra.eu/demodata/storeprices/query
Body
{
    "select" : ["PriceList_ID", "Storecard_ID.Name",
            {"name": "pricerows", "value": ["Price_ID","Price_ID.Name","Amount"]}],
    "where" : "StoreCard_ID='Z100000101'"
}

Response

Status: 200 OK
[
	{
		"PriceList_ID": "2100000101",
		"StoreCard_ID.Name": "Mainboard Shuttle 100",
		"pricerows": [
			{
				"Price_ID": "2100000101",
				"Price_ID.Name": "Koncová prod.cena - s DPH",
				"Amount": 3500			},
			{
				"Price_ID": "1000000101",
				"Price_ID.Name": "Dealerská prod.cena - bez DPH3300"
			}
		]
	}
]

Získání ceny z prodejního ceníku pro konkrétní skladovou kartu a definici ceny

Další příklad rozšířeného dotazování (dotaz předávaný v těle POST požadavku).

POST

https://atd.abra.eu/demodata/storeprices/query
Body
{
    "select" : ["StoreCard_ID.Name",{"name": "Ceny", "value": {"field": "PriceRows", "query":{
        "select": ["Price_ID.Name","Amount",{"name": "Skladová karta","value": "Parent_ID.StoreCard_ID.Name"}],
        "where": "Price_ID='2100000101'"}}}],
    "where" : "StoreCard_ID='Z100000101' and PriceList_ID='2100000101'"
}

Získání ceny z prodejního ceníku pro konkrétní skladovou kartu a definici ceny

Další příklad rozšířeného dotazování (dotaz předávaný v těle POST požadavku).

POST

https://atd.abra.eu/demodata/storeprices/query
Body
{
    "select" : ["StoreCard_ID.Name",{"name": "Ceny", "value": {"field": "PriceRows", "query": {
        "select": ["Price_ID.Name","Amount",{"name": "Skladová karta","value": "Parent_ID.StoreCard_ID.Name"}],
        "where": "Price_ID='2100000101'"}}}],
    "where" : "StoreCard_ID='Z100000101' and PriceList_ID='2100000101'"
}

Získání prodejní ceny pro konkrétní skladovou kartu a firmu

Příklad volání QR funkce v rámci POST požadavku. Funkce NxGetStoreCardUnitPrice vrací jednotkovou cenu v požadované měně s DPH nebo bez DPH pro zadanou skladovou kartu, sklad, jednotku, definici ceny a firmu.

POST

https://atd.abra.eu/demodata/qrexpr
Body
{"expr" : "NxGetStoreCardUnitPrice('2800000101', NxStoreID('01'), 'Z100000101', 1, 'ks', '', NxNow, True, '', True, '', '', True, '')"}

Založení nové časové platnosti ceníku

Požadavek realizujeme prostřednictvím vytvoření nového řádku v daném ceníku.

POST

https://atd.abra.eu/demodata/pricelists/1200000101/rows
Body
{
	"validfromdate$date": "2018-01-01",
	"description": "Nový ceník"
}

Založení nových cen skladové karty

Ceník je jakási obálka kolem skladových cen. Na ceníku se určuje časová platnost. Každý ceník má své časové platnosti, které není možné ceníky sdílet. Časová platnost má hodnotu ValidFrom$DATE, která určuje platnost od. Do kdy je platnost aktuální určuje až následující záznam. Pokud neexistuje, je časová platnost neomezená. Časové platnosti nejsou pro ceníky povinné.

POST

https://atd.abra.eu/demodata/storeprices
Body
{
	"PriceRows": [
		{
			"amount": 7900,
			"price_id": "1000000101",
			"qunit": "ks",
			"unitrate": 1
		},
		{
			"amount": 10999,
			"price_id": "2100000101",
			"qunit": "ks",
			"unitrate": 1
		}
	],
	"pricelist_id": "1200000101",
	"pricelistvalidity_id": "1200000101",
	"storecard_id": "2100000101"
}

Platnosti ceníků

Příklad zobrazí ID ceníků a jejich zadané meze platností - nejstarší a nejnovější.

POST

https://atd.abra.eu/demodata/query
Body
{
	"class": "PriceLists",
	"select": [
		"ID",
		{
			"name": "last_validity",
			"value": {
				"field": "rows",
				"query": {
					"select": "max(validfromdate$date)",
					"groupby": "parent_id"
				}
			}
		},
		{
			"name": "first_validity",
			"value": {
				"field": "rows",
				"query": {
					"select": "min(validfromdate$date)",
					"groupby": "parent_id"
				}
			}
		}
	]
}

Inventury

Příklady na vyhledávání položek (pozic a skladových karet) a jejich doplňování do hlavních inventárních protokolů a dílčích inventárních protokolů.

Přidání skladové karty na hlavní inventární protokol

Na hlavní inventární protokol s ID 1400000101 přidáme skladovou kartu s ID 2100000101 a jednotkou se zkratkou kg.

POST

https://atd.abra.eu/demodata/maininvprotocols/1400000101/storecards
Body
{
	"storecard_id": "2100000101",
	"qunit": "kg"
}

Response

Status: 201 Created
{
	"miprow_id": "1O00000101"
}

Dohledání skladové karty na hlavním inventárním protokolu

Zjišťujeme, zda hlavní inventární protokol s ID 1400000101 obsahuje skladovou kartu s ID 2100000101.

GET

https://atd.abra.eu/demodata/maininvprotocols/1400000101/storecards?storecard_id=2100000101

Přidání skladové pozice na hlavní inventární protokol

Na hlavní inventární protokol s ID 2300000101 přidáme skladovou pozici s ID 2000000101.

POST

https://atd.abra.eu/demodata/maininvprotocols/1400000101/storecards?storecard_id=2100000101
Body
{
	"storeposition_id":"2000000101"
}

Dohledání skladové pozice na hlavním inventárním protokolu

Zjišťujeme, zda hlavní inventární protokol s ID 2300000101 obsahuje skladovou kartu s ID 2000000101.

GET

https://atd.abra.eu/demodata/maininvprotocols/2300000101/positions?storeposition_id=2000000101

Přidání skladové karty na pozici dílčího inventárního protokolu

Na pozici dílčího inventárního protokolu s ID 2000000101 přidáme řádek se skladovou kartou s ID 1J00000101, jednotkou kg a rovnou nastavíme zjištěný počet 1.

POST

https://atd.abra.eu/demodata/partialinvprotocolpositions/2000000101/storecards
Body
{
	"storecard_id": "1J00000101",
	"qunit": "kg",
	"unitrealquantity": 1
}

Dohledání skladové karty na pozici dílčího inventárního protokolu

Zjišťujeme, zda v pozici s ID 2000000101 existuje řádek obsahující skladovou kartu s ID 1J00000101.

GET

https://atd.abra.eu/demodata/partialinvprotocolpositions/2000000101/storecards?storecard_id=1J00000101

K řádku dílčího inventárního protokolu s ID 1H00000101 přidáme šarži/sériové číslo s ID AB00000101

Na pozici dílčího inventárního protokolu s ID 2000000101 přidáme řádek se skladovou kartou s ID 1J00000101, jednotkou kg a rovnou nastavíme zjištěný počet 1.

POST

https://atd.abra.eu/demodata/partialinvprotocolrows/1H00000101/storebatches
Body
{
	"storebatch_id": "AB00000101",
	"qunit": "kg",
	"unitrealquantity": 1
}

Dohledání skladové šarže na řádku dílčího inventárního protokolu

Zjišťujeme, zda v pozici s ID 2000000101 existuje řádek obsahující skladovou kartu s ID 1J00000101.

GET

https://atd.abra.eu/demodata/partialinvprotocolrows/1H00000101/storebatches?storebatch_id=AB00000101

Používání Quickreports funkcí

Zobrazení celkové skladové dispozice pomocí QR funkce

Následující požadavek vrátí informaci o dostupném množství určité skladové položky s ID Z100000101 (snížené o případné rezervace), přes všechny sklady.

GET

https://atd.abra.eu/demodata/qrexpr
Body
{
	"expr": "NxGetAvailableQuantity('Z100000101','',0)"
}

Response

{
	"result": 9
}

Zobrazení skladové dispozice pomocí QR funkce na konkrétním skladu

Následující požadavek vrátí dostupné množství skladové karty s ID Z100000101 na skladu s kódem 01.

GET

https://atd.abra.eu/demodata/qrexpr
Body
{
	"expr": "NxGetAvailableQuantity('Z100000101',NxStoreID('01'),0)"
}

Ochrana dat

Příklady v této sekci se týkají funkcionality obecné ochrany dat.

Přepínání příznaku Zaměstnanec/Pracovník

Příznak Zaměstnanec/Pracovník v adresáři osob není možné editovat přímo, ale je zapotřebí použít speciální funkci Hromadná oprava "Zaměstnanec/Pracovník". Stejně tak ve Web API slouží k tomuto účelu speciální metoda dataprotectionswitch.

PUT

https://atd.abra.eu/demodata/persons/5000000101/dataprotectionswitch?select=lastname,isemployee
Body
{
	"IsEmployee": true
}

Response

Status: 200 OK
{
	"lastname": "Smith",
	"isemployee": true
}

Přepínání příznaku Právnická osoba

Příznak Právnická osoba v adresáři firem není možné editovat přímo, ale je zapotřebí použít speciální funkci Hromadná úprava Právního subjektu. Stejně tak ve Web API slouží k tomuto účelu speciální metoda dataprotectionswitch.

PUT

https://atd.abra.eu/demodata/firms/6000000101/dataprotectionswitch?select=name,legalperson
Body
{
	"LegalPerson": true
}

Ostatní příklady

Další příklady z praxe, které se nevešly do žádné z předchozích kategorií.

Termín plánované výroby pro Objednávku přijatou

Příklad na použití funkce NxSQLSelect.

POST

https://atd.abra.eu/demodata/qrexpr
Body
{
	"expr": "CfxDateToStr(NxStrToInt(NxSQLSelect('Select JO.ScheduledAt$Date from Relations R left join PLMProduceRequests PR on PR.ID=R.RightSide_Id left join PLMJobOrders JO on JO.ID=PR.JobOrder_ID where R.REL_DEF=1620 and R.LeftSide_ID=' + NxQuotedStr('1600000101'),'',';','')),'DD.MM.YYYY','.')"
}

Response

Status: 200 OK
{
	"result": "17.10.2017"
}

Požadavky na výrobu k Objednávce přijaté

Další příklad z výroby.

POST

https://atd.abra.eu/demodata/query
Body
{
	"class": "ReceivedOrders",
	"select": [
		"ID",
		"DisplayName",
		{
			"name": "X-Vazby",
			"value": {
				"class": "Relations",
				"select": [
					"RightSide_ID",
					{
						"name": "PLM",
						"value": {
							"class": "PLMProduceRequests",
							"select": "DisplayName",
							"where": "id = :RightSide_ID"
						}
					}
				],
				"where": "Rel_Def=1620 and LeftSide_ID=:ID"
			}
		}
	],
	"where": "Firm_ID = 'L000000101'"
}

Import OP do DL

Příklad na použití importního manažeru.

POST

https://atd.abra.eu/demodata/billsofdelivery/import/receivedorders/1700000101?select=id,displayname
Body
{
	"params": {
		"docqueue_id": "P600000101"
	}
}

Platba FV kartou - vytvoření OSP

Další příklad použití importního manažeru.

POST

https://atd.abra.eu/demodata/otherincomes?select=id,displayname
Body
{
	"DocQueue_ID": "3600000101",
	"Country_ID": "00000CZ000",
	"Firm_ID": "2800000101",
	"FirmOffice_ID": "2800000101",
	"VATDocument": 0,
	"Currency_ID": "0000CZK000",
	"PDocumentType": "03",
	"PDocument_ID": "3L00000101",
	"ElectronicPayment": 1,
	"EET": 1,
	"Rows": [
		{
			"Division_ID": "2100000101",
			"TAmount": 3450
		}
	]
}

Provedení EET

Zápis tržby do systému, získání FIK a BKP.

PUT

https://atd.abra.eu/demodata/eetturnovers/3300000101/process
Body
{
	"@id": "/demodata/eetturnovers/3300000101/process/3300000101",
	"displayname": "OSP-1/2017",
	"id": "3300000101",
	"classid": "ENOR1TF5WOFODJWGHWKOLF1BTC",
	...
	"bkp": "B2EC1F03-6EF27A16-F2FA8ED3-A98DDC12-39C5A5C7",
	"fik": "be7cf08a-5ce7-46aa-98b8-e89fed8b2dc9-ff",
	...
}

Zobrazení dat definovatelného číselníku

Pro práci s definovatelným číselníkem prostřednictvím Web API je zapotřebí v jeho vlastnostech vyplnit položku Název kolekce ve Web API. V našem případě jsme si nadefinovali číselník barev a název kolekce nastavili na hodnotu colors.

GET

https://atd.abra.eu/demodata/colors

Zobrazení čísla dokladu

Použití neperzistentní položky DisplayName. Načítá se celý objekt z databáze a pole se vypočítává, proto zpracování trvá delší dobu.

GET

https://atd.abra.eu/demodata/issuedinvoices?select=displayname

Zobrazení čísla dokladu, rychlejší způsob

Identický výsledek jako v předchozím příkladu lze získat také s použitím perzistentních položek. Název vrácené položky můžeme pro zvýšení srozumitelnosti přejmenovat pomocí klíčového slova as.

GET

https://atd.abra.eu/demodata/select=DocQueue_ID.Code || '-' || OrdNumber || '/' || Period_ID.Code+as+DisplayName

Dohledání skladové karty dle EANu

Příklad použití vnořeného EXISTS v klauzuli WHERE.

GET

https://atd.abra.eu/demodata/query
Body
{
	"class": "storecards",
	"select": [
		{ "value": "ID", "name": "idecko" },
		"Code",
		"Name",
		"EAN",
		{
			"name": "StoreUnits",
			"value": [
				"ID",
				{
					"name": "StoreEans",
					"value": [
						"EAN"
					]
				}
			]
		}
	],
	"where": "exists(StoreUnits WHERE exists(StoreEANS WHERE EAN = '123698776559'))"
}

Aktualizace hlavičky a řádku objektu v jednom požadavku

Web API umožňuje provést aktualizaci hodnot na hlavičce a v řádcích určitého dokladu v rámci jediného požadavku.

PUT

https://atd.abra.eu/demodata/issuedinvoices/8M00000101
Body
{
	"description": "dodávka 9/2018",
	"rows": [
		{
			"id": "VM00000101",
			"unitprice" : 3000.0,
			"quantity": 4
		}
	]
}