Asseco BLUEGASTRO - SPIN

Z Hotelové systémy - Wiki
Verzia z 15:33, 6. jún 2017, ktorú vytvoril Juraj.pacolt (diskusia | príspevky) (Juraj.pacolt premiestnil stránku BlueGastro - SPIN na Asseco BLUEGASTRO - SPIN: Nahradenie textu „BlueGastro” textom „Asseco BLUEGASTRO”)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Skočit na navigaci Skočit na vyhledávání

Maloobchodná pokladňa BG - SPIN

Úvod

Problematika maloobchodnej pokladne v IS SPIN bola v minulosti riešená rôznymi spôsobmi, ktoré boli poplatné vtedajším technickým a programovým možnostiam ako aj vtedy platnej legislatíve. V súčasnosti pre potreby IS SPIN využívame W-čkovú kasu s napojením na fiškálne tlačiarne Bowa resp. Elkom splňujúce podmienky dnešnej legislatívy (zákon 289/2008). Riešenie využíva online prepojenie na IS SPIN s priamym volaním metód oracle databázových balíkov.

Názvoslovie, skratky a definície

  • Názvoslovie
  • Skratky

MP – maloobchodná pokladňa (Kasa)

IS SPIN – podnikový informačný systém SPIN

BG – reštauračný systém Blue Gastro

WS – webové služby

Špecifikácia rozhrania na strane IS SPIN

Rozhranie je realizované webovými službami, ktoré IS SPIN poskytuje prostredníctvom webového servera SPINEX. Uvedené WS reprezentujú funkčnosti, ktoré boli implementované aj pri pripojení maloobchodnej pokladne A3Soft k IS SPIN.

Údajová základňa / Číselníky (IS SPIN -> BG)

  • Produkty

Webová služba : getProduct(XML_IN, XML_OUT) – WS vracia údaje o produkte/produktoch. WS pracuje v 2 režimoch. (i) vracia kompletné údaje o požadovanom produkte alebo (ii) vracia údaje o množine produktov, pri ktorých bola vykonaná nejaká zmena od definovaného dátumu Vstup : XML_IN - v štruktúre „params.dtd“– vstupné XML obsahuje buď (i) Kód produktu alebo (ii) Dátum Výstup : XML_OUT - v štruktúre „produkty.DTD“ – vstupné XML obsahuje údaje o produktoch

  • Stavy na skladoch

Webová služba : getStockStatus(XML_IN, XML_OUT) – WS vracia údaje o stave skladových zásob na požadovanom sklade, pracuje na úrovni skladových kariet. Vstup : XML_IN - v štruktúre „params.dtd“ – obsahuje údaje pre identifikáciu skladu (číslo skladu) Výstup - XML_OUT - v štruktúre „stavskladu.dtd“ – obsahuje údaje o stavoch produktov na skladových kartách požadovaného skladu

Webová služba : getProductPositions( XML_IN, XML_OUT) – WS vracia skladové údaje o produkte na všetkých skladových podkartách vo všetkých skladoch mandanta Vstup : XML_IN - v štruktúre „params.dtd“ – vo vstupnom XML je zadaný Kód produktu Výstup : XML_OUT - v štruktúre „produkty_pozicie.dtd“ – obsahuje skladové údaje zo všetkých podkariet na všetkcýh skladoch daného produktu

  • Cenníky

Webová služba : getPriceList(XML_IN, XML_OUT) – WS vracia ceny produktov z požadovaných cenníkov (Druh ceny) platné k dátumu Vstup : XML_IN - v štruktúre „params.dtd“ – obsahuje údaje pre identifikáciu cenníka - Druh ceny a Dátum platnosti ceny Výstup : XML_OUT - v štruktúre „cenniky.dtd“ – obsahuje údaje o platných cenách produktov v cenníku k požadovanému dátumu


Skladové pohyby (BG -> IS SPIN) Webová služba pre vytvorenie dodacieho listu v IS SPIN. Vo všeobecnosti môžu byť dodacie listy spracovávané 3 spôsobmi : - 1:1 – každý doklad vytvorený na MP zodpovedá 1 dodaciemu listu na strane IS SPIN - 1:N – denne sa vytvorí jeden dodací list za každú pokladňu, produkty nie sú kumulované - 1:N – denne sa vytvorí jeden dodací list za každú pokladňu, produkty sú kumulované – pre jeden produkt sa vytvorí iba jedna položka dodacieho listu, všetky denné pohyby sa kumulujú Pre navrhované riešenie maloobchodnej pokladne preferujeme 1. spôsob spracovania

  • Zápis dodacieho listu

Webová služba : insertDodaciList(XML_IN, XML_OUT) – WS vytvorí štandardný dodací list - hlavičku s položkami, vykoná sa výdaj produktov zo skladu. Kontroluje sa disponibilné množstvo na príslušnom sklade, výdaj do mínusu nie je povolený. Vstup : XML_IN - v štruktúre „vydaje.dtd“ – obsahuje údaje pre vytvorenie dodacieho listu pre zadaný sklad a mandanta Výstup : XML_OUT - v štruktúre „stav.dtd“ – obsahuje informácie o priebehu spracovania

Pokladničný doklad (BG -> IS SPIN) Webová služba slúži pre účely automatického zaúčtovania tržieb maloobchodnej pokladne v IS SPIN. Tržby môžu byť účtovne sledované na úroveň účtovných druhov produktov. Účtovné druhy sú definované pre produkty. Táto funkčnosť nebola premetom prepojenia IS SPIN s A3Soft pokladňami

  • Zápis pokladničného dokladu

