Preskoči na glavno vsebino

Identifikátory záznamov

Ako identifikovať záznamy v ABRA Flexi?

Avtor: Lenka Haringerová

Názov

Poznámka

Ukážka

Identifikátor ABRA Flexi

Identifikátor pridelený aplikáciou. Prideľuje ABRA Flexi a nie je možné ho meniť.

123

Kód/Skratka

Používateľské označenie. Prideľuje ho používateľ a je možné ho meniť v aplikácii.

code:CZK

Key

Jedinečný náhodný identifikátor, ktorý prideľuje ABRA Flexi dokladom (atribút UUID). Nie je možné ho meniť.

key:550e8400e29b41d4a716

PLU je identifikačný kód, ktorý sa používa pri predaji. Zvyčajne ide o 4- alebo 5-miestny číselný kód.

plu:4020

Záznam je identifikovaný podľa kódu EAN (čiarový kód). Položku cenníka je možné vyhľadať ako podľa jej EAN, tak podľa EAN jej balenia. Počet importovaných položiek cenníka sa v tomto prípade nemení.

ean:4710937332698

Externý identifikátor

Identifikátor z externej aplikácie. V aplikácii ho nie je možné meniť. Je možné ho meniť z externých systémov. Skladá sa z identifikátora externého systému a identifikátora riadku v tomto systéme. Externý identifikátor musí byť jedinečný pre celú evidenciu (napr. faktura-vydana)!

ext:SHOP:123

Hybridný identifikátor

Identifikátor vo formáte ws:{UUID firmy}:{interní ID}

ws:8ee0a075-67fa-4f92-880e-a7d65ab3c6e3:66

VAT ID

Identifikátor podľa daňového čísla. V ČR zodpovedá DIČ, v SR zodpovedá IČ DPH.

vatid:CZ28019920

IČO

Identifikátor podľa IČO.

in:28019920

IBAN

Identifikátor podľa kódu IBAN.

iban:CZ1201000002801992

Vďaka inkrementálnej aktualizácii je možné ľubovoľne pripájať ďalšie externé identifikátory k už existujúcim záznamom:

<?xml version="1.0"?><winstrom version="1.0">  <cenik id="123">    <id>ext:SHOP:abc</id>    <id>ext:SYSTEM3:xyz</id>  </cenik></winstrom>

Tento zápis je ekvivalentný s týmto:

<?xml version="1.0"?><winstrom version="1.0">  <cenik>    <id>123</id>    <id>ext:SHOP:abc</id>    <id>ext:SYSTEM3:xyz</id>  </cenik></winstrom>

V prípade JSON je platný aj zápis kombinácie identifikátorov:

"cenik": "[code:NIKON][123][ext:SHOP:abc]"

Interné identifikátory

Interný identifikátor (samostatné číslo) sú identifikátory, ktoré prideľuje systém ABRA Flexi. Ak naň odkazujete a záznam neexistuje, operácia zlyhá (na rozdiel od ostatných identifikátorov).

Na prideľovanie identifikátorov sa používa databázová sequence. Tá zaručuje, že rovnaký identifikátor nebude nikdy pridelený dvakrát (ani keď záznam vymažete). Súčasne nezaručuje číselnú nadväznosť (napr. pri rollbacku sa číslo zahodí).

Vytvorenie / aktualizácia záznamu

Ak použijete na identifikáciu záznamu iný typ identifikátora než interný identifikátor (napr. kód) a odkazovaný záznam nebude existovať, dôjde k vytvoreniu nového záznamu. V opačnom prípade sa vykoná aktualizácia existujúceho záznamu.

Nasledujúca ukážka XML / JSON zabezpečí aktualizáciu, prípadne vytvorenie, záznamu v cenníku so skratkou T100 (hodnota identifikátora tu nahrádza uvedenie atribútu kod):

<winstrom version="1.0"> 
<cenik>
<id>code:T100</id>
<nazev>Téčko 100 mm</name>
</cenik>
</winstrom>

{     
"winstrom": {
"@version": "1.0",
"cenik": [
{
"id": "code:T100",
"name": "Téčko 100 mm"
}
]
}
}

Viacnásobné identifikátory

Záznam je možné identifikovať aj použitím viacerých identifikátorov súčasne:

