MRP-K/S

Autonomní režim

Autonomní režim účetního systému MRP-K/S

Autonomní režim účetního systému MRP-K/S

V autonomním režimu funguje klientská část účetního systému MRP-K/S jako webový server (je tudíž nutné, abyste vyhradili jednu klientskou licenci účetního systému MRP-K/S trvale pro tuto komunikaci), který zpracovává příchozí požadavky odeslané metodou HTTP POST a reaguje na ně odpovědí. Požadavek i odpověď jsou soubory ve formátu xml s předepsanou strukturou. Komunikace může být volitelně kódovaná, s možností komprese, autentizace a šifrování.

Využívá se pro napojení na internetové obchody i od jiných poskytovatelů, případně pro generování dat z databáze a import některých dokladů.


1. Spuštění MRP-K/S v autonomním režimu
2. Obecná struktura xml dotazu a odpovědi
3. Kódovaná komunikace
Funkce Hmac_Sha256
Odvození klíčů
Autentizace
Šifrování
Komprese
Struktura obálky
Postup kódování na straně odesílatele
Postup dekódování na straně příjemce
Příklad struktury kódovaného dotazu a odpovědi
Příklad výpočtu šifrování a autentizace
4. Podporované příkazy
EXPEO0 Export skladových karet
EXPEO1 Export skladových karet
IMPEO0 Import objednávek
CENEO0 Export ceníku
ADREO0 Export adres

1. Spuštění MRP-K/S v autonomním režimu

Spuštění MRP-K/S v autonomním režimu se provádí zadáním parametrů příkazového řádku. Komunikace se odehrává v jedné, předem zvolené firmě.

-A Spouští autonomní režim
-Fx Určuje číslo firmy (x), se kterou bude autonomní režim pracovat
-Y Uživatelské jméno a heslo, oddělené čárkou bez mezer

Příklad spuštění autonomního režimu ve firmě č.1:
  MRPKS.EXE -A -F1 -Ymrpdba,mrpdba

Při prvním spuštění autonomního režimu je potřeba v Nastavení vybrat číslo TCP portu, na kterém bude program očekávat požadavky. Pokud je vyžadována šifrovaná komunikace, lze zadat též šifrovací klíč. Na záložce profily je také třeba nakonfigurovat, které příkazy budou pro komunikaci povoleny a nastavit jejich další parametry.

2. Obecná struktura xml dotazu a odpovědi

Databáze MRP-K/S pracuje v kódové stránce Windows-1250. Přestože je tedy xml zpravidla kódováno v UTF-8, dokument by neměl obsahovat znaky, které v se v kódování Windows-1250 nevyskytují.

Kořenovým elementem dotazu i odpovědi je obálka <mrpEnvelope>. V té je v případě nekódované komunikace obsažen element <body>, který zahrnuje vlastní dotaz nebo odpověď. V případě kódované komunikace se je obsah vložen do elementu <encodedBody> , jak je popsáno dále v části kódovaná komunikace. Dotazy, které mění obsah databáze, obsahují povinný atribut requestId. Jeho obsah určuje dotazující se aplikace a slouží k jednoznačné identifikaci daného dotazu. V případě opakovaného příkazu se shodným requestId jej program znovu nevykonává, místo toho jen vrátí kopii dříve odeslané odpovědi. Záznamy provedených příkazů jsou v databázi evidovány po omezenou dobu (momentálně cca půl dne), poté jsou smazány a jejich requestId je uvolněno pro nové použití.
Dotaz může taktéž obsahovat element <data>, ve kterém mohou být např. výběrové podmínky (v případě příkazu, požadujícího údaje z databáze), nebo samotná data příkazu, nad kterými má program vykonat požadovanou operaci.

Odpověď obsahuje v části <status> identifikaci příkazu, na který reaguje. V případě, že provádění příkazu skončí libovolnou chybou, je tato skutečnost signalizována přítomností elementu <error> s jejím podrobnějším popisem.

Příklad nekódovaného dotazu:

  <mrpEnvelope>
    <body>
      <mrpRequest command="IMPEO0" requestId="1234">
        ....
        <data>
          <!-- Výběrové podmínky -->
          <!-- ... nebo ... -->
          <!-- data příkazu -->
        </data>
      </mrpRequest>
    </body> 
  </mrpEnvelope>

Příklad nekódované odpovědi:

  <mrpEnvelope>
    <body>
      <mrpResponse>
        <status>
          <!-- Blok s parametry prevzatymi z mrpRequest -->
          <request command="IMPEO0" requestId="1234"/>

          <!-- V pripade chyby blok s popisem chyboveho hlaseni -->
          <error errorCode="" errorClass="">
            <!-- errorCode - Ciselny chybovy kod -->
            <!-- errorClass - Trida vyjimky -->
            <errorMessage>
              <!-- Text chyboveho hlaseni -->
            </errorMessage>
          </error>
        </status>

        <data>
          .....
        </data>
      </mrpResponse>
    </body>
  </mrpEnvelope>

3. Kódovaná komunikace

Kódovaná komunikace umožňuje kompresi a/nebo autentizaci a šifrování xml dotazů a odpovědí. Základním elementem xml v těchto případech zůstává obálka <mrpEnvelope> , samotný obsah je ovšem místo elementu <body> vložen v elementu <encodedBody>, spolu s dalšími parametry, které určují použitou kompresi a šifrování. V případě, že je v nastavení autonomního režimu na straně MRP-K/S zaškrtnuta volba Vyžadovat šifrování, aplikace odmítne veškeré neautentizované požadavky. Pro šifrování a autentizaci je použit symetrický tajný klíč o délce 32 B, který se v nastavení autonomního režimu MRP-K/S zadává jako base64 sekvence. Klíč by měl být řadou spolehlivě náhodných čísel, program jej na požádání umí vytvořit tlačítkem Generovat.

Funkce Hmac_Sha256

Autentizační funkce Hmac se v dalších pokynech používá spolu s hash funkcí Sha256 standardním postupem: https://en.wikipedia.org/wiki/Hash-based_message_authentication_code

Funkce je definována jako

  Autentizační sekvence = Hmac_Sha256(Klíč, Podepisovaná sekvence)

Odvození klíčů

Vstupem je tajný klíč (32 B).

Z tajného klíče aplikace odvodí nezávislé klíče pro autentizaci a šifrování následujícím postupem, s využitím funkce Hmac_Sha256:

  Klíč1 = Hmac_Sha256(Tajný klíč, 0x01)
  Klíč2 = Hmac_Sha256(Tajný klíč, Klíč1 || 0x02)

0x01 a 0x02 jsou 1B konstanty (s pevnou hodnotou 1 a 2), || znamená zřetězení

Nadále se takto získaný Klíč1 používá jako tajný šifrovací klíč (32 B) a Klíč2 jako tajný autentizační klíč (32 B).

Autentizace

Autentizace se provádí algoritmem Hmac_Sha256.

Do algoritmu vstupuje tajný autentizační klíč (32 B) a podepisovaná sekvence bez dalších úprav.

  Autentizační kód = Hmac_Sha256(Autentizační klíč, Podepisovaná sekvence)

