Pro vývojáře

Technické parametry POHODA mServer:

  • POHODA mServer využívá HTTP a HTTPS protokol pro přenos libovolných dat pomocí páru požadavek-odpověď. Požadavek i odpověď jsou složeny z textových hlaviček, prázdného řádku a binárních dat. Typ dat je určen pomocí MIME (Intenet Mail Extension) typů v hlavičce Content-Type.
  • Přenos dat z účetní jednotky programu POHODA pouze ve formátu XML. Program POHODA podporuje pouze tento typ dat Content-Type: text/xml.
  • XML data je možné předávat pouze pomocí metody POST. Metoda GET není pro přenos XML dat podporována.
  • Pro přenos libovolného typu souboru je nutné použít metodu GET. POHODA mServer umožní přenést(exportovat) pouze soubory ze složky dokumentů firmy.
  • POHODA mServer je primárně určen pro komunikaci na lokální síti/PC. POHODA mServer naslouchá na nastaveném portu. Pokud obdrží HTTP požadavek, provede jeho zpracování a odpoví zpět.
  • Pokud chcete použít POHODA mServer pro komunikaci přes veřejnou sít/internet, pak můžete použít HTTPS protokol nebo HTTP protokol v kombinaci s VPN nebo web server v kombinaci s konektorem na přesměrování požadavku.
  • Hlavička HTTP požadavku musí obsahovat parametr STW-Authorization, který slouží pro přístup(autentizaci) k programu POHODA. POHODA mServer přijme HTTP požadavek a spoustí XML komunikaci v programu POHODA pro zpracování XML dat. Aby mohl POHODA mServer spustit XML zpracování dat v programu POHODA, potřebuje platné přístupové údaje(uživatelské jméno a heslo) do programu POHODA. Jméno a heslo je zasláno jako jeden textový řetězec. Za jméno je připojena dvojtečka a za ni heslo. Výsledný řetězec je poté zakódován metodou Base64 a odeslán v rámci HTTP požadavku. Aktuálně je podporována pouze Basic Authentication.
  • POHODA mServer podporuje komprese přenášených dat. Aktuálně jsou podporovány metody: gzip/deflate.

Zpracování požadavků na POHODA mServer

POHODA mServer provádí synchronní zpracování přijatých požadavků. Pokud odešlete na POHODA mSever více požadavků současně, dojde nejdříve k jejich serializaci a následně k jejich postupnému zpracování v pořadí tak, jak byly přijaty.

Zjištění stavu spuštění POHODA mServer prostřednictvím HTTP protokolu a metody GET nebo POST

Pro zjištění stavu spuštění POHODA mServeru lze použít parametr /status.
Pokud bude mServer spuštěný a odešlete na něj požadavek na zjištění stavu, vrátí vám standardní odpověď pro úspěšný HTTP požadavek Status: 200 OK a dále bude odpověď obsahovat XML dokument popisující stav spuštěného POHODA mServeru.

Příklad použití: GET http://localhost:444/status

Příklad odpovědi mServeru programu POHODA na parametr /status

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/xml;
Content-Length: 189

<?xml version="1.0" encoding="UTF-8"?>
<mserver>
  <message>Response from POHODA mServer</message>
  <server>http://C0508P:444</server>
  <status>idle</status>
  <processing>0</processing>
</mserver>
Popis parametrů v XML response na stav mServeru:
  • message, obecná textová zpráva mServeru
  • server, adresa mServeru
  • status, stav mServeru (idle - není využíván proces, working - zpracovává požadavek)
  • processing, počet požadavků na zpracování na mServeru

Rozšířené informace na stav POHODA mServer - informace o účetní jednotce

Pro získání rozšířených informací o účetní jednotce přiřazené k dané instanci POHODA mServeru lze použít parametr /status?comapany Detail, který na rozdíl od běžného dotazu na stav vyžaduje autentizaci do POHODY.
Pokud bude POHODA mServer spuštěný a odešlete na něj požadavek na zjištění stavu s parametrem /status?comapany Detail včetně autentizace do POHODY, vrátí vám POHODA mServer standardní odpověď pro úspěšný HTTP požadavek Status: 200 OK a dále bude odpověď obsahovat XML dokument popisující stav spuštěného POHODA mServeru + informace o účetní jednotce.

Příklad použití: GET http://localhost:444/status?companyDetail

Příklad odpovědi mServeru programu POHODA na parametr /status?companyDetail

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/xml;
Content-Length: 350

<?xml version="1.0" encoding="UTF-8"?>
<mserver>
  <message>Response from POHODA mServer</message>
  <server>http://C0508P:444</server>
  <status>idle</status>
  <processing>0</processing>
  <companyDetail>
   <company>Novák</company>
   <databaseName>12345678_2021.mdb</databaseName>
   <year>2021</year>
   <period>2021</period>
  </companyDetail>