<?xml version="1.0"?><winstrom version="1.0">  <cenik>    <id>123</id>    <id>code:KRABICE</id>  </cenik></winstrom>

V takom prípade musia všetky identifikátory označovať ten istý záznam, inak ide o chybu. Identifikátory, ktoré v ABRA Flexi neexistujú, budú ignorované, takže z externého systému je možné poslať do ABRA Flexi všetky známe identifikátory a záznam bude nájdený podľa tých existujúcich.

Viac elementov id je možné použiť iba v importnom XML. Na iných miestach (URL v REST API, ostatné identifikátory záznamov v importnom XML, ale pri elementoch id tiež možné) je potrebné používať špecializovanú syntax: [123][code:CZK][ext:SHOP:abc].

Ak identifikátor obsahuje znaky [, ] alebo , je potrebné ich escapovať: [, ], \. Pri použití v URL je tiež potrebné nezabudnúť na správne zakódovanie URL ako takého.

Mazanie externých identifikátorov

Vykonáva sa atribútom evidencie „removeExternalIds„, kde jeho hodnota predstavuje prefix externých identifikátorov, ktoré sa majú odstrániť.

Napr. majme objekt cenníka s ID=123 a externými identifikátormi: „SHOP:abc„, „SYSTEM-1" a „SYSTEM-2„. Potom nasledujúci príklad odstráni oba identifikátory začínajúce reťazcom „SYSTEM" a pridá nový identifikátor „SHOP:123„:

<?xml version="1.0"?><winstrom version="1.0">  <cenik removeExternalIds="ext:SYSTEM">    <id>123</id>    <id>ext:SHOP:123</id>  </cenik></winstrom>

Ekvivalentný zápis vo formáte JSON:

{    "winstrom": {        "@version": "1.0",        "cenik": [            {                "id": [                    "123",                    "ext:SHOP:123"                ],                "@removeExternalIds": "ext:SYSTEM"            }        ]    }}

Prefix externého identifikátora „ext:" sa v hodnote atribútu nemusí uvádzať. Prázdny reťazec znamená, že chceme odstrániť všetky externé identifikátory.

Mazanie externých identifikátorov z položiek

Vykonáva sa podobne ako pri hlavnej evidencii s tým, že atribút „removeExternalIds" je možné uviesť spoločný pre všetky prítomné položky a alebo priamo na konkrétnej položke (má prednosť):

<?xml version="1.0"?><winstrom version="1.0">  <faktura-vydana>    <id>123</id>    <polozkyFaktury removeExternalIds="ext:P">      <faktura-vydana-polozka>        <id>10</id>      </faktura-vydana-polozka>      <faktura-vydana-polozka removeExternalIds="ext:X">        <id>20</id>      </faktura-vydana-polozka>    </polozkyFaktury>  </faktura-vydana></winstrom>

Vyššie uvedený príklad odoberie z položky 10 externé identifikátory začínajúce znakom „P", zatiaľ čo z položky 20 externé identifikátory začínajúce znakom „X". Externé identifikátory prípadných ďalších položiek na faktúre zostanú nezmenené.

Zápis predchádzajúceho príkladu vo formáte JSON by vyzeral takto:

{    "winstrom": {        "@version": "1.0",        "faktura-vydana": [            {                "id": "123",                "polozkyFaktury": [                    {                        "id": "10"                    },                    {                        "id": "20",                        "@removeExternalIds": "ext:X"                    }                ],                "polozkyFaktury@removeExternalIds": "ext:P"            }        ]    }}

Hybridné identifikátory

Sú to identifikátory, ktoré sa správajú podľa kontextu použitia. Ak hodnota {UUID firmy} zodpovedá UUID firmy, do ktorej sa záznam importuje, aktualizuje sa záznam podľa hodnoty interného identifikátora {interní ID}. Ak sa UUID nezhoduje, funguje ako externý identifikátor.

Inými slovami, pri importe záznamu späť do firmy, kde bol záznam pôvodne vytvorený, dôjde k jeho aktualizácii na základe interného identifikátora. V prípade importu do cudzej firmy sa použije celý identifikátor, ako keby išlo o externý.

Pri exporte sa použitie hybridných identifikátorov aktivuje režimom ?mode=xml_import_export (viď parametre URL).

Ste s tem dobili odgovor na svoje vprašanje?