Podepsána je až finální odeslaná sekvence, po případné kompresi a šifrování. Přijímající strana tedy může provést autentizaci dat jako první krok, a pokud kódy nesouhlasí, vrátí jen chybové hlášení o neplatném autentizačním kódu a požadavkem se dále nezabývá.

Šifrování

Šifrování se provádí algoritmem AES s délkou klíče 256 bitů. Vstupem je tajný šifrovací klíč (32 B) a sekvence, která se má zašifrovat.

Postup šifrování je na odesílající straně následující:

  • Vygenerování náhodné sekvence 32 B, která se nesmí (s velkou pravděpodobností) u dalších požadavků opakovat, a to ani mezi různými stanicemi používajícími stejný šifrovací klíč. Algoritmus získání této sekvence je libovolný, doporučeným postupem je využít spolehlivý generátor náhodných čísel, jeho výstup spojit s jedinečnými identifikátory daného počítače a časem výpočtu a následně provést hash celé sekvence např. funkcí Sha 256. Tato sekvence se dále označuje jako variantní klíč.
  • Pomocí funkce Hmac_Sha256, kde klíčem Hmac je tajný šifrovací klíč (32 B) a podepisovanou sekvencí je variantní klíč (32 B), se získá finální šifrovací klíč (32 B).
  • Pomocí funkce Sha256 aplikované na variantní klíč (32 B) se získá jiná 32 B sekvence, jejíž prvních 16 B se použije jako inicializační vektor (16 B).
  • Na sekvenci určenou k zašifrování se aplikuje šifra AES v proudovém režimu CTR, přičemž šifrovacím klíčem je finální šifrovací klíč (32 B) a inicializačním vektorem prvního bloku dat (16 B) je inicializační vektor získaný v předchozím kroku (16 B). Pro další 16 B bloky se v režimu CTR inicializační vektor vždy zvyšuje o 1 (počínaje posledním bajtem, při přetečení se zvyšuje vždy předchozí bajt, s výjimkou prvního).

Postup dešifrování na přijímající straně je shodný, jako variantní klíč se použije sekvence obsažená v přijatém požadavku.

Režim CTR funguje jako proudová šifra a nevyžaduje tak zarovnání zprávy do 16 B bloků. Když není režim CTR k dospozici, lze jej realizovat pomocí základního režimu ECB.

Komprese

Volitelná komprese a dekomprese se provádí funkcemi zlib deflate a inflate.

Struktura obálky

Kódovaná obálka řeší možnosti komprese, šifrování a autentizace. V části <encodingParams> je uloženo pomocné xml s parametry, v elementu <encodedData> pak xml se samotným obsahem (obsah elementu <body> z nekódované obálky, kořenovým elementem je tedy <mrpRequest> nebo <mrpResponse>), obojí je zakódováno v base64. Když je požadována autentizace, je v dalším elementu <authCode> uveden kontrolní Hmac_Sha256 hash celkového obsahu, příčemž podepisovanou sekvencí je sekvence složená z obsahu elementu <encodingParams>, za který se připojí obsah elementu <encodedData>. Obsah elementů <encodingParams> a <encodedData> je vhodné zapouzdřit do xml sekce CDATA, aby v případě rozsáhlých xml dokumentů nedocházelo k potížím při jejich zpracování.

Kompletní struktura kódované obálky vypadá takto:

  <mrpEnvelope>
    <encodedBody authentication="hmac_sha256">
      <encodingParams>
         ... base64 - vložené xml s parametry šifrování a komprese ...
      </encodingParams>
      <encodedData>
         ... base64 - vložené xml s obsahem obálky ...
      </encodedData>
      <authCode>
         ... base64 - hmac sha256 hash hodnota obsahu encodingParams+encodedData ...
      </authCode>
    </encodedBody>
  </mrpEnvelope>

Xml s parametry šifrování a komprese, které se (převedené do base64) ukládá do <encodingParams> je následující:

  <mrpEncodingParams compression="zlib" encryption="aes">
    <varKey>
      ... jen při šifrování - base64 variantní klíč 32 B ...
    </varkey>
  </mrpEncodingParams>

Postup kódování na straně odesílatele

  • Případné parametry šifry a komprese se uloží do pomocného xml s kořenovým elementem <mrpEncodingParams>, které se následně uloží do sekce <encodingParams> zakódované v base64.
  • Odesílané xml (s kořenovým elementem <mrpRequest> nebo <mrpResponse>) se převede na sekvenci bajtů.
  • Ta se volitelně zkomprimuje.
  • Pokud je požadováno šifrování, sekvence se zašifruje.
  • Výsledná sekvence se uloží do sekce <encodedData> zakódovaná v base64.
  • Pokud je požadována autentizace (při šifrování povinně), vypočítá se autentizační kód sekvence složené ze zřetězeného obsahu <encodingParams> a <encodedData> (v binárním tvaru ještě před převedením na base64), a ten se následně uloží do elementu <authCode>, opět zakódovaný v base64.

Postup dekódování na straně příjemce

  • Příjemce si přečte způsob autentizace. Když vyžaduje autentizaci a ta v atributu authentication uvedena není, zpracování končí chybou.
  • Je-li vyžadována autentizace, ověří se autentizační kód. Když nesouhlasí, zpracování končí chybou.
  • Načte se xml s parametry šifry a komprese uložený v <encodingParams>, způsob šifrování se porovná s nastavením programu (když je vyžadováno šifrování a v parametrech není, požadavek se odmítne).
  • Načte se datová sekvence obsažená v sekci <encodedData>.
  • Je-li komunikace šifrovaná, sekvence se dešifruje podle parametrů zvolené šifry.
  • Je-li komunikace komprimovaná, sekvence se rozbalí podle zvolené metody komprese.

Příklad struktury kódovaného dotazu a odpovědi

Obsah některých části kódované obálky je nepovinný, podle způsobu komprese, šifrování a autentizace:

S autentizaci, šifrováním a volitelnou kompresí:

  <mrpEnvelope>
    <encodedBody authentication="hmac_sha256">
      <encodingParams>
         ... base64 - vložené xml s parametry šifrování a komprese ...
      </encodingParams>
      <encodedData>
         ... base64 - vložené xml s obsahem obálky ...
      </encodedData>
      <authCode>
         ... base64 - hmac sha256 hash hodnota obsahu encodingParams+encodedData ...
      </authCode>
    </encodedBody>
  </mrpEnvelope>

Xml s parametry šifrování a komprese, které se ukládá do <encodingParams> je následující (compression="zlib" znamená kompresi):

   <mrpEncodingParams compression="zlib" encryption="aes">
     <varKey>
      ... base64 variantní klíč 32 B ...
     </varkey>
   </mrpEncodingParams>

Komprese bez autentizace a šifrování:

  <mrpEnvelope>
    <encodedBody>
      <encodingParams>
         ... base64 - vložené xml s parametry komprese ...
      </encodingParams>
      <encodedData>
         ... base64 - vložené xml s obsahem obálky ...
      </encodedData>
    </encodedBody>
  </mrpEnvelope>

Vložené xml s parametry komprese:

  <mrpEncodingParams compression="zlib">
  </mrpEncodingParams>

Příklad výpočtu šifrování a autentizace