</mserver>
Popis rozšiřujích parametrů bloku <companyDetail> v XML response na stav mServeru:
  • company, název účetní jednotky
  • databaseName, název databázového souboru účetní jednotky
  • year, účetní rok účetní jednotky
  • period, účetní období do kterého je účetní jednotka aktuálně přepnuta pod daným uživatelem

Komunikace s POHODA mServer prostřednictvím metody POST:

Je určena pro:
  • přenos XML dat do/z účetní jednotky programu POHODA.

Při volání mServeru prostřednictvím HTTP protokolu a metody POST je nutné v HTTP požadavku zadat:

  • adresa mServeru.
  • číslo portu, na kterém mServer naslouchá".
  • umístění na serveru "/XML".
  • autentizaci pro přístup do programu POHODA, parametr STW-Authorization
Příklad použití: POST http://localhost:444/xml

V hlavičce HTTP požadavku je možné zadat tyto nepovinné rozšiřující parametry:

  • STW-Application, který slouží pro identifikaci aplikace, která komunikaci s POHODA mServere vyvola.
  • STW-Instance, který slouží pro identifikaci jednotlivé komunikace v rámci jedné aplikace s POHODA mServere.
  • STW-Check-Duplicity, který slouží pro nastavení kontroly duplicity XML požadavku.
  • Accept-Encoding informace pro POHODA mServer, že klient podporuje kompresi přenášených dat, kterou je možné použít pro zpětnou odpověď.
  • Content-Encoding informace pro POHODA mServer, že klient poslal komprimovaná data.
Pomocí těchto parametrů můžete následně provádět filtrování záznamu v diloagu pro monotoring komunikace na mServeru.

Přenos dat přes POHODA mServer

Pohoda mServer využívá pro přenos dat standardní XML komunikaci programu POHODA. Bližší informace ke struktuře XML nalezenete na www.stormware.cz/xml

Ukázka komunikace HTTP klienta s POHODA mServer

Příklad požadavku HTTP klienta na mServer POHODA na export "Zásob" z programu POHODA.

POST http://localhost:444/xml HTTP/1.1
User-Agent: User-Agent: STORMWARE HTTP client. http://www.stormware.cz
STW-Authorization: Basic QDo=
Content-Type: text/xml
Accept-Encoding: gzip, deflate
Host: http://localhost:444
Content-Length: 527
Pragma: no-cache
Connection: Keep-Alive

<?xml version="1.0" encoding="Windows-1250"?>
<dat:dataPack xmlns:dat="http://www.stormware.cz/schema/version_2/data.xsd" xmlns:stk="http://www.stormware.cz/schema/version_2/stock.xsd" xmlns:ftr="http://www.stormware.cz/schema/version_2/filter.xsd" xmlns:lStk="http://www.stormware.cz/schema/version_2/list_stock.xsd" xmlns:typ="http://www.stormware.cz/schema/version_2/type.xsd" id="00000001" ico="25313142" application="HTTP klient" version="2.0" note="Export zasob">
  <dat:dataPackItem id="00000001" version="2.0">
    <lStk:listStockRequest version="2.0" stockVersion="2.0">
      <lStk:requestStock/>
    </lStk:listStockRequest>
  </dat:dataPackItem>
</dat:dataPack>

Příklad odpovědi mServeru programu POHODA

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/xml; charset=Windows-1250
Content-Length: 1151