Webová služba : insertPokDoklad(XML_IN, XML_OUT) – WS vytvorí štandardný pokladničný doklad - hlavičku s položkami pokl.dokladu a paragónmi. Vstup : XML_IN - v štruktúre „pokladnicne_doklady.dtd“ – obsahuje údaje pre vytvorenie pokladničného dokladu Výstup : XML_OUT - v štruktúre „import_pd.dtd“ – obsahuje informácie o priebehu spracovania  

Špecifikácia Kasy

Ako základ sa využíva systém Asseco BLUEGASTRO bez skladu tzv. mini Asseco BLUEGASTRO.

Mini Asseco BLUEGASTRO má trojvrstvovú architektúru t.j.:

  • Databáza - PostgreSQL,
  • aplikačný server
  • klienti:
  • BG manažér
  • KASA

IS BG je priamo podriadený IS SPIN pri:

  • zakladaní a modifikácií PLU
  • cien PLU
  • kategórií PLU
  • účtovné druhy

Ostané nastavenia a pomocné číselníky sú prístupné cez BG manažér. Komunikácia kasy s fiškálom prípadne inou účtenkovou tlačiarňou prebieha cez našu vlastnú obslužnú aplikáciu CSDLVPP.

V prvej fáze sa nepočíta:

  • s využitím podkariet
  • s využívaním viacerých cenníkov v jednom čase t.j. nie je možné sa prepínať medzi viacerými cenníkmi

Dopyt pre poskytnutie cenníka prebieha:

  • v pravidelných definovaných intervaloch,
  • v čase vypršania platnosti cenníka,
  • manuálne

Do IS SPIN sa zasielajú:

  • účtovné doklady – podľa možností online, v prípade výpadku spojenia ihneď po jeho obnovení
  • uzávierky pokladní – tržby členené podľa:
  • DPH
  • platieb

Aktuálny stav skladu v BG nie je uložený, ale sa ťahá z IS SPIN cez webové služby, na kase sa zobrazí len výsledok volania.

Riešenie

Vytvorenie externého systému

Pripojenie na SPINEX sme už robili v Horci. V BG vytvoríme nový externý systém ERP_CASHDESK. Bude chránený licenciou. Základné nastavenia: • povolený • IP • port • mandant - len zobrazujeme vybraného • tovary - posledný dopyt - dátum a čas Tlačidlá: • Test • Mandant • stiahni cenník - stiahne komplet tovary a cenník

  • Ostatné nastavenie

Časť produkty: • kód DD - kod_dd – Char(5) • int_kod sklad dokladu -Char(20) • sklad – Char(10) • Typ dokladu - typ_dokladu je v dodacom liste – Char(2) Časť cenník: • os – organizačná štruktúra – char(10) • kod - kód cenníka – char(20) • Povolené manuálne stiahnutie cenníka na kase??? T/F Pokladničné doklady: • skratka pokladnicnej knihy - skratka_pk v pokladničnom doklade – char(50) • druh pokladnicneho doklad - druh_pd v pokladničnom doklade – char(50) • ucel pokladnicneho dokladu - ucel_pd v pokladničnom doklade – char(50) Pokladničné doklady DPH: Potrebujeme vytvoriť nastavenia pre konkrétne hodnoty DPH napr. 10%, 20%, pričom potrebujeme nastaviť: • importdd_tpdp_code • skratka_typu_ppg A pre halierové vyrovnanie potrebujeme to isté. Mohlo by to byť urobené na pevno, keďže v skutočnosti existujú 4 možné hodnoty DPH t.j. Základná, znížená, druhá znížená a oslobodená. Podobné kategorizovanie DPH budeme robiť kvôli EET. Toto by sme mohli skombinovať a využiť. Všeobecné: • Interval na zasielanie predajov – text v tvare http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger.html • Plánovač pre sťahovanie cenníka a zmien produktov, pričom je možné definovať aj viac ako jednu hodnotu: bude sa to definovať ako hodnota textova (http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger.html) Kasy Zobrazí všetky povolené kasy v systéme. Musíme kasu zakázať, default budú všetky povolené

  • Správa PLU

Získanie PLU a cien bude prebiehať cez dva kroky: • najprv získame produkty (PLU) • potom si stiahneme ceny Samotné získanie PLU a cien bude buď: • manuálne • automatické Pre automatické sťahovanie cien budeme mať vytvorený scheduler, pre manuálne bude tlačidlo na kase a v BGM.

  • Automatické sťahovanie cien a produktov

O automatické sťahovanie produktov a cien ich sa bude starať scheduler, ktorý bude v stanovených intervaloch volať: 1. getProduct(XML_IN, XML_OUT) so vstupnými parametrami:  mandant_id – preberieme z nastavenia externého systému  dt – s dátumom a časom posledného úspešného volania 2. getPriceList(XML_IN, XML_OUT) so vstupnými parametrami:  mandant_id – preberieme z nastavenia externého systému  kod – kód cenníka, preberieme z nastavenia externého systému  dt – naplníme aktuálny dátum a čas

Každé úspešné volanie metódy getProduct zároveň nasetuje dátum a čas v externom systéme. Pri automatickom volaní sa tým pádom budú vždy volať len posledné zmeny produktov, nie celý číselník.

  • Manuálne sťahovanie cien a produktov