Na následující krátké sekvenci bajtů je možno otestovat, zda se výsledky šifrování a autentizace shodují s výsledky algoritmu, který je používán. S daným tajným a variantním klíčem by měly být výstupy šifrování a autentizace shodné. Pokud bude vše souhlasit, je možno následně tento algoritmus použít pro sestavení elementu <encodedBody> podle výše uvedeného návodu.

Tajný klíč (zvolený uživatelem, base64):
bRtFEufmEgrJyhai6ltDSV9svtpN3Jb/5oWBBYhDJ30=

Tajný klíč (hex):
6D 1B 45 12 E7 E6 12 0A C9 CA 16 A2 EA 5B 43 49
5F 6C BE DA 4D DC 96 FF E6 85 81 05 88 43 27 7D

Variantní klíč (náhodně generovaný): 
1F 5A C7 7E D3 0C C0 A5 F7 5B B0 35 FF 05 66 A5
0D B2 12 7A AB 32 D8 62 4E 0D A4 D4 18 6E 7F 2F

Tajný šifrovací klíč (Hmac_Sha256(Tajný klíč, 0x01)):
DE B5 81 AB EC C4 A5 A5 5D C7 6C 08 A9 75 49 62
BD A0 54 10 E1 A3 0D 5E 99 05 AD FA 65 6C F2 C9

Tajný autentizační klíč (Hmac_Sha256(Tajný klíč, Tajný šifrovací klíč || 0x02)):
5B DF 74 9A 16 63 DF 20 6A 1E 9E 36 03 96 33 75
92 FD D8 2F 66 05 CF 3A F8 D4 D4 54 6B 64 05 06

Finální šifrovací klíč (Hmac_Sha256(Tajný Šifrovací klíč, Variantní klíč)):
00 06 29 E3 9E 79 F3 F5 2B 05 D8 58 72 40 C3 81
CA 14 A0 EC 17 27 A9 5A FA D4 80 EB D5 6E 1C 40

AES inicializační vektor (prvních 16 B z Sha256(Variantní klíč)):
09 18 29 E9 98 18 6D 9F B0 78 72 2E 0B 91 44 06

Příklad proudového AES šifrování v CTR módu:
Otevřený text:
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
11 12 13 14
Šifrovaný text:
01 EC 4D BE B1 04 CD 38 E9 0A 4E CC C5 C5 35 9C
D0 AA D8 AF

Příklad autentizace:
Podepisovaná sekvence:
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
11 12 13 14
Autentizační kód (Hmac_Sha256(Autentizační klíč, Podepisovaná sekvence)):
B5 75 94 6C 75 DC A6 5C E0 DA 8A C2 AC F4 73 72
34 09 68 99 53 6E 88 05 51 CA D1 AE 99 DE F3 6A


4. Podporované příkazy

Příklady jsou v nekódovaném tvaru. Pokud se v některých příkazech zadávají filtrovací podmínky, pak se používá uživatelská syntaxe programu MRP K/S. Vyjímkou jsou pouze filtry, které nabízí uživateli výběrové podmínky. V těchto případech bude v poznámce uveden jejich možný rozsah.

Odpovědi vracející datovou část mají následující strukturu.

      <data>
        <datasets>
          <jmeno_tabulky>
            <rows> 1..n
              <row>
                <fields> 1..n
                  <jmeno_fieldu>hodnota</jmeno_fieldu>
                </fields>
              </row>
            </rows>
          </jmeno_tabulky>
        </datasets>
      </data>
 

EXPEO0

Export skladových karet do e-obchodu. Datový element obsahuje filtrovací podmínky <fltvalue name="jmeno_filtru">podminka</fltvalue>.

Požadavek

Atributy elementu <fltvalue>nepovinný
name O/M Typ Délka DM Význam
stavy O L 1 0 Jsou požadovány pouze stavy karet. [T|F]
cisloSkladu O N 3 0 Číslo jednoho skladu, ze kterého se bude brát stav karty. [1..999]
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
cisloCeny O N 1 0 Číslo jedné prodejní ceny. [0,1..5]
malObraz O L 1 0 Malý obrázek. [T|F]
velObraz O L 1 0 Velký obrázek. [T|F]
Seznam volitelných filtrovacích polí, které se přibližují filtrovacím podmínkám skladových karet. Jméno filtru se skládá ze jména tabulky, oddělovače a jména datového pole.
Výraz se zapisuje a vyhodnocuje stejným způsobem, jaku u filtru v programu MRP K/S, tedy při použití číselných a datumových výrazů musí tyto výrazy respektovat nastavení desetinných oddělovačů a tvaru data nastavených na klientské stanici.
Jsou uváděny pouze typy jednotlivých polí kvůli konstrukci dotazu.
name O/M Typ Délka DM Význam
SKKAR.CISLO O N X X Číslo skladové karty.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.NAZOV O T X X Název skladové karty.
SKKAR.KOD O T X X EAN skladové karty.
SKKAR.KOD1 O T X X Uživatelský kód skladové karty.
SKKAR.KOD2 O T X X Uživatelský kód skladové karty.
SKKAR.KOD3 O T X X Uživatelský kód skladové karty.
SKKAR.SKUPINA O T X X Kód skupiny skladových karet.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.CISKAT O N X X Kód katalogu skladových karet.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.TYP_POL O T X X Kód typu položky skladové karty.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.SADZBADPH O N X X Sazba DPH skladové karty.
SKKAR.BEZDPH O L X X Rozlišení mezi mimo DPH a nulovou sazbou [T|F].
SKKAR.POZNAMKA O T X X Poznámka skladové karty.
SKKAR.ZAKAZSLEVYO L X X Zákaz slevy skladové karty [T|F].
SKKAR.DODAVATEL O T X X IČ obchodníka (není to záložka dodavatelů).
SKKAR.POZNAMKA1 O T X X Rozšířená poznámka skladové karty.
SKKAR.DAT_ZAR O D X X Datum zařazení skladové karty.
SKKAR.POUZIVANA O L X X Příznak používání skladové karty [T|F].
SKKAR.TLAC O L X X Příznak zařazení karty do "tisku" [T|F].
SKKAR.USRFLD1 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD2 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD3 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD4 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD5 O T X X Uživatelské pole skladové karty.
SKKARSTA.POCETMJ O N X X Počet MJ na zvoleném skladu.
SKKARSTA.POCREZMJO N X X Počet rezervovaných MJ na zvoleném skladu.
SKKARSTA.POCOBJMJO N X X Počet objednaných MJ u dodavatelů na zvoleném skladu.
SKKARSTA.POZICE O T X X Umístění ve zvoleném skladu.
SKKARSTA.MINIMUM O N X X Nastavené minimum MJ na zvoleném skladu.
SKKARSTA.NORMA O N X X Nastavená norma MJ na zvoleném skladu.
SKKARSTA.MAXIMUM O N X X Nastavené maximum MJ na zvoleném skladu.

 <mrpEnvelope>
  <body>
    <mrpRequest>
      <request command="EXPEO1" requestId=""> 
      </request>
      <data>
        <filter>
          <fltvalue name="cisloSkladu">1</fltvalue>
          <fltvalue name="cisloCeny">2</fltvalue>
          <fltvalue name="malObraz">T</fltvalue>
          <fltvalue name="velObraz">T</fltvalue>
          <fltvalue name="stavy">F</fltvalue>
          <!-- Nepovinny blok s pripadnymi daty, zalezi na prikazu, zdali je potrebuje -->
          <!-- Číslo karty v rozsahu 1 až 10 -->
          <fltvalue name="SKKAR.CISLO">1..10</fltvalue>
          <!-- Kód skupiny skladových karet A nebo B -->
          <fltvalue name="SKKAR.SKUPINA">A|B</fltvalue>
          <!-- Typ položky Z -->
          <fltvalue name="SKKAR.TYP_POL">Z</fltvalue>
        </filter>
      </data>
    </mrpRequest>
  </body>