<?xml version="1.0" encoding="Windows-1250"?>
<rsp:responsePack version="2.0" id="Z001" state="ok" programVersion="11600.32 (8.2.2017)" ico="12345678" note="export zásob" xmlns:rsp="http://www.stormware.cz/schema/version_2/response.xsd" xmlns:rdc="http://www.stormware.cz/schema/version_2/documentresponse.xsd" xmlns:typ="http://www.stormware.cz/schema/version_2/type.xsd" xmlns:lst="http://www.stormware.cz/schema/version_2/list.xsd" xmlns:lStk="http://www.stormware.cz/schema/version_2/list_stock.xsd" xmlns:lAdb="http://www.stormware.cz/schema/version_2/list_addBook.xsd" xmlns:acu="http://www.stormware.cz/schema/version_2/accountingunit.xsd" xmlns:inv="http://www.stormware.cz/schema/version_2/invoice.xsd" xmlns:vch="http://www.stormware.cz/schema/version_2/voucher.xsd" xmlns:int="http://www.stormware.cz/schema/version_2/intDoc.xsd" xmlns:stk="http://www.stormware.cz/schema/version_2/stock.xsd" xmlns:ord="http://www.stormware.cz/schema/version_2/order.xsd" xmlns:ofr="http://www.stormware.cz/schema/version_2/offer.xsd" xmlns:enq="http://www.stormware.cz/schema/version_2/enquiry.xsd" xmlns:vyd="http://www.stormware.cz/schema/version_2/vydejka.xsd" xmlns:pri="http://www.stormware.cz/schema/version_2/prijemka.xsd" xmlns:bal="http://www.stormware.cz/schema/version_2/balance.xsd" xmlns:pre="http://www.stormware.cz/schema/version_2/prevodka.xsd" xmlns:vyr="http://www.stormware.cz/schema/version_2/vyroba.xsd" xmlns:pro="http://www.stormware.cz/schema/version_2/prodejka.xsd" xmlns:con="http://www.stormware.cz/schema/version_2/contract.xsd" xmlns:adb="http://www.stormware.cz/schema/version_2/addressbook.xsd" xmlns:prm="http://www.stormware.cz/schema/version_2/parameter.xsd" xmlns:lCon="http://www.stormware.cz/schema/version_2/list_contract.xsd" xmlns:ctg="http://www.stormware.cz/schema/version_2/category.xsd" xmlns:ipm="http://www.stormware.cz/schema/version_2/intParam.xsd" xmlns:str="http://www.stormware.cz/schema/version_2/storage.xsd" xmlns:idp="http://www.stormware.cz/schema/version_2/individualPrice.xsd" xmlns:sup="http://www.stormware.cz/schema/version_2/supplier.xsd" xmlns:prn="http://www.stormware.cz/schema/version_2/print.xsd" xmlns:act="http://www.stormware.cz/schema/version_2/accountancy.xsd" xmlns:bnk="http://www.stormware.cz/schema/version_2/bank.xsd" xmlns:sto="http://www.stormware.cz/schema/version_2/store.xsd" xmlns:grs="http://www.stormware.cz/schema/version_2/groupStocks.xsd" xmlns:acp="http://www.stormware.cz/schema/version_2/actionPrice.xsd" xmlns:csh="http://www.stormware.cz/schema/version_2/cashRegister.xsd" xmlns:bka="http://www.stormware.cz/schema/version_2/bankAccount.xsd" xmlns:ilt="http://www.stormware.cz/schema/version_2/inventoryLists.xsd" xmlns:nms="http://www.stormware.cz/schema/version_2/numericalSeries.xsd" xmlns:pay="http://www.stormware.cz/schema/version_2/payment.xsd" xmlns:mKasa="http://www.stormware.cz/schema/version_2/mKasa.xsd" xmlns:ftr="http://www.stormware.cz/schema/version_2/filter.xsd">
  <rsp:responsePackItem version="2.0" id="0001" state="ok">
    <lStk:listStock version="2.0" dateTimeStamp="2017-02-09T13:09:45" dateValidFrom="2017-02-09" state="ok">
      <lStk:stock version="2.0">
        <stk:stockHeader>
          <stk:id>1</stk:id>
          <stk:stockType>text</stk:stockType>
          <stk:code>Jídel</stk:code>
          <stk:PLU>624</stk:PLU>
          <stk:isSales>true</stk:isSales>
          <stk:isSerialNumber>false</stk:isSerialNumber>
          <s>true</stk:isInternet>
          <stk:isBatch>false</stk:isBatch>
          <stk:purchasingRateVAT>high</stk:purchasingRateVAT>
          <stk:sellingRateVAT>high</stk:sellingRateVAT>
          <stk:name>Stůl jídelní - rozkládací</stk:name>
          <stk:unit>ks</stk:unit>
          <stk:storage>
            <typ:id>9</typ:id>
            <typ:ids>Ceník</typ:ids>
          </stk:storage>
          <stk:typePrice>
            <typ:id>4</typ:id>
            <typ:ids>Nábytek</typ:ids>
          </stk:typePrice>
          <stk:weightedPurchasePrice>2511.56</stk:weightedPurchasePrice>
          <stk:purchasingPrice>2500</stk:purchasingPrice>
          <stk:sellingPrice>3000</stk:sellingPrice>
        </stk:stockHeader>
        <stk:stockPriceItem>
          <stk:stockPrice>
            <typ:id>1</typ:id>
            <typ:ids>Prodejní</typ:ids>
            <typ:price>7680</typ:price>
          </stk:stockPrice>
        </stk:stockPriceItem>
      </lStk:stock>
    </lStk:listStock>
  </rsp:responsePackItem>
</rsp:responsePack>

Komunikace s POHODA mServer prostřednictvím metody GET:

Je určena pro:
  • přenos libovolného typu souboru ze složky dokumentů firmy programu POHODA (pouze export dat). Např. tisková sestava uložené do PDF souboru, obrázky zásoby, dokumenty dokladu atd.

Při volání mServeru prostřednictvím HTTP protokolu a metody GET je nutné v HTTP požadavku zadat:

  • adresa mServeru.
  • číslo portu, na kterém mServer naslouchá".
  • umístění na serveru "/documents" + cesta k souboru.
  • autentizaci pro přístup do programu POHODA, parametr STW-Authorization