Na rozdiel od automatického sťahovania produktov sa pri manuálnom sťahuje celý číselník produktov, pričom sa bude volať: 1. getProduct(XML_IN, XML_OUT) so vstupnými parametrami:  mandant_id – preberieme z nastavenia externého systému 2. getPriceList(XML_IN, XML_OUT) so vstupnými parametrami:  mandant_id – preberieme z nastavenia externého systému  kod – kód cenníka, preberieme z nastavenia externého systému  dt – naplníme aktuálny dátum a čas

  • Založenie PLU

Pri volaní getProduct nám v rámci návratovej štruktúry prichádzajú nasledovné hodnoty: Základné členenie: <Produkty> <Mandant atributy .../> - nebudeme využívať <Produkt atributy ...> - obsahuje informácie o produkte <produkt_vuep atributy .../> - volitelné údaje <EAN atributy .../> </Produkt> </Produkty>


Popis elementov: Element Produkt obsahuje nasledovné údaje: • Id – je id produktu v externom systéme, pre tento údaj zapíšeme do G_PLU_EXT stĺpca PLE_ID_PLU_EXTERNY_SYSTEM, zároveň vyplníme aj PLE_ID_EXTERNY_SYSTEM kde naplníme ID externého systému • Kod – predstavuje kód PLU t.j. v G_PLU, PLU_KOD_PLU ale len v prípade, že sa v produkt_vuep nebude nachádzať VUEP_KOD s názvom KOD_PLU • nazov – predstavuje názov PLU t.j. PLU_TEXT_PLU v G_PLU • typ – nebudeme využívať • sadzba_dph – predstavuje hodnotu DPH (G_KASA_SADZBA_DPH). Na základe hodnoty DPH vyhľadáme v tabuľke G_KASA_SADZBA_DPH id v stĺpci KDP_DPH, ktoré naplníme G_PLU, PLU_DPH • typ_dph – nebudeme využívať • uct_druh – na základe kódu (UDR_KOD), vyhľadáme ID účtovného druhu (UDR_ID) v G_UCTOVNY_DRUH. Ak sa tam nenachádza, založíme nový záznam, pričom do kódu aj názvu vložíme práve túto hodnotu • mj – nebudeme používať • kategoria – vyhľadáme id (KAP_ID) v G_KATEGORIA_PLU cez KAP_CISLO, ale len v prípade, že sa v produkt_vuep nenachádza • sklad_pol – nebudeme používať • seria – nebudeme používať • expiracia – nebudeme používať • internet – nebudeme používať • platnost – ovplyvní PLU_ZMAZANE, ak bude A naplníme hodnotu F, ak bude N naplníme T Element Produkt_vuep – sú to voliteľné údaje v spine, pričom tieto využijeme na možnosť definovať kód DPT • vuep_kod – ak chcem definovať DPT musí obsahovať hodnotu DPT • vuep_cishod – je vyplnené ak ide o číselníkovú hodnotu • vuep_hod – výstup pre inú ako číselnú hodnotu Možnosť využitie voliteľných údajov pri produktoch: Názov kódu vuep_kod Typ Kde budeme hľadať Kde budeme vkladať Tabuľka Stĺpec DPT Číselník vuep_cishod G_PLU PLU_KOD_DPT KOD_PLU Hodnota vuep_hod G_PLU PLU_KOD_PLU KOD_KATEGORIA Číselník vuep_cishod G_PLU PLU_ID_KATEGORIA

Element ean – element pre poskytnutie informácie pre EAN kód PLU Z tohto elementu budeme využívať iba ean_kod, ktorý zapíšeme do tabuľky G_PLU_EXT stĺpca PLE_EAN. V prípade, že príde viac EAN v rámci jedného produktu vyberieme prvý.

Základné pravidlá: • To, ktoré PLU patria externému systému bude patrné tým, že externé PLU budú obsahovať ID z externého systému. • Externé PLU nebude možné modifikovať v BG. • Pri importe si budeme automaticky zakladať účtovné druhy. • Pre založenie PLU využijeme existujúce metódy v BG • Pri manuálnej synchronizácií nastavíme na zmazané True všetky PLU, ktoré pochádzajú externého systému a neboli v aktuálnom exporte • Produkty sú pre všetky pokladne povolené v externom systéme, ako pokladne ERP

Pre založenie nového PLU potrebujeme nasledovné údaje: • Kategoriu PLU – poznáme z produktu • Názov – poznáme z produktu • Kód – poznáme z produktu • DPT – poznáme z produktu • DPH – poznáme z produktu • Cena – default 0 • Cenová hladina - default 1

  • Ceny PLU

Ceny PLU získame cez getPriceList. Výstupná štruktúra obsahuje, základné členenie:

<cenniky> <mandant atributy ...> - nevyužívame <cennik atributy ...> - cenník <cena atributy .../> - cena konkrétneho produktu </cennik> <davka atributy .../> - nepoužívame, doplnkové informácie </cenniky>

Popis elementov: Element cennik: • druh_ceny = "MOC" - nepoužívame • nazov = "TM - MOC" - nepoužívame • typ = "O" - nepoužívame • mena = "EUR" – kód meny, ak nesúhlasí s domácou menou systému do logu vypíšeme warning • dph = "A" – ak je A sú ceny uvedená s DPH Element cena: • kod – predstavuje kód PLU pre ktorý je cena určená – vyhladáme ID PLU cez kód v G_PLU • cena – je cena s alebo bez DPH, záleží od vyššieho nastavenia, vypĺňa sa do vždy pre hladinu 1 (G_PLU_KASA). Pričom ak je cena bez DPH musíme prepočítať na cenu s DPH • platnost_od - nepoužijeme • platnost_do - nepoužijeme • int_kod - nepoužijeme • typ_ceny - nepoužijeme • mnozstvo – nepoužijeme