</mrpEnvelope>

Odpověď

Element <karty>Vždy
fields stavy Typ Délka DM Význam
cislo X N 10 2 Číslo karty
nazev F T 64 0 Název karty
jednotka F T 3 0 Měrná jednotka
cena F N 17 6 Cena určená podmínkou cisloCeny
cenasdph F N 17 6 Tato cena s DPH
sazbadph F N 5 2 Sazba DPH
ciskat F N 8 0 Číslo v katalogu
kod F T 14 0 EAN kód
kod1 F T 30 0 Uživatelský kód 1
skupina F T 10 0 Kód skupiny skl. karet
hmotnost F N 13 6 Hmotnost v kg
baleni F N 12 3 Množství MJ v balení
usrfld1 F T 40 0 Uživatelské pole 1
usrfld2 F T 40 0 Uživatelské pole 2
usrfld3 F T 40 0 Uživatelské pole 3
usrfld4 F T 40 0 Uživatelské pole 4
usrfld5 F T 40 0 Uživatelské pole 5
poznamka F T 50 0 Poznámka
nazev2 F T 64 0 Název 2 karty
pocetmj X N 15 6 Počet MJ na požadovaném skladu
pocrezmj X N 15 6 Počet rezervovaných MJ na požadovaném skladu
pocobjmj X N 15 6 Počet objednaných MJ u dodavatelů na zvoleném skladu.
cena1 F N 17 6 Prodejní cena 1
cena1sdph F N 17 6 Prodejní cena 1 s DPH
cena2 F N 17 6 Prodejní cena 2
cena2sdph F N 17 6 Prodejní cena 2 s DPH
cena3 F N 17 6 Prodejní cena 3
cena3sdph F N 17 6 Prodejní cena 2 s DPH
cena4 F N 17 6 Prodejní cena 4
cena4sdph F N 17 6 Prodejní cena 4 s DPH
cena5 F N 17 6 Prodejní cena 5
cena5sdph F N 17 6 Prodejní cena 5 s DPH
pozice F T 10 0 Pozice na požadovaném skladu
malpopis F T 80 0 Malý popis
velpopis F M X 0 Velký popis
malobr F T 40 0 Název malého obrázku
velobr F T 40 0 Název velkého obrázku
malobraz F B X 0 Malý obrázek (musí být nastaveno malObraz)
velobraz F B X 0 Velký obrázek (musí být nastaveno velObraz)
skupnazev F T 50 0 Název katalogové skupiny
mena F T 3 0 Měna
Element <katalog>(pouze stavy=F)
fields stavy Typ Délka DM Význam
idr F N 9 0
ciskat F N 8 0 Číslo katalogové skupiny
uciskat F N 8 0 Číslo nadřazené katalogové skupiny
popis F T 45 0 Popis katalogové skupiny
poradi F N 8 0 Pořadí ve stromové struktuře
Element <nahrady>(pouze stavy=F)
fields stavy Typ Délka DM Význam
cislo F N 10 2 Číslo skladové karty
kod F T 14 0 EAN skladové karty
kod1 F T 30 0 Uživatelský kód 1 skladové karty
cislo_z F N 10 2 Číslo zaměnitelné skladové karty
kod_z F T 14 0 EAN zaměnitelné skladové karty
kod1_z F T 30 0 Uživatelský kód 1 zaměnitelné skladové karty

<mrpEnvelope>
  <body>
    <mrpResponse>
      <status>
        <request command="EXPEO0"/>
      </status>
      <data>
        <datasets>
          <karty>
            <rows>
              <row>
                <fields>
                  <cislo>1</cislo>
                  <nazev>Kladivo</nazev>
                  <jednotka>ks</jednotka>
                  <cena>223.97</cena>
                  <cenasdph>271</cenasdph>
                  <sazbadph>21</sazbadph>
                  <ciskat>2</ciskat>
                  <kod>8595008803359</kod>
                  <kod1></kod1>
                  <skupina>6</skupina>
                  <hmotnost>0</hmotnost>
                  <baleni>12</baleni>
                  <usrfld1></usrfld1>
                  <usrfld2></usrfld2>
                  <usrfld3></usrfld3>
                  <usrfld4></usrfld4>
                  <usrfld5></usrfld5>
                  <poznamka></poznamka>
                  <nazev2></nazev2>
                  <pocetmj>10</pocetmj>
                  <pocrezmj>2</pocrezmj>
                  <cena1>223.97</cena1>
                  <cena1sdph>271</cena1sdph>
                  <cena2>0</cena2>
                  <cena2sdph>0</cena2sdph>
                  <cena3>0</cena3>
                  <cena3sdph>0</cena3sdph>
                  <cena4>0</cena4>
                  <cena4sdph>0</cena4sdph>
                  <cena5>0</cena5>
                  <cena5sdph>0</cena5sdph>
                  <pozice></pozice>
                  <skupnazev>Skupina 6</skupnazev>
                  <mena>CZK</mena>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </karty>

          <katalog>
            <rows>
              <row>
                <fields>
                  <idr>321232</idr>
                  <ciskat>1</ciskat>
                  <popis>Nářadí</popis>
                  <poradi>0</poradi>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </katalog>

          <katalog>
            <rows>
              <row>
                <fields>
                  <cislo>1</cislo>
                  <kod>8595008803359</kod>
                  <kod1></kod1>
                  <cislo_z>1.1</cislo_z>
                  <kod_z>8594007132571</kod_z>
                  <kod1_z></kod1_z>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </katalog>

        </datasets>
      </data>
    </mrpResponse>
  </body>
</mrpEnvelope>

EXPEO1

Export skladových karet do e-obchodu. Datový element obsahuje filtrovací podmínky <fltvalue name="jmeno_filtru">podminka</fltvalue>.

Požadavek

Filtrovací podmínky jsou stejné jak u příkazu EXPEO0. Jediným rozdílem je filtr pro číslo skladu, kde může být zadán rozsah v rámci platných filtrovacích podmínek.

 <mrpEnvelope>
  <body>
    <mrpRequest>
      <request command="EXPEO1" requestId=""> 
      </request>
      <data>
        <filter>
          <fltvalue name="cisloSkladu">1..3</fltvalue>
          <fltvalue name="cisloCeny">2</fltvalue>
          <fltvalue name="malObraz">T</fltvalue>
          <fltvalue name="velObraz">T</fltvalue>
          <fltvalue name="stavy">F</fltvalue>
          <fltvalue name="SKKAR.CISLO">1..10</fltvalue>
        </filter>
      </data>
    </mrpRequest>
  </body>
</mrpEnvelope>

Odpověď