Parametr /documents v URL adrese = cesta do složky dokumentů firmy(účetní jednotky).
Za tento parametr je nutné zadat cestu k souboru, který chceme přenést. Soubor se musí nacházet ve složce dokumentů firmy nebo jejich podsložkách.

Upozornění: České znaky s diakritikou v URL adrese je nutné překódovat do"Windows-1250".
Bližší informace o kódování URL nalezente např. https://cs.wikipedia.org

Příklad:
Složka dokumentů firmy = C:\Stormware\Pohoda\Dokumenty\Novák
Soubor, který chceme přenést = C:\Stormware\Pohoda\Dokumenty\Novák\Obrázky\židle.jpg
URL adresa, kterou použijeme v HTTP pažadavku = http://localhost:444/documents/obr%E1zky/%9Eidle.jpg

V hlavičce HTTP požadavku je možné zadat tyto nepovinné rozšiřující parametry:

  • If-Modified-Since, přenos pouze změněných souborů od uvedeného data.
  • STW-Application, který slouží pro identifikaci aplikace, která komunikaci s POHODA mServere vyvolala.
  • STW-Instance, který slouží pro identifikaci jednotlivé komunikace v rámci jedné aplikace s POHODA mServer.

Ukázka komunikace HTTP klienta s POHODA mServer

Příklad požadavku HTTP klienta na mServer POHODA na export "obrázku zásoby" ze složky dokumentů firmy programu POHODA.

GET http://localhost:444/documents/obrazky/zidle.jpg HTTP/1.1
User-Agent: User-Agent: STORMWARE HTTP client. http://www.stormware.cz
STW-Authorization: Basic QDo=
Host: http://localhost:444
STW-application: eShop
STW-Instance: export souboru
If-Modified-Since: Wed, 19 Jun 2017 07:28:00
Connection: Keep-Alive
Cache-Control: no-cache

Příklad odpovědi mServeru programu POHODA

HTTP/1.1 200 OK
Date: Thu, 05 Oct 2017 11:09:47 GMT
Connection: Keep-Alive
Content-Type: image/jpeg
Content-Length: 12431
Last-Modified: Mon, 02 Oct 2017 08:55:23 GMT


POHODA mServer vs přístupová práva programu POHODA

Před použítím POHODA mServeru je nutné provést nastavení přístupových práv v programu POHODA.
  • Pro přenos XML dat je nutné povolit XML komunikaci v programu POHODA ve větvi Práva/Soubor/Datová komunikace
  • Pro povolení nastavení POHODA mServer a přenos souborů ze složky dokumentů firmy je nutné povolit práva ve větvi Práva/Aministrátorské funkce/POHODA mServer
Stavové kódy HTTP
Kód chyby
 
Popis chyby
400
Bad request
"Požadavek nemůže být vyřízen, poněvadž byl syntakticky nesprávně zapsán"
401
Unauthorized
"Používán tam, kde je vyžadována autentifikace, ale nebyla zatím provedena". V tomto případě se jedná o problém, kdy buď v HTTP požadavku chybí autentizační údaje nebo daný uživatel není v programu POHODA vytvořen.
403
Forbidden
"Požadavek byl legální, ale server odmítl odpovědět". Například se jedná o problém, kdy daný uživatel nemá právo na otevření účetní jednotky v programu POHODA.
404
Not found
„Požadovaný dokument nebyl nalezen“. Jedná se o problém, kdy byla chybně zadaná URL cesta k mServeru. Například se jedná o problém, kdy v URL adrese není uvedena cesta k umístění na serveru "/XML". Příklad správně zadné URL: 192.168.0.1:444/xml
405
Method Not Allowed
„Požadavek byl zavolán na zdroj s metodou, kterou nepodporuje. Například se jedná o službu, na kterou se odesílají data metodou POST a někdo se je místo toho pokusí odeslat metodou GET.“
408
Request Timeout
„Vypršel čas vyhrazený na zpracování požadavku“
500
Internal server error
„Při zpracovávání požadavku došlo k blíže nespecifikované chybě“
502
Bad Gateway
„Proxy server nebo brána obdržely od serveru neplatnou odpověď“
503
Service unavailable
„Služba je dočasně nedostupná“
504
Gateway Timeout
„Proxy server nedostal od cílového serveru odpověď v daném čase“
505
HTTP Version Not Supported
„Server nepodporuje verzi protokolu HTTP použitou v požadavku“

ASP konektor pro IIS

  • Ukázkový příklad ASP konektoru pro IIS pro přesměrování HTTP požadavku z Internetu do lokální sítě stáhnout
  • Návod nasazení ASP konektoru pro mServer stáhnout