Cena sa ukladá do G_PLU_KASA, kde su nasledovné not null stĺpce: • PLK_POVOLENE – default F • PLK_IOP - • PLK_CENA2 – default 0 • PLK_CENA – naplníme z getPriceList • PLK_ID_PLU – naplníme z getPriceList, vyhľadáme cez kód PLU • PLK_CISLO_KASY – budeme napĺňať pre povolené kasy v externom systéme • PLK_DOTY – default 0 • PLK_LOY_CREDIT – default 0 • PLK_PORADIE – default 99 • PLK_ZMENA - T • PLK_CENOVA_HLADINA – default 1

Pri ukladaní ceny platí, že sa vytvárajú záznamy pre všetky PLU a všetky pokladne.

  • Správa PLU v BGM

V prvej faze nebudeme nič obmedzovať.

  • Odoslanie dokladov do SPIN

Odoslanie dokladov bude prebiehať okamžite po jeho vytvorení. Odoslaním dokladu sa myslí volanie insertDodaciList(XML_IN, XML_OUT). Odosielať sa budú len doklady s položkami prepojenými na externý systém. Pri odosielaní budeme postupovať podobne ako pri iných externých systémoch, čo znamená, že si vytvoríme tabuľky kde budeme zapisovať:

1. ERP_CASHDESK_BILL – Doklady, ktoré budeme odosielať a navrátené hodnoty 2. ERP_CASHDESK_BILL_LOG - Logovaciu tabuľku

ERP_CASHDESK_BILL – do tabuľky sa budú zapisovať iba doklady, ktoré majú položky z ERP: • Id dokladu - z K_DENNY_UCET • Dátum a čas úspešného odoslanie • Číslo dokladu – vráti SPIN v rámci odpovede na volanie insertDodaciList hodnota cislo_dokladu • Vyradený – dátum a čas – ak je naplnený, je vyradený z odosielania ERP_CASHDESK_BILL_LOG – je logovacia tabuľka, kde sa budú zapisovať všetky úspešné aj neúspešné volanie • Id dokladu - z K_DENNY_UCET • Chyba komunikácie – True/False – True len v prípade, že nám nepríde odpoveď z ERP • Chyba – True/False – True len v prípade, že nám v rámci odpovede na volanie insertDodaciList príde Typ E • Kód chyby –vráti SPIN v rámci odpovede na volanie insertDodaciList hodnota kod • Popis chyby (1000) – vráti SPIN v rámci odpovede na volanie insertDodaciList hodnota text

To či sa doklad podarilo odoslať budeme vidieť na tom, že v tabuľke budeme mať zapísané číslo dokladu. V prípade, že nám vráti chybu zapíšeme si jej kód a popis chyby. Pri neúspešnom odoslaní sa o opätovné odoslanie pokúsi job, pričom job sa bude pokúšať odoslať všetky doklady, ktoré nemajú ešte číslo dokladu a zároveň nemajú naplnený stĺpec vyradený.

Základný popis: Vstupné xml popisuje vydaje.dtd <vydaje> <mandant atributy .../> - nebudeme používať <vd atributy .../> <riadok_vd atributy.../> </vd> </vydaje>

Popis elementu vd • kod_dd – vytiahneme z natavenia externého systému • typ_dokladu – vytiahneme z nastavenia externého systému • int_kod – vytiahneme z nastavenia externého systému • datum – dátum z K_DENNY_UCET, DUC_VYHOTOVENY • os - vytiahneme z nastavenia externého systému • mena – z nastavenia systému, domáca mena Popis elementu riadok_vd – použijeme iba nasledovné atribúty • produkt – predstavuje kod plu, tabulka G_PLU, stlpec PLU_KOD_PLU • mnozstvo – mnozstvo z K_DENNY_UCET_POLOZKA, DUP_MNOZSTVO • predaj_cena – cena po zlave z K_DENNY_UCET_POLOZKA, DUP_CENA_SUMA_ZLAVA • os - vytiahneme z nastavenia externého systému

Návratovú hodnotu popisuje stav.dtd <stavy atribúty... > <stav atribúty.../> </stavy>

Popis elementu stavy • nazov_suboru - nepoužiejem • datum - nepoužijeme Popis elementu stav o poradie_dokladu - nepoužijeme o cislo_dokladu – zapíšeme do ERP_CASHDESK_BILL o typ - typ stavu spracovania : E=chyba, W=upozornenie, B=bez chýb, zapíšeme do ERP_CASHDESK_BILL_LOG o Kod - číslo chyby / upozornenia (kod=0 - O.K., kod<0 - chyba, kod>0 upozornenie), zapíšeme do ERP_CASHDESK_BILL_LOG o text – popis chyby, zapíšeme do ERP_CASHDESK_BILL_LOG

  • Manuálne odoslanie DL a denných uzávierok

Vytvoríme funkciu Odoslanie dokladov do ERP. Táto funkcia zobrazí primárne denné uzávierky. Grid bude obsahovať: • Stĺpce o číslo uzávierky o dátum uzávierky o pokladňu o Počet dokladov / počet odoslaných dokladov / počet odmietnutých dokladov o Sumu uzávierky o Zapísaná v ERP - dátum • Filtre o Pokladňa o dátum od, dátum do • Tlačidlá o Odoslať doklad – aktívne len vtedy, ak nie je nejaký doklad v rámci uzávierky odoslaný, alebo nie je zapísaná uzávierka. V rámci odoslania sa pokúsi robiť obe odoslania t.j. aj neodoslaných dokladov aj uzávierok. Odosielajú sa len DL, ktoré nie sú odoslané a zároveň nie sú odmietnuté. o Doklady – ak na to stlačím, zobrazí mi View s dokladmi