Element <sklady>Vždy
fields stavy Typ Délka DM Význam
cisloskl X N 3 0 Číslo skladu
nazevskl X T 30 0 Název skladu
Element <stavy>Vždy
fields stavy Typ Délka DM Význam
cisloskl X N 3 0 Číslo skladu
cislokar X N 10 2 Číslo karty
pocetmj X N 15 6 Počet MJ ve skladu
pocrezmj X N 15 6 Počet rezervovaných MJ na požadovaném skladu
pocobjmj X N 15 6 Počet objednaných MJ u dodavatelů na zvoleném skladu.
cena F N 17 6 Cena určená podmínkou cisloCeny
cenasdph F N 17 6 Tato cena s DPH
cena1 F N 17 6 Prodejní cena 1
cena1sdph F N 17 6 Prodejní cena 1 s DPH
cena2 F N 17 6 Prodejní cena 2
cena2sdph F N 17 6 Prodejní cena 2 s DPH
cena3 F N 17 6 Prodejní cena 3
cena3sdph F N 17 6 Prodejní cena 2 s DPH
cena4 F N 17 6 Prodejní cena 4
cena4sdph F N 17 6 Prodejní cena 4 s DPH
cena5 F N 17 6 Prodejní cena 5
cena5sdph F N 17 6 Prodejní cena 5 s DPH
pozice F T 10 0 Pozice na požadovaném skladu
mena F T 3 0 Měna
Element <karty>(pouze stavy=F)
fields stavy Typ Délka DM Význam
cislo F N 10 2 Číslo karty
nazev F T 64 0 Název karty
jednotka F T 3 0 Měrná jednotka
sazbadph F N 5 2 Sazba DPH
ciskat F N 8 0 Číslo v katalogu
kod F T 14 0 EAN kód
kod1 F T 30 0 Uživatelský kód 1
skupina F T 10 0 Kód skupiny skl. karet
hmotnost F N 13 6 Hmotnost v kg
baleni F N 12 3 Množství MJ v balení
usrfld1 F T 40 0 Uživatelské pole 1
usrfld2 F T 40 0 Uživatelské pole 2
usrfld3 F T 40 0 Uživatelské pole 3
usrfld4 F T 40 0 Uživatelské pole 4
usrfld5 F T 40 0 Uživatelské pole 5
poznamka F T 50 0 Poznámka
nazev2 F T 64 0 Název 2 karty
malpopis F T 80 0 Malý popis
velpopis F M X 0 Velký popis
malobr F T 40 0 Název malého obrázku
velobr F T 40 0 Název velkého obrázku
malobraz F B X 0 Malý obrázek (musí být nastaveno malObraz)
velobraz F B X 0 Velký obrázek (musí být nastaveno velObraz)
skupnazev F T 50 0 Název katalogové skupiny
Element <katalog>(pouze stavy=F)
fields stavy Typ Délka DM Význam
idr F N 9 0
ciskat F N 8 0 Číslo katalogové skupiny
uciskat F N 8 0 Číslo nadřazené katalogové skupiny
popis F T 45 0 Popis katalogové skupiny
poradi F N 8 0 Pořadí ve stromové struktuře
Element <nahrady>(pouze stavy=F)
fields stavy Typ Délka DM Význam
cislo F N 10 2 Číslo skladové karty
kod F T 14 0 EAN skladové karty
kod1 F T 30 0 Uživatelský kód 1 skladové karty
cislo_z F N 10 2 Číslo zaměnitelné skladové karty
kod_z F T 14 0 EAN zaměnitelné skladové karty
kod1_z F T 30 0 Uživatelský kód 1 zaměnitelné skladové karty

<mrpEnvelope>
  <body>
    <mrpResponse>
      <status>
        <request command="EXPEO1"/>
      </status>
      <data>
        <datasets>
          <sklady>
            <rows>
              <row>
                <fields>
                  <cisloskl>1</cisloskl>
                  <nazevskl>Sklad 1</nazevskl>
                </fields>
              </row>
            </rows>
          </sklady>

          <stavy>
            <rows>
              <row>
                <fields>
                  <cisloskl>1</cisloskl>
                  <cislo>1</cislo>
                  <pocetmj>10</pocetmj>
                  <pocrezmj>2</pocrezmj>
                  <cena>223.97</cena>
                  <cenasdph>271</cenasdph>
                  <cena1>223.97</cena1>
                  <cena1sdph>271</cena1sdph>
                  <cena2>0</cena2>
                  <cena2sdph>0</cena2sdph>
                  <cena3>0</cena3>
                  <cena3sdph>0</cena3sdph>
                  <cena4>0</cena4>
                  <cena4sdph>0</cena4sdph>
                  <cena5>0</cena5>
                  <cena5sdph>0</cena5sdph>
                  <pozice></pozice>
                  <mena>CZK</mena>
                </fields>
              </row>
            </rows>
          </stavy>

          <karty>
            <rows>
              <row>
                <fields>
                  <cislo>1</cislo>
                  <nazev>Kladivo</nazev>
                  <jednotka>ks</jednotka>
                  <sazbadph>21</sazbadph>
                  <ciskat>2</ciskat>
                  <kod>8595008803359</kod>
                  <kod1></kod1>
                  <skupina>6</skupina>
                  <hmotnost>0</hmotnost>
                  <baleni>12</baleni>
                  <usrfld1>Text, UsrFld25_yyyyy</usrfld1>
                  <usrfld2></usrfld2>
                  <usrfld3></usrfld3>
                  <usrfld4></usrfld4>
                  <usrfld5></usrfld5>
                  <poznamka></poznamka>
                  <nazev2></nazev2>
                  <skupnazev>Skupina 6</skupnazev>
                </fields>
              </row>
            </rows>
          </karty>

          <katalog>
            <rows>
              <row>
                <fields>
                  <idr>321232</idr>
                  <ciskat>1</ciskat>
                  <popis>Nářadí</popis>
                  <poradi>0</poradi>
                </fields>
              </row>
            </rows>
          </katalog>

        </datasets>
      </data>
    </mrpResponse>
  </body>
</mrpEnvelope>

IMPEO0

Import objednávek z e-obchodu. Datový element obsahuje jednak globální parametry <paramvalue name="jmeno_parametru">hodnota_parametru</paramvalue>, které jsou nepovinné, tak vlastní objednávky.

Požadavek

  <params>
    <paramvalue name="cisloSkladu">1</paramvalue>
    ...
  </params>
  <objednavka ...>
    <mena .../>
    <adresa ...> 
      <firma .../>
      <osoba .../>
      <!-- Email se sklada az do delky pole v databazi -->
      <email>ja_1@xyz.cz</email>
      ...
      <email>ja_n@xyz.cz</email>
      <!-- Telefon muze obsahovat tri polozky -->
      <tel>123456781</tel>
      <tel>123 456 789</tel>
    </adresa>
    <adresa_dod ...> 
      <firma .../>
      <osoba .../>
      <!-- Email se sklada az do delky pole v databazi -->
      <email>ja1@xyz.cz</email>
      ...
      <email>ja3@xyz.cz</email>
      <!-- Telefon muze obsahovat tri polozky -->
    </adresa_dod>
    <polozky>
      <polozka .../>
    </polozky>
    <poznamka>
      ...
    </poznamka>
  </objednavka>

