Pohoda je v súčasnej dobe pomerne rozšírený účtovný a
ekonomický softvér. Umožňuje evidovať skladové zásoby,
vytvárať objednávky a faktúry, viesť kompletné účtovné
jednotky a mnoho ďalších funkcií. Pre ekonómov to je nepochybne
vynikajúca voľba. O to viac ma prekvapilo, že prepojenie Pohody s
internetom (e-shop, iná aplikácia v prostredí webu) nie je
triviálna záležitosť, hoci podľa schémy to vyzerá
jednoducho.

Obrázok: https://www.stormware.sk
Ako prvé odporúčam nasledovnú stránku:
https://www.stormware.sk/pohoda/xml/
Je tam uvedený základný prehľad princípu komunikácie, zoznam
podporovaných dokladov pre import a export. Je dobré web prejsť a
trochu naštudovať problematiku. Ďalej sa pokúsim trochu
načrtnúť moje riešenie prepojenia Pohoda a všeobecný
internetový obchod (v jazyku PHP), ktoré som rozdelil na dve
skupiny.
1. Manuálne prepojenie:
Ako je uvedené na stránkach Pohody: https://www.stormware.sk/pohoda/xml/obecny-obchod/nastaveni/,
nastavenie nie je nejako extra náročné. V časti Export a Import
zadávame URL webovej služby, ktorá dokáže komunikovať s Pohodou
na jednej strane a odovzdávať získané údaje druhej strane, v
tomto prípade e-shopu. Na stránkach stormware.sk nájdete ukážku
webovej služby len v jazyku ASP. Nižšie priložený kód je
ukážka jednoduchej webovej služby pre export zásob v jazyku
PHP.
Tento kód je možné vložiť do súboru s koncovkou *php a s
názvom napríklad export.php. Následne po nahratí súboru na
doménu sa z neho stáva webová služba, umiestnená na:
www.domena.sk/export.php
Ak takýto link vložíme v Pohode do časti nastavenia
všeobecného obchodu a následne spustíme dátovú komunikáciu /
export údajov na internet webová služba uloží dáta z Pohody do
súboru export-zasob-z-pohody-na-web.xml s ktorým je možné už
elegantne ďalej pracovať. Pri kopírovaní kódu je potrebné
nastaviť IČO vašej účtovnej jednotky. Podobnou filozofiou je
možné vytvoriť webovú službu pre export a import ďalších
dokladov, ktoré Pohoda podporuje. Veľmi dôležitá poznámka na
záver: Prenos údajov medzi programom POHODA a všeobecným
internetovým obchodom je možné spustiť len z programu POHODA. V
praxi to znamená, že z internetového prostredia nie je možné
priamo kontaktovať Pohodu pre získanie dát. Pohoda momentálne
nepodporuje nastavenie pravidelného spúšťania dátovej
komunikácie (čo sa veľmi čudujem). A tu nastáva otázka
automatického prepojenia.
2. Automatické prepojenie:
Po dlhom hľadaní, konzultáciách s technickou podporou som
dospel k záveru, že na automatickú komunikáciu Pohody s vašou
aplikáciou na internete je potrebný nástroj, ktorý bude
nainštalovaný na počítači, kde je aj Pohoda a ktorý bude
zabezpečovať pravidelnú požiadavku. Neexistuje jednotné
riešenie a tento problém je možné teda vyriešiť po svojom.
Niektorí programátori využijú vlastný nástroj na priame
napojenie na databázu Pohody a dáta posielajú pravidelne smerom z
lokálnej siete na internet. Toto riešenie sa mi nepáčilo
(štruktúra databáz Pohody nie je verejne zdokumentovaná, v
porovnaní s využitím API, prípadne XML komunikácie je zaručená
vyššia bezpečnosť). Skúšal som si teda vytvoriť vlastné.
Pohoda obsahuje interovaný http server, ktorý sa volá mServer.
Využíva na prenos XML informácií HTTP protokol pomocou páru
požiadavka a odpoveď. Bez nutnosti manuálneho spúšťania
dátovej komunikácie v grafickom rozhraní Pohody. Ako je uvedené
na stránkach stormware.sk, pre komunikáciu z internetovej siete do
lokálnej je potrebné mať webový konektor.

Obrázok: https://www.stormware.sk
Moje riešenie je približne nasledovné: Na počítači, kde je
inštalovaná Pohoda je potrebné nainštalovať lokálny server
Apache, pre prácu s PHP skriptovaním (napríklad XAMPP). Vytvoríme
si teda vlastný lokálny server, kde môžeme spúšťať PHP.
mServer Pohody bude spustený pomocou príkazového riadku a bude
bežať v pozadí. Využitím funkcií fsockopen, fputs,
fgets z tohto Apache servera pošleme požiadavku na
mServer, ktorý nám vráti požadované údaje. Týmto spôsobom
získame dáta z Pohody do prostredia lokálneho servera, kde s nimi
už môžeme robiť čokoľvek – aj poslať ich na FTP ako XML
súbor, alebo inak do verejnej internetovej siete. Keďže dopyt
vytvára spustenie PHP skriptu, je možné nastaviť časovač a
pravidelne túto akciu opakovať. Taktiež by bolo zaujímavé
mapovať porty na Apache localhost a spúšťať lokálne PHP skripty
z internetu, napríklad automatickým spúšťaním cez CRON. Tento
spôsob je podmienený vhodným zabezpečením.
Vyššie som rámcovo spomenul moje 2 riešenia dátovej
komunikácie s Pohodou. Netvrdím, že sú najlepšie, ale fungujú.
Najproblematickejšie je získať samotné údaje z Pohody v
pravidelnom intervale a deponovať ich do prostredia webu. Ďalšie
spracovanie parsovaním XML štruktúry už nie je väčší
problém.
V prípade záujmu o spoluprácu pri prepojení internetovej
aplikácie (napríklad e-shopu) s účtovným systémom Pohoda ma
kontaktujte.
Moje riešenia obsahujú ďalej:
Skript pre ukážku webovej služby
pre export dát Pohoda -> e-shop s požadovaným dokladom
Skript pre ukážku webovej služby
pre import dát e-shop -> Pohoda s požadovaným dokladom
Skript pre ukážku webovej služby
pre dátovú komunikáciu localhost – mServer v oboch smeroch
Webový konektor pre dátovú
komunikáciu z prostredia verejnej siete internet do privátnej siete
intranet s vhodným zabezpečením
Skript pre parsovanie XML údajov
do požadovanej podoby, prípadne skript s MySQL dopytmi na INSERT a
UPDATE