Odoslanie dokladov

View bude obsahovať: • Filtre o Stav – všetky, ostatné možné stavy:  Odmietnutý – sú doklady, ktoré boli v minulosti odmietnuté,  Neodoslaný – sú doklady ktoré ešte neboli odoslané a zároveň neboli odmietnuté

• Tlačidlá o Odoslať – odošle vybraný doklad o Odmietnuť – nastaví dátum a čas odmietnutia do ERP_CASHDESK_BILL, ak bude doklad odmietnutý, tak tlačidlo bude vedieť toto odmietnutie zrušiť. o Zobraziť – zobrazí doklad o História – zobrazí dialóg s gridom kde bude história odosielania • Stĺpce o Účet o Vyhotovený o Suma o Odmietnutý o Pokladňa o Odoslaný

Dialóg história s názvom História odosielania, bude obsahovať informácie o priebehu odosielania, čiže grid so: • Stĺpcami: o dátum a čas o chyba komunikácie o kód chyby o popis chyby • Tlačidlami: o Pozri – po stlačení zobrazí dialóg s celým popisom chyby o Zatvoriť

  • BGM – doplnenie informácií

Do BGM pribudnú informácie o odoslaných dokladoch a odoslaných uzávierkach. Tieto informácie pribudnú ako stĺpce do denných a archívnych účtov a denných uzávierok. Okrem toho doplníme tlačidlo História pre zobrazenie odosielania.

  • Archívne denné účty

Doplníme stĺpce: • Dátum a čas odoslania ERP • číslo dokladu z ERP

  • Archívne uzávierky

Doplníme stĺpec: • Dátum a čas odoslania do ERP • ID doklad SPIN

  • Kontrola komunikácie s ERP

Pre kontrolu komunikácie s ERP sa vytvorí špeci funkcia v kontrole. Táto funkcia bude zobrazovať všetky výsledky z logovacích tabuliek. Bude obsahovať nový grid.

Filtre: • Dátum od – predplní aktuálny deň • Dátum do – predplní aktuálny deň • Pokladňa – vyberač

Stĺpce: • Kasa • Dátum a čas • Číslo dokladu • Vyhotovený • Odoslaný • Druh správy • Číslo dokladu v ERP • Chyba komunikácie • Číslo chyby • Popis chyby

  • Denná uzávierka

Hlavnou úlohou dennej uzávierky je vytvoriť podklad pre odpis a uzavrieť kumulatívy. Pre potreby retailovej kasy sa pridajú ďalšie funkcie: 1. Zápis pokladničného dokladu na strane SPINEX 2. Kontrola odoslania dodacích listov

  • Zápis dennej uzávierky

Pri spustení systémovej dennej uzávierky sa zároveň zavolá služba insertPokDoklad(XML_IN, XML_OUT) – WS vytvorí štandardný pokladničný doklad - hlavičku s položkami pokl.dokladu a paragónmi. Vstup pokladnicne_doklady.dtd – obsahuje údaje pre vytvorenie pokladničného dokladu Výstup import_pd.dtd – obsahuje informácie o priebehu spracovania

Rovnako ako pri zápise predajov pri účtenke si budeme viesť záznamy aj o zápise pokladničného dokladu resp. dennej uzávierky. Pre tento účel vytvoríme tabuľku: ERP_CASHDESK_CLOSING. Do tejto tabuľky si budeme zaznamenávať: • Id uzávierky • Datum a čas zápisu – iba ak prebehol • Id dokladu zo spinu

V prípade, že nepríde k zápisu, vytvoríme job, ktorý sa o odoslanie bude pokúšať znova.

Vstup, popis: <pokladnicne_doklady> <pokladnicny_doklad atributy ...> <paragon atributy ...> <polozka_pg atributy ...> </polozka_pg> </paragon> <polozka_pd atributy ...> </polozka_pd> </pokladnicny_doklad> <pokladnicne_doklady> Popis atribútov: Element pokladnicny_doklad • skratka_pk – vytiahneme z nastavenia externého systému • druh_pd – vytiahneme z nastavenia externého systému • datum_pd – uza_datum – dátum uzávierky • ucel_pd – nastavenie externého systému Element paragon • cislo_pg – id uzávierky – G_UZAVIERKA, uza_cislo_kasy • datum_pg – uza_datum – dátum uzávierky • danovy_doklad – vždy A Element polozka_pg – je sumár tržieb za dennú uzávierku, členené podľa účtovných druhov a sadzieb DPH • skratka_typu_ppg – vysvetlené nižšie Výpočet položiek pre paragon • suma_ppg - Suma s DPH • sadzba_ppg – sadzba • importdd_tpdp_code Element polozka_pd – je sumár tržieb za dennú uzávierku, členené podľa platieb • skratka_typu_ppd • suma_ppd

  • Výpočet položiek pre paragon

Táto časť sa skladá z troch častí: 1. Tržby dennej uzávierky delených podľa účtovných druhov a sadzieb DPH, vtedy bude platiť, že do: a. importdd_tpdp_code budeme skladat 'Z'||k_denny_ucet_polozka.dup_sadzba_dph b. skratka_typu_ppg – sem naplníme kód účtovného druhu