Atributy elementu <paramvalue>nepovinný
name O/M Typ Délka DM Význam Od verze
cisloSkladu O N 3 0 Číslo skladu pro objednávky. Pokud nebude uvedeno, bere se z konfigurace programu.
stredisko O T 6 0 Číslo střediska pro objednávky. Pokud nebude uvedeno, bere se z konfigurace programu.
cisloZakazky O T 15 0 Číslo zakázky pro objednávky. Pokud nebude uvedeno, bere se z konfigurace programu.
prefixRadyObj O T 10 0 Prefix číselné řady pro objednávky. Pokud nebude uvedeno, bere se z konfigurace programu.
Atributy elementu <objednavka>povinný
name O/M Typ Délka DM Význam Od verze
stredisko O T 6 0 Číslo střediska pro objednávku. Pokud nebude uvedeno, bere se z <paramvalue> nebo z konfigurace programu.5.55.005
cisloZakazky O T 15 0 Číslo zakázky pro objednávku. Pokud nebude uvedeno, bere se z <paramvalue> nebo z konfigurace programu.5.55.005
formaUhrady O T 10 0 Forma úhrady
zpusobDopravy O T 10 0 Způsob dopravy
variabilniSymbolO N 10 0 Variabilní symbol
puvodniCislo O T 50 0 Původní číslo objednávky
datum O D 10 0 Datum objednávky RRRR-MM-DD
datumDodani O D 10 0 Dodací lhůta objednávky RRRR-MM-DD5.55.005
cenySDPH O L 1 0 Ceny v objednávce jsou/nejsou s DPH
fixniCena O T 1 0 Ceny v objednávce jsou neměnné[T|F|X]
Pořadí ve vyhodnocování zadání střediska:
  1. Středisko uvedené v objednávce
  2. Pokud je to v konfiguraci povoleno, středisko uvedené v adrese
  3. Středisko uvedené v <paramvalue>
  4. Středisko uvedené v konfiguraci importu
Atributy elementu <adresa>povinný
name O/M Typ Délka DM Význam Od verze
id O T 10 0 Identifikace zákazníka v e-obchodu
ulice O T 30 0 Ulice a číslo popisné
mesto O T 30 0 Město
psc O T 15 0 PSČ
Atributy elementu <firma>nepovinný
name O/M Typ Délka DM Význam Od verze
nazev O T 100 0 Název firmy
ico O T 12 0
dic O T 17 0 DIČ
Atributy elementu <osoba>nepovinný
name O/M Typ Délka DM Význam Od verze
jmeno O T 30 0 Jméno
prijmeni O T 30 0 Příjmení
Součet délek obou atributů musí být menší jak 30 znaků
Element <email>nepovinný
name O/M Typ Délka DM Význam Od verze
email O T 256 0 Email
E-mail adresy se skládají až do délky pole v databázi
Element <tel>nepovinný
name O/M Typ Délka DM Význam Od verze
tel O T 30 0 Telefon
Mohou být uvedeny maximálně tři elementy
Atributy elementu <mena>nepovinný
name O/M Typ Délka DM Význam Od verze
kod O T 3 0 ISO kód měny
kurz O N 13 6 Kurz
mnozstvi O N 13 6 k množství účetní měny
Element <poznamka>nepovinný
name O/M Typ Délka DM Význam Od verze
poznamka O T X 0 Poznámka jako dlouhý text
Atributy elementu <polozka>povinný
name O/M Typ Delka DM Význam Od verze
cisloKarty O N 10 2 Číslo skladové karty
eanKarty O T 13 0 EAN skladové karty (pro identifikaci)
kodKarty O T 30 0 Uživatelský kód skladové karty (pro identifikaci)
text O T 50 0 Text objednávky
pocetMJ M N 15 6 Počet MJ
cenaMJ M N 17 6 Cena za MJ
slevaMJ O N 17 6 Sleva v měně dokladu za MJ. Částka slevy je uváděna buď s DPH nebo bez DPH v závislosti na nastavení tohoto atributu v hlavičce objednávky. Pokud je uvedena, má přednost před slevou uvedenou v procentech.5.55.005
sleva O N 6 2 Sleva v procentech za MJ5.55.005
sazbaDPH O N 5 2 Sazba DPH
typPolozky O T 2 0 Typ položky dle číselníku Typy položek
fixniCena O L 1 0 Ceny v řádku objednávky jsou neměnné.
Záleží na nastavení v hlavičce dokladu.[T|F]
Pokud je uveden pouze text, nemusí být atributy pocetMJ a cenaMJ uvedeny.
Podle atributů eanKarty a kodKarty se vyhledává pouze v případě, že má program nastavno hlídání jedinečnosti těchto polí. Vyhledávání skladové položky probíhá v pořadí cisloKarty, eanKarty a nakonec kodKarty.

Přidávání adres

Z e-shopu chodí dva identifikátory:

  • id
  • ico
Pro určení adresy je v tomto případě primární id, které se ukládá do databáze informačního systému (IS). Samotné adresy pro jeden doklad jsou v datasetu (DS) a ukládají se před dokladem.
id generuje e-shop při založení nového uživatele. Nemá nic společného s primárním klíčem tabulky v účetnictví. Je jasné, že pokud je k IS připojeno více e-shopů, musí mít organizačně zajištěno zamezení duplicity id mezi obchody u různých adres.
Hledací funkce přes id a ico vrací vždy ten druhý identifikátor z databáze (plus něco navíc). V tomto textu jsou jako isID a isIČO.
Dokladem se v textu myslí samotná objednávka, ...

Hlavní (fakturační) adresa
V IS se hledá adresa podle id.
Pokud je nalezena, aktualizuje se ico podle isIČO a toto ico je použito do dokladu. Adresa se neukládá.
Pokud nebyla nalezena adresa podle id, hledá se podle ico. Pokud adresu je nalezena, pak se testuje, zda je isID prázdné.
Pokud je prázdné a id je vyplněno, pak je provedena aktualizace isID v databázi. Pokud není isID prázdné a id je vyplněno (z předchozího vyplývá, že je různé), pak je založena nová adresa pro toto ico, ale s lomítkem. Toto ico se použije pro doklad.
Pokud není isID prázdné a id není vyplněno, pak se nic nedělá.
Pokud nebyla nalezena adresa ani podle id, ani podle ico, pak je založena nová adresa.

Vedlejší (doručovací) adresa
V IS se hledá adresa podle id.
Pokud je nalezena, aktualizuje se ico podle isIČO a toto ico se použije do dokladu. Adresa se neukládá.
Pokud nebyla nalezena v IS, hledá se adresa podle id v DS. Pokud je nalezena, aktualizuje se ico podle dsIČO a toto ico je použito do dokladu. Adresa se neukládá.
Pokud nebyla nalezena adresa podle id, hledá se v IS podle ico. Pokud je adresa nalezena, tak se pak testuje, zda je vrácené isID prázdné. Pokud je isID prázdné a id je vyplněno, pak je provedena aktualizace isID v databázi.
Pokud není isID prázdné a id je vyplněno (z předchozího vyplývá, že je různé), pak je založena nová adresa pro toto ico, ale s lomítkem. Toto ico se použije pro doklad.
Pokud není isID prázdné a id není vyplněno, pak se nic nedělá. Pokud nebyla nalezena adresa v IS, hledáme se podle ico v DS. Pokud je adresa nalezena, tak se pak testuje, zda je dsID prázdné. Pokud je prázdné a id je vyplněno, pak je provedena aktualizace dsID v datasetu. Pokud není dsID prázdné a id je vyplněno (z předchozího vyplývá, že je různé), pak je založena nová adresa pro toto ico, ale s lomítkem. Toto ico se použije pro doklad. Pokud není dsID prázdné a id není vyplněno, pak nic neděláme. Pokud nebyla nalezena adresa ani podle id, ani podle ico, pak je založena nová adresa. Použije se pro to ico fakturační adresy a přidá se lomítko.

 <mrpEnvelope>
  <body>
    <mrpRequest>
      <!-- Povinny blok pro definici prikazu -->
      <request command="IMPEO0" requestId="20121203140300033"> 
        <!-- requestId je ID spojeni (treba TIMESTAMP 20121120093530125) -->
      </request>
      <data>
        <params>
          <paramvalue name="cisloSkladu">1</paramvalue>
          <paramvalue name="stredisko">0</paramvalue>
          <paramvalue name="cisloZakazky">0</paramvalue>
          <!-- paramvalue name="prefixRadyObj">EO001</paramvalue> -->
        </params>
        <objednavka formaUhrady="Hotovost" puvodniCislo="22" datum="2014-01-01" cenySDPH="T">
          <mena kod="CZK" kurz="1" mnozstvi="1"/>
          <adresa id="22" ulice="Vonaskova 123" mesto="Zlín" psc="760  01"> 
            <firma nazev="" ico="" dic=""/>
            <osoba jmeno="Jan" prijmeni="Vonásek"/>
            <!-- Email se sklada az do delky pole v databazi -->
            <email>ja1@xyz.cz</email>
            <email>ja2@xyz.cz</email>
            <email>ja3@xyz.cz</email>
            <email>ja4@xyz.cz</email>
            <!-- Telefon muze obsahovat tri polozky -->
            <tel>123456781</tel>
            <tel>123 456 789</tel>
          </adresa>
          <adresa_dod id="" ulice="Vonaskova 123" mesto="Zlín" psc="760  01"> 
            <firma nazev="" ico="" dic=""/>
            <osoba jmeno="Jan" prijmeni="Vonásek"/>
            <!-- Email se sklada az do delky pole v databazi -->
            <email>ja1@mrp.cz</email>
            <email>ja2@mrp.cz</email>
            <email>ja3@mrp.cz</email>
            <!-- Telefon muze obsahovat tri polozky -->
          </adresa_dod>
          <polozky>
            <polozka cisloKarty="9" text="" cenaMJ="10" pocetMJ="1" sazbaDPH="21"/>
          </polozky>
          <poznamka>
            <!-- Je to jako element, protoze to je memo -->
            Toto je poznamka
            na vice radek.
            Alespon na tri.
          </poznamka>
        </objednavka>
        <objednavka puvodniCislo="23" datum="2012-12-03" cenySDPH="T">
          <mena kod="CZK" mnozstvi="1" kurz="1"/>
          <adresa id="22" ulice="Vonaskova 123" mesto="Zlín" psc="760  01"> 
            <firma nazev="" ico="" dic=""/>
            <osoba jmeno="Jan" prijmeni="Vonásek"/>
            <email></email>
            <tel></tel>
          </adresa>
          <polozky>
            <polozka cisloKarty="" text="Sluzby" cenaMJ="10" pocetMJ="1" sazbaDPH="14"/>
            <polozka cisloKarty="1" text="" cenaMJ="10" pocetMJ="1" sazbaDPH="14"/>
          </polozky>
          <poznamka>
            Toto je poznamka
            na vice radek.
            Alespon na dve.
          </poznamka>
        </objednavka>
      </data>
    </mrpRequest>
  </body>  
</mrpEnvelope>

Odpověď

Kladná odpověď obsahuje v datové části seznam originálních čísel objednávek a programem nově přiřazených čísel. Datová část se generuje pouze tehdy, pokud je posíláno původní číslo objednávky.

Atributy elementu <objednavka>nepovinný
name Typ Délka DM Význam
puvodnicislo T 50 0 Původní číslo objednávky
cislo T 10 0 Číslo objednávky přiřazené programem

<mrpEnvelope>
  <body>
    <mrpResponse>
      <status>
        <request command="IMPEO0" requestId="20140101140300033"/>
      </status>
      <data>
        <datasets>
          <objednavka>
            <rows>
              <row>
                <fields>
                  <puvodnicislo>1</puvodnicislo>
                  <cislo>OP20140001</cislo>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </objednavka>
        </datasets>
      </data>
    </mrpResponse>
  </body>
</mrpEnvelope>

CENEO0

Příkaz slouží pro zjištění cen pro konkrétní cenovou skupinu.

Požadavek

Atributy elementu <fltvalue>nepovinný
name O/M Typ Délka DM Význam
cisloSkladu O N 3 0 Číslo jednoho skladu, ze kterého se bude brát případná cena. [1..999]
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
cisloCeny O N 1 0 Číslo výchozí prodejní ceny. [0,1..5]
cenovaSkupina O N 4 0 Číslo cenové skupiny. [1..9999]
datum O D 10 0 Datum platnosti cenové skupiny (XML formát)
cenySDPH O L 1 0 Zda budou ceny s/bez DPH [T|F]
Seznam volitelných filtrovacích polí, které se přibližují filtrovacím podmínkám skladových karet. Jméno filtru se skládá ze jména tabulky, oddělovače a jména datového pole.
Výraz se zapisuje a vyhodnocuje stejným způsobem, jaku u filtru v programu MRP K/S, tedy při použití číselných a datumových výrazů musí tyto výrazy respektovat nastavení desetinných oddělovačů a tvaru data nastavených na klientské stanici.
Jsou uváděny pouze typy jednotlivých polí kvůli konstrukci dotazu.
name O/M Typ Délka DM Význam
SKKAR.CISLO O N X X Číslo skladové karty.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.NAZOV O T X X Název skladové karty.
SKKAR.KOD O T X X EAN skladové karty.
SKKAR.KOD1 O T X X Uživatelský kód skladové karty.
SKKAR.KOD2 O T X X Uživatelský kód skladové karty.
SKKAR.KOD3 O T X X Uživatelský kód skladové karty.
SKKAR.SKUPINA O T X X Kód skupiny skladových karet.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.CISKAT O N X X Kód katalogu skladových karet.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.TYP_POL O T X X Kód typu položky skladové karty.
Tuto podmínku lze omezit nastavením "Vždy přidat omezující podmínky"
SKKAR.SADZBADPH O N X X Sazba DPH skladové karty.
SKKAR.BEZDPH O L X X Rozlišení mezi mimo DPH a nulovou sazbou [T|F].
SKKAR.POZNAMKA O T X X Poznámka skladové karty.
SKKAR.ZAKAZSLEVYO L X X Zákaz slevy skladové karty [T|F].
SKKAR.DODAVATEL O T X X IČ obchodníka (není to záložka dodavatelů).
SKKAR.POZNAMKA1 O T X X Rozšířená poznámka skladové karty.
SKKAR.DAT_ZAR O D X X Datum zařazení skladové karty.
SKKAR.POUZIVANA O L X X Příznak používání skladové karty [T|F].
SKKAR.TLAC O L X X Příznak zařazení karty do "tisku" [T|F].
SKKAR.USRFLD1 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD2 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD3 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD4 O T X X Uživatelské pole skladové karty.
SKKAR.USRFLD5 O T X X Uživatelské pole skladové karty.
SKKARSTA.POCETMJ O N X X Počet MJ na zvoleném skladu.
SKKARSTA.POCREZMJO N X X Počet rezervovaných MJ na zvoleném skladu.
SKKARSTA.POCOBJMJO N X X Počet objednaných MJ u dodavatelů na zvoleném skladu.
SKKARSTA.POZICE O T X X Umístění ve zvoleném skladu.
SKKARSTA.MINIMUM O N X X Nastavené minimum MJ na zvoleném skladu.
SKKARSTA.NORMA O N X X Nastavená norma MJ na zvoleném skladu.
SKKARSTA.MAXIMUM O N X X Nastavené maximum MJ na zvoleném skladu.

 <mrpEnvelope>
  <body>
    <mrpRequest>
      <request command="CENEO0" requestId=""> 
      </request>
      <data>
        <filter>
          <fltvalue name="cisloSkladu">1</fltvalue>
          <fltvalue name="cisloCeny">2</fltvalue>
          <fltvalue name="cenovaSkupina">1</fltvalue>
          <fltvalue name="datum">2014-01-01</fltvalue>
          <fltvalue name="cenySDPH">F</fltvalue>
          <!-- Nepovinny blok s pripadnymi daty, zalezi na prikazu, zdali je potrebuje -->
          <!-- Číslo karty v rozsahu 1 až 10 -->
          <fltvalue name="SKKAR.CISLO">1..10</fltvalue>
          <!-- Kód skupiny skladových karet A nebo B -->
          <fltvalue name="SKKAR.SKUPINA">A|B</fltvalue>
          <!-- Typ položky Z -->
          <fltvalue name="SKKAR.TYP_POL">Z</fltvalue>
        </filter>
      </data>
    </mrpRequest>
  </body>