Výpočet: Select g_uzavierka.uza_id_uzavierky, g_uctovny_druh.udr_kod as skratka_typu_ppg, -- uctovny druh k_denny_ucet_polozka.dup_sadzba_dph as sadzba, -- sadzba DPH sum (k_denny_ucet_polozka.dup_cena_suma_zlava) - round((sum (k_denny_ucet_polozka.dup_cena_suma_zlava)*dup_sadzba_dph)/(dup_sadzba_dph+100),2) as suma_ppg, -- suma bez dph 'Z'||k_denny_ucet_polozka.dup_sadzba_dph as importdd_tpdp_code from k_denny_ucet_polozka join k_denny_ucet on k_denny_ucet.duc_id_ucet = k_denny_ucet_polozka.dup_id_ucet join g_uzavierka on g_uzavierka.uza_id_uzavierky = k_denny_ucet.duc_id_uzavierka join G_PLU on g_plu.plu_id_plu = k_denny_ucet_polozka.dup_id_plu join g_uctovny_druh on g_uctovny_druh.udr_id = g_plu.plu_id_uctovny_druh where g_plu.plu_typ <> 'ZL' and g_uzavierka.uza_typ_uzavierky = 'D' and UZA_ID_UZAVIERKY = 1 group by g_uctovny_druh.udr_kod,k_denny_ucet_polozka.dup_sadzba_dph, g_uzavierka.uza_id_uzavierky order by 1

2. Druhá časť bude obsahovať hodnoty DPH za sadzby, pričom: a. skratka_typu_ppg sem budeme vkladať kód nastavenia sadzby DPH z nastavenia externého systému b. importdd_tpdp_code sem budeme vkladať kód nastavenie DPH v nastaveniach ext. systému

Výpočet: select

UZA_ID_UZAVIERKY,
DUPD_VAT_RATE as sadzba, -- sadzba DPH
sum(DUPD_VAT_sum) as suma_ppg
from
K_DENNY_UCET_PLATBA_DPH
join   K_DENNY_UCET on DUC_ID_UCET = DUPD_ACCOUNT_ID
join G_UZAVIERKA on UZA_ID_UZAVIERKY = DUC_ID_UZAVIERKA
join K_DENNY_UCET_PLATBA on DUA_ID = DUPD_PAYMENT_ID

where  UZA_ID_UZAVIERKY = 1
and   DUA_ID_SPOSOB_PLATBY = 1
group by UZA_ID_UZAVIERKY, DUPD_VAT_RATE

3. Tretia časť bude obsahovať halierové vyrovnanie t.j. celková suma uzávierky S DPH a z toho odpočítame sumu z predchádzajúcich dvoch bodov

Výpočet hodnoty uzávierky: select UZA_SUMA from G_UZAVIERKA where UZA_ID_UZAVIERKY = 1 7.4.1.2 Výpočet položiek pre pokladničný doklad

Ide o element polozka_pd, tento element obsahuje tržby dennej uzávierky členené podľa platby bez hotovosti. Tieto dáta vieme vytiahnuť priamo z dát, z tabuľky G_predaj_trn: select g_sposob_platby.spl_id_sposob_platby, g_sposob_platby.spl_text_platby as skratka_typu_ppd, -- hodnotu naplním do skratka_typu_ppd g_predaj_trn.ptr_suma as suma_ppd – hodnotu doplním do suma_ppd from G_PREDAJ_TRN join g_sposob_platby on g_predaj_trn.ptr_id_trn = g_sposob_platby.spl_id_trn where g_sposob_platby.spl_kod_platby <> 'H' and spl_id_sposob_platby > 1 and g_predaj_trn.ptr_id_uzavierky = 1

  • Kontrola odoslania dodacích listov

Kontrola odoslania dodacích listov bude prebiehať pri každej uzávierke ako jeden z prvých krokov, zaradí sa hneď za kontrolu odoslania dokladov do fiskalu.

  • Aktuálny stav zásob
  • Zoznam všetkých tovarov

Funkcia bude na pokladni, umožní obsluhe zobraziť aktuálny stav zásob. V prvej fáze budeme vedieť zobraziť iba stavy zásob predvoleného skladu v externom systéme.

Vstupné parametre metódy getStockStatus, mandant aj kód skladu sa nachádzajú v nastaveniach externého systému. V tejto funkcií počítam s tým, že budeme zobrazovať stavy zásob iba tých PLU (produktov), ktoré máme importované v systéme.

  • Popis služby getStockStatus

Vstupné parametre (params.dtd): • mandant_id – predstavuje id mandanta z nastavenia externého systému • kod – predstavuje kód skladu z nastavenia externého systému

Návratová hodnota stavyskladov.dtd: <stavyskladov> <mandant atributy .../> - nebudeme využívať <stavyskladu atributy ...> <skladovakarta atributy .../> </stavyskladu> <davka atributy .../> </stavyskladov>

Popis atribútov elementu stavyskladu • sklad – číslo skladu – nebudeme používať • nazov – názov skladu – využijeme pri výpise Popis atribútov elementu skladovakarta • produkt – kód produktu • mnozstvo - množstvo produktu na sklade • sklad_cena – nebudeme využívať Popis atribútov elementu davka – z dávky budeme využívať iba • typ – typ stavu spracovanie: E-chyba, W-upozornenie • kod – číslo chyby • text – popis chyby

  • Popis riešenia stavy skladov na pokladni (iba klient KASA)

V časti Ostatné na kase pribudne funkcia, Stav skladu ERP.

Po stlačení tlačidla sa zavolá služba getStockStatus následne sa zobrazí View s: Filtrom: • Kód PLU • Názov • Vedľa filtra by bola fajka – fulltext – ak by bola check, tak by sa vyhľadávalo v názve položiek fulltextovo Stĺpce: • Kód PLU • Názov tovaru • Kód v ext. systéme • Množstvo • Predajná cena

V prípade, že nám ERP vráti chybu, my túto chybu zobrazíme na pokladni, pričom využijeme hodnoty v elemente davka, konkrétne kód a popis chyby.

  • Aktuálny stav zásob tovaru

Ide o zobrazenie aktuálneho stavu zásob, aktuálneho PLU resp. tovaru. Funkcia sa bude volať z klienta z PopUp menu PLU na pokladni. Pre tento účel pribudne tlačidlo Stav zásob. Po stlačení sa zobrazí aktuálny stav v SPINe. Pôjde o jednoduchý dialóg.

V tomto prípade budeme volať službu getProductPositions.

  • Popis služby getProductPositions

Vstupné parametre (params.dtd): • mandant_id – predstavuje id_mandanta, budeme vyberať z nasavenia externého systému • kod – predstavuje kód produktu za ktorý dostanem stav zásob


Návratová hodnota produkty_pozicie.dtd <produkty_pozicie> <mandant atributy.../> - nebudeme využívať <produkt_pozicia atributy.../> <davka atributy.../> </produkty_pozicie>

Popis atribútov elementu produkt_pozicia • produkt - kód produktu • kod_skladu – kód skladu • mnozstvo – množstvo produktu na podkarte • mnozstvo_disp – disponibilné množstvo produktu Popis atribútov elementu davka – z dávky budeme využívať iba • typ – typ stavu spracovanie: E-chyba, W-upozornenie • kod – číslo chyby • text – popis chyby

  • Popis riešenia aktuálny stav zásob na pokladni (klient Kasa)

Funkcia bude dostupná cez popup PLU naťaženého v účte. Po stlačení tlačidla sa zobrazí dialóg kde budeme zobrazovať všetky výsledky ktoré nám ERP zašle, t.j. stav zásob na všetkých skladoch.

V samotnom dialógu sa bude zobrazovať: Názov: Akt. stav zásob PLU názov PLU (kód produktu) Pod nadpisom bude grid so stĺpcami: • Kód skladu • Množstvo • Disp. Množstvo

V prípade, že nám ERP zašle na dopyt chybu, nachádzajúcu sa v elemente davka.

Príklady

Príklady slúžia len na základnú ilustráciu štruktúry XML súborov. Každá časť sa skladá z 2 častí oddelených čiarou. Prvá časť reprezentuje vzorové vstupné XML a druhá výstupné XML.

Produkty

<?xml version="1.0" encoding="windows-1250"?>

<params>

<mandant mandant_id="242642"/>

<param dt="01.04.2013 00:00:00"/>

</params>

_____________________________________________________

<?xml version="1.0" encoding="windows-1250" ?>

<produkty>

 <mandant mandant_id="242642" int_kod="31560636" ICO="31560636"/>
 <produkt id="23549832" kod="121723" nazov="SNOW STAR JILL PT" typ="T" sadzba_dph="20" 

typ_dph="Z29H T20" uct_druh="TMT" mj="ks" kategoria="102" sklad_pol="A" seria="0" expiracia="0" internet="N" platnost="A">

   <produkt_vuep vuep_kod="POCITADLO" vuep_cishod="E"/>
   <produkt_vuep vuep_kod="ZNACKA" vuep_cishod="ETIREL"/>
   <produkt_vuep vuep_kod="VELKOST" vuep_cishod="128"/>
   <produkt_vuep vuep_kod="TYP" vuep_cishod="jr"/>
   <produkt_vuep vuep_kod="DODKOD" vuep_hod="825001945128"/>
   <produkt_vuep vuep_kod="FARBA1" vuep_cishod="45-AQUA"/>
 </produkt>
 <produkt id="23549840" kod="124003" nazov="SEVENTWENTY ENZO JK M" typ="T" sadzba_dph="20" 

typ_dph="Z29H T20" uct_druh="TMT" mj="ks" kategoria="101" sklad_pol="A" seria="0" expiracia="0" internet="N" platnost="A">

   <produkt_vuep vuep_kod="POCITADLO" vuep_cishod="E"/>
   <produkt_vuep vuep_kod="ZNACKA" vuep_cishod="FIREFLY"/>
   <produkt_vuep vuep_kod="VELKOST" vuep_cishod="L"/>
   <produkt_vuep vuep_kod="TYP" vuep_cishod="m"/>
   <produkt_vuep vuep_kod="DODKOD" vuep_hod="832047146900"/>
   <produkt_vuep vuep_kod="FARBA1" vuep_cishod="46-DARK BLUE"/>
 </produkt>
 <produkt id="23549860" kod="107781" nazov="montaz viazania" typ="S" sadzba_dph="20" 

typ_dph="Z29H T20" uct_druh="TMServis" mj="ks" kategoria="TMServis" sklad_pol="N" seria="0" expiracia="0" internet="N" platnost="A">

   <produkt_vuep vuep_kod="POCITADLO" vuep_cishod="E"/>
 </produkt>
 <produkt id="23549869" kod="AVK" nazov="Aktivácia vernostnej karty" typ="S" sadzba_dph="20"
typ_dph="Z29H T20" uct_druh="TMAVK" mj="ks" sklad_pol="N" seria="0" expiracia="0" internet="N" platnost="A">
   <produkt_vuep vuep_kod="POCITADLO" vuep_cishod="E"/>
 </produkt>
 <davka nazov="Spracovanie dávky PRODUKTY cez WS" datum="03.04.2013 08:25:46" pocet="4" error="0" typ="B" kod="0" text=""/>