</mrpEnvelope>

Odpověď

Element <ceny>povinný
name Typ Délka DM Význam
cislo N 10 2 Číslo karty
cisloceny N 1 0 Číslo použité ceny
mena T 3 0 Měna
cenamj N 17 6 Cena určená podmínkou číslo ceny
sleva_p N 5 2 Jednotková sleva procentem
slevamj N 17 6 Jednotková sleva částkou

<mrpEnvelope>
  <body>
    <mrpResponse>
      <status>
        <request command="CENEO0"/>
      </status>
      <data>
        <datasets>
          <ceny>
            <rows>
              <row>
                <fields>
                  <cislo>1</cislo>
                  <cisloceny>1</cisloskl>
                  <mena>CZK</mena>
                  <cenamj>1000</cenamj>
                  <sleva_p>10</sleva_p>
                  <slevamj>100</slevamj>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </ceny>
        </datasets>
      </data>
    </mrpResponse>
  </body>
</mrpEnvelope>

ADREO0

Požadavek

Atributy elementu <fltvalue>nepovinný
Seznam volitelných filtrovacích polí, které se přibližují filtrovacím podmínkám adres. Jméno filtru se skládá ze jména tabulky, oddělovače a jména datového pole.
Výraz se zapisuje a vyhodnocuje stejným způsobem, jaku u filtru v programu MRP K/S, tedy při použití číselných a datumových výrazů musí tyto výrazy respektovat nastavení desetinných oddělovačů a tvaru data nastavených na klientské stanici.
Jsou uváděny pouze typy jednotlivých polí kvůli konstrukci dotazu.
name Typ Význam
ADRES.FIRMA T Firma
ADRES.MENO T Jméno
ADRES.ULICA T Ulice
ADRES.MESTO T Město
ADRES.PSC T PSČ
ADRES.KODSTAT T Kód státu
ADRES.ICO T
ADRES.DIC T DIČ
ADRES.TELEFON T Telefon
ADRES.FAX T Fax
ADRES.EMAIL T E-mail
ADRES.DAT_ZAR D Datum zařazení
ADRES.POZNAMKA T Poznámka
ADRES.CENSKUP N Cenová skupina
ADRES.EANKOD T EAN adresy
ADRES.FYZOSOB L Fyzická osoba [T|F]
ADRES.TLAC T Označeno do tisku [T|F]
ADRES.UCET T Výchozí bankovní účet
ADRES.USRFLD1 T Uživatelské pole 1 adresy
ADRES.USRFLD2 T Uživatelské pole 2 adresy
ADRES.USRFLD3 T Uživatelské pole 3 adresy
ADRES.USRFLD4 T Uživatelské pole 4 adresy
ADRES.USRFLD5 T Uživatelské pole 5 adresy
ADRES.SPLATNOST N Jiná splatnost faktury
ADRES.KREDIT N Částka kreditu
ADRES.CRPSTATUS T CRP-status
ADRES.FAKSTRED T Kód fakturačního střediska
KONTAKTY.IDENTIFT Obchodní zástupce

 <mrpEnvelope>
  <body>
    <mrpRequest>
      <request command="ADREO0" requestId=""> 
      </request>
      <data>
        <filter>
          <!-- Adresy s PSČ začínající na 100 -->
          <fltvalue name="ADRES.PSC">100*</fltvalue>
          <!-- Cenová skupina nastavena -->
          <fltvalue name="ADRES.CENSKUP">not null</fltvalue>
        </filter>
      </data>
    </mrpRequest>
  </body>
</mrpEnvelope>

Odpověď

Element <adres>Vždy
fields Typ Délka DM Význam
ico T 12 0
dic T 17 0 DIČ
ic_dph T 14 0 IČ DPH
id T 10 0 Identifikátor adresy v e-obchodu
firma T 50 0 Název firmy
meno T 30 0 Jméno
ulica T 30 0 Ulice a číslo popisné
mesto T 30 0 Město
psc T 15 0 PSČ
kodstat T 2 0 Kód státu
telefon T 30 0 Telefon
telefon1 T 30 0 Telefon
telefon2 T 30 0 Telefon
fax T 30 0 Fax
email T 256 0 E-mailová adresa
censkup N 4 0 Číslo cenové skupiny
stat T 30 0 Název státu

<mrpEnvelope>
  <body>
    <mrpResponse>
      <status>
        <request command="ADREO0"/>
      </status>
      <data>
        <datasets>
          <adres>
            <rows>
              <row>
                <fields>
                  <ico>A00001</ico>
                  <dic></dic>
                  <ic_dph></ic_dph>
                  <id>122</id>
                  <firma>Ferda Mravenec;</firma>
                  <meno>Pytlík</meno>
                  <ulica>K mraveništi 1</ulica>
                  <mesto>Borový les</mesto>
                  <psc>00000</psc>
                  <kodstat>CZ</kodstat>
                  <telefon>123 456 789</telefon>
                  <telefon1></telefon1>
                  <telefon2></telefon2>
                  <fax></fax>
                  <email></email>
                  <censkup>1</censkup>
                  <stat>Česká republika</stat>
                </fields>
              </row>
              <row>
                ....
              </row>
            </rows>
          </ceny>
        </datasets>
      </data>
    </mrpResponse>
  </body>
</mrpEnvelope>