</produkty> 8.2.2 Stavy na skladoch <?xml version="1.0" encoding="windows-1250"?> <params> <mandant mandant_id="242642"/> <param kod="TMNT441600"/> </params> _____________________________________________________

<?xml version="1.0" encoding="windows-1250" ?> <stavyskladov>

 <mandant mandant_id="242642" int_kod="31560636" ICO="31560636"/>
 <stavyskladu sklad="TMNT441600" nazov="TM NT - Biela púť">
   <skladovakarta produkt="121723" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="127267" mnozstvo="998" sklad_cena="31.8876"/>
   <skladovakarta produkt="121762" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121761" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121760" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121759" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121726" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121725" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="121724" mnozstvo="999" sklad_cena="14.54899"/>
   <skladovakarta produkt="124004" mnozstvo="998" sklad_cena="33.18336"/>
   <skladovakarta produkt="124003" mnozstvo="998" sklad_cena="33.18336"/>
   <skladovakarta produkt="127269" mnozstvo="998" sklad_cena="31.8876"/>
 </stavyskladu>
 <davka nazov="Spracovanie dávky STAVYSKLADOV cez WS" datum="03.04.2013 09:17:06" pocet="1" error="0" typ="B" kod="0" 

text=""/> </stavyskladov>

Cenníky

<?xml version="1.0" encoding="windows-1250"?> <params> <mandant mandant_id="242642"/> <param kod="MOC" dt="03.04.2013 00:00:00"/> </params> _____________________________________________________

<?xml version="1.0" encoding="windows-1250" ?> <cenniky> <mandant mandant_id="242642" int_kod="31560636" ICO="31560636"> </mandant>

<cennik druh_ceny = "MOC" nazov = "TM - MOC" typ = "O" mena = "EUR" dph = "A">

<cena kod = "127269" cena = "102.996" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "127267" cena = "102.996" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "124004" cena = "79.992" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "124003" cena = "79.992" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121759" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "111325" cena = "9.996" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "E00001" cena = "30" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "107781" cena = "15" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "S00001" cena = ".996" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" /> <cena kod = "AVK" cena = "5.004" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121723" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121760" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121761" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121762" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121724" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121725" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "121726" cena = "35.988" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

<cena kod = "TMSKOLA20110004T" cena = "48" platnost_od = "02.04.2013" platnost_do = "" int_kod = "" typ_ceny = "" mnozstvo = "0" />

</cennik>

<davka nazov = "Spracovanie dávky objednávok cez WS. " datum = "03.04.2013 08:56:02" pocet = "1" error = "0 " typ = "B" kod = "0" text = "" />

</cenniky>

Dodacie listy

<?xml version="1.0" encoding="windows-1250" ?> <vydaje>

 <mandant mandant_id="242642" />
 <vd kod_dd="TMNDK" typ_dokladu="DL" int_kod="TMNT" datum="03.04.2013" sklad="TMNT441600" os="441600" mena="EUR" >
   <riadok_vd produkt="124004" mnozstvo="1" predaj_cena="70.00" os="441600" rabat="0" typrabatu="P" rabat2="0" typrabatu2="P" />
   <riadok_vd produkt="127269" mnozstvo="1" predaj_cena="64.00" os="441600" rabat="0" typrabatu="P" rabat2="0" typrabatu2="P" />
   <riadok_vd produkt="127267" mnozstvo="1" predaj_cena="77.00" os="441600" kod_us="TMT" rabat="0" 

typrabatu="P" rabat2="0" typrabatu2="P" />

   <riadok_vd produkt="124003" mnozstvo="1" predaj_cena="87.00" os="441600" kod_us="TMT" rabat="0"

typrabatu="P" rabat2="0" typrabatu2="P" />

 </vd>

</vydaje> _____________________________________________________

<?xml version="1.0" encoding="windows-1250" ?>

<stavy nazov_suboru="Výdaje - WS import" datum="03.04.2013 08:48:09">

 <stav poradie_dokladu="1" cislo_dokladu="TMN600130002" typ="B" kod="0"/>

</stavy>

Pokladničné doklady

<?xml version="1.0" encoding="windows-1250"?>

<!DOCTYPE pokladnicne_doklady SYSTEM "pokladnicne_doklady.dtd">

<pokladnicne_doklady>

<pokladnicny_doklad skratka_pk="3169" druh_pd="P" datum_pd="20.08.2013" ucel_pd="uzavierka pokladne">

<paragon cislo_pg="224" datum_pg="20.08.2013" danovy_doklad="A">

<polozka_pg skratka_typu_ppg="UCTDRUH1" suma_ppg="100.00" sadzba="20" importdd_tpdp_code="Z20" skratka_os="1"></polozka_pg>

<polozka_pg skratka_typu_ppg="UCTDRUH2" suma_ppg="200.00" sadzba="20" importdd_tpdp_code="Z20" skratka_os="1"></polozka_pg>

<polozka_pg skratka_typu_ppg="DPH2" suma_ppg="60.00" sadzba="20" importdd_tpdp_code="D2" skratka_os="1"></polozka_pg>

<polozka_pg skratka_typu_ppg="HALVYR" suma_ppg="0.03" sadzba="0" importdd_tpdp_code="Z0" skratka_os="1"></polozka_pg>

</paragon>

<polozka_pd skratka_typu_ppd="KARTA" suma_ppd="75.00" skratka_os="1"></polozka_pd>

</pokladnicny_doklad>

</pokladnicne_doklady>