Obsah
EET
Základní informace
Problematiku EET v OBISu řeší nová tabulka, která je přístupná jako záložka v okně dokladů/faktur a v okně úhrad. V lokálním menu jsou pak k dispozici funkce v sekci Elektronická evidence tržeb.
Pro správné fungování EET je třeba na Daňovém portálu podat ŽÁDOST O AUTENTIZAČNÍ ÚDAJE DO EET. Na základě přidělených přihlašovacích údajů se pak v sekci SPRÁVA ÚDAJŮ EVIDENCE TRŽEB vytvoří certifikát a provozovny. Certifikát se v OBISu nahraje do souboru obis/etc/eet_cert.p12. Konkrétní provozovnu si každý uživatel OBISu vydávající účtenky nastaví v okně Faktury/doklady - záložka Nastavení - Označení provozovny.
Daňový portál: https://adisepo.mfcr.cz/adistc/adis/idpr_pub/eet/eet_sluzby.faces
Certifikát je zabezpečen heslem. Před prvním použitím v OBISu je třeba jej odemknout a uložit heslo funkcí lok. menu ve fakturách Odemčení/uzamčení certifikátu EET.
Nová provozovna
Na Daňovém portálu https://adisepo.mfcr.cz/adistc/adis/idpr_pub/eet/eet_sluzby.faces sekce SPRÁVA ÚDAJŮ EVIDENCE TRŽEB odkaz PROVOZOVNY. Zde použít tlačítko Nová provozovna
Jednoduchý postup pro občasné tržby
- běžným způsobem se vytvoří hotovostní příjmový doklad nebo hotovostní úhrada faktury
- následně se použije funkce lok. menu Registrace tržby EET v dokladech nebo úhradách
- systém zobrazí údaje, které budou na server odeslány
- potvrdíme odeslání na server tlačítkem Odeslat tržbu (případně lze v tomto okamžiku naposledy registraci zrušit)
- nakonec se vytiskne tisková sestava v dokladech Příjmový/výdajový doklad resp. Pokladní doklad k faktuře v úhradách, kde budou v případě zaregistrování platby vytištěny požadované údaje EET
- doklad reps. úhradu spárovanou s registrovanou tržbou nelze v OBISu smazat
Nastavení číselníku DPH pro EET
- číselník DPH musí mít vyplněn sloupec Kód přiznání DPH
- pro běžné sazby je to kód vyssi resp. nizsi
- zaokrouhlení musí mít sazbu DPH nevyplněnu (tj. prázdno a nikoliv hodnota 0)
- pro přenesenou daňovou povinnost kód prenesenidod
- penále/pokuty s 0 DPH kód dodaniost
- dárkové poukazy na neurčené zboží/služby DPH prázdno "", kód cerpzuct
Postup pro prodejny
- upravíme Vám uživatelsky tiskovou sestavu, která se při tisku automaticky zaregistruje a vytiskne požadované údaje EET
- tyto automaticky registrované tisky účtenek lze realizovat také z výdejek skladu nebo výkonových protokolů
- obsluha tedy obvyklým způsobem vytvoří např. výdejku a následný automatický tisk účtenky zajistí vše potřebné
Problémy při odesílání registrace na server
V případě že nelze tržbu odeslat na server (výpadek internetu nebo serveru) je tržba uložena v záložce EET v OBISu, ale nemá přiřazen tzv. FIK. V této situaci lze vytisknout účtenku bez FIK ale s tzv. PKP. Poplatník je povinen neprodleně po obnovení spojení všechny neodeslané účtenky zaregistrovat. Toto lze uživatelsky zajistit pomocí funkce lok. menu Odeslání neodeslaných tržeb EET. Doporučujeme nastavit automatickou kontrolu a odeslání na serveru např. v hodinových intervalech.
Kontrola EET
Na daňovém potrálu lze získat data o zaregistrovaných platbách. Tyto údaje lze porovnat s tiskovou sestavou v modulu faktury/doklady Tržby EET.
Minoritní činnost EET
Tiskárna pokladních dokladů
Je požadována tiskárna podporující ESC/POS a virtuální nebo fyzický COM port.
Postup pro Epson TM-T20II
- připojit přes USB
- vytvořit virtuální com port (ve Win10 bylo nutné aktualizovat ovladač v seznamu zařízení)
- nastavit rawprint v apps.xml
- zaregistrovat EET pomocí lok. menu v hotovostním dokladu a vytisknout system report z faktur Prodejka na pokladní tiskárnu
- pro automatickou registraci vytvořit kopii prodejky a do typu tisku vložit následující LUA kód:
@cf.trydofile(LUADIR().."faktury/faktury_faktury-reports.lua") faktury_faktury.reports.TiskDokladuRegistraceEET(DSI, Form, Action, ReportName, Use, Name, true)
apps.xml
<App Name="raw_print_print"> <Command Platform="Windows">cmd /c "copy %s com4:"</Command> </App> <App Name="raw_print_preview"> <Command Platform="Windows">notepad "%s"</Command> </App>
Automatická kontrola a odeslání neodeslaných EET tržeb
Varianta 1 - vizuálně v programu OBIS
- v lok. menu Faktury → EET → Aktivovat automatické odesílání neodeslaných tržeb
- nejvhodnější je varianta "Zobrazit je výsledek" kdy se v případě odeslání tržeb zobrazí okno s informací, které tržby byly odeslány
- tato funkce je aktivní pouze pokud je uživatel přihlášen v OBISu a má odemknutý certifikát (kontrola se spouští každou celou hodinu)
Varianta 2 - nevizuální daemon na serveru Linux
- vytvořit uživatele Eet, odemknout certifikát, nastavit setenv.sh
- testovací neregistrovanou tržbu lze vytvořit pokud se dočasně nastaví proměnná: faktury_eet.URL=""
cron.d/obis
45 7-18 * * * obis $SCRIPTSDIR/eetsend.sh || echo "EET send error" 45 6 * * 1-5 obis $SCRIPTSDIR/eetsend.sh eetadmin@domain.cz
Práva pro skupinu Eet
version=3 *.faktury_*=re *.zakazky_*=n *.ucto_*=n *.prost_*=n *.rozpocty_*=n *.partneri_*=n *.sklad_*=n *.majetek_*=n *.dokumenty_*=n *.ukoly_*=n analyza=n kalendar=n globaloption=R
eetsend.sh
#!/bin/sh . `dirname $0`/setenv.sh USER=Eet PASSWORD=$EETPASS DATANAME="data" LOGDIR=$ROOTDIR/log PID=eetsend.pid LOG=eetsend.log CONDEBUG=eetsend.condebug DEBUG="-debug 2 -log $LOGDIR/$CONDEBUG" pgrep -f $PID if [ $? -eq 0 ]; then ps ax | grep $PID echo nelze spustit $@ - jiz bezi exit 1 fi cat <<EOF | $ROOTDIR/bin64/obiscserver.bin $DEBUG -savepid $LOGDIR/$PID -notrigger -noxmlrpc -stdin -documentdir $DOCUMENTDIR >$LOGDIR/$LOG.daily 2>&1 Login $USER $PASSWORD $DATANAME "Client:eetsend.sh" <EOF/> Program "osex.dofile(LUADIR()..'debug.lua') DEBUG.Init() --ClientSession:SetOption('FakturyDM.eet_id_provoz','11') --faktury_eet.SetPassword('heslo', '1') assert(not faktury_eet.NeedAskPassword(),'NENI ODEMCENY CERTIFIKAT') DEBUG:Add(osex.date()) local cert, key = faktury_eet.GetCertAndKey() local ret, DaysRemain = faktury_eet.CheckCert(cert, DEBUG) local Ok, tSendIDs=faktury_eet.SendSavedTrzba(DEBUG) faktury_eet.RecalcSrcDokl(tSendIDs, DEBUG) if not Ok then error('faktury_eet.SendSavedTrzba not Ok') end" <EOF/> Exit <EOF/> EOF STATUS=$? if [ $STATUS -ne 0 ]; then echo "--- EXIST STATUS $STATUS" >> $LOGDIR/$LOG.daily echo "--- CONDEBUG" cat $LOGDIR/$CONDEBUG echo "--- STDOUT" cat $LOGDIR/$LOG.daily fi echo `date` >> $LOGDIR/$LOG cat $LOGDIR/$LOG.daily >> $LOGDIR/$LOG #kontrola a warningy emailem if [ -n "$1" ]; then egrep "(CW:|W:|E:)" $LOGDIR/$LOG.daily > /tmp/$$ [ -s /tmp/$$ ] && cat /tmp/$$ | mail -s 'Chyby EET send' $1 rm /tmp/$$ fi exit $STATUS
Kontrolní SQL v nočních přepočtech
- scripts/setenv.sh
- cron.d/obis:
04 06 * * * obis /home/obis/obis5/user/scripts/showeet.sh kontrola || echo "chyba showeet.sh"
- ruční ověření: /home/obis/obis5/user/scripts/showeet.sh
showeet.sh
#!/bin/sh #ROOTDIR,FIREBIRD,SCRIPTSDIR,DATAFILES . `dirname $0`/setenv.sh MAILTO=jmeno@domain.cz for DATA in $DATAFILES; do if [ "$1" != "kontrola" ]; then echo echo DATA $DATA $FIREBIRD/bin/isql -u sysdba -p $ISC_PASSWORD -i $SCRIPTSDIR/eet.sql $DATABASEPATH/$DATA fi $FIREBIRD/bin/isql -u sysdba -p $ISC_PASSWORD -i $SCRIPTSDIR/eet_kontrola.sql $DATABASEPATH/$DATA > $ROOTDIR/log/eet_kontrola_$DATA.daily.log if [ "$1" != "kontrola" ]; then echo KONTROLA historie tail -n7 $ROOTDIR/log/eet_kontrola_$DATA.log echo KONTROLA aktualne cat $ROOTDIR/log/eet_kontrola_$DATA.daily.log else [ -s $ROOTDIR/log/eet_kontrola_$DATA.daily.log ] && cat $ROOTDIR/log/eet_kontrola_$DATA.daily.log | mail -s "Chyby EET $DATA" $MAILTO echo "showeet.sh kontrola `date`" >>$ROOTDIR/log/eet_kontrola_$DATA.log cat $ROOTDIR/log/eet_kontrola_$DATA.daily.log >> $ROOTDIR/log/eet_kontrola_$DATA.log fi done
eet_kontrola.sql
SELECT 'NEODESLANE CHYBI FIK:', porad_cis, dat_odesl FROM faktury_eet WHERE COALESCE(faktury_eet.fik, '') = '' AND COALESCE(faktury_eet.overeni, 0) = 0 AND dat_trzby>'1.3.2017'; SELECT 'OVEROVACI MOD:', COUNT(porad_cis) FROM faktury_eet WHERE COALESCE(faktury_eet.overeni, 0) = 1 AND dat_trzby>'1.3.2017' GROUP BY 1; SELECT 'CHYBI FIK:', COUNT(porad_cis) FROM faktury_eet WHERE COALESCE(faktury_eet.fik, '') = '' AND dat_trzby>'1.3.2017' GROUP BY 1; SELECT 'ZMENA CENY DOKLAD:', e.porad_cis, e.dat_odesl, e.celk_trzba, f.cenakuhrade FROM faktury_eet e JOIN faktury_faktury f ON f.idfaktura=e.porad_cis WHERE COALESCE(e.fik, '') <> '' AND COALESCE(e.overeni, 0) = 0 AND abs(COALESCE(f.cenakuhrade,0) - COALESCE(e.celk_trzba,0))>1 AND COALESCE(f.priznak,'') NOT LIKE '%N%' AND e.dat_trzby>'1.3.2017' AND e.typdokl='F'; SELECT 'ZMENA CENY UHRADA:', e.porad_cis, e.dat_odesl, e.celk_trzba, u.celkem FROM faktury_eet e JOIN faktury_uhrhl u ON u.iduhrdokl=e.porad_cis WHERE COALESCE(e.fik, '') <> '' AND COALESCE(e.overeni, 0) = 0 AND abs(COALESCE(u.celkem,0) - COALESCE(e.celk_trzba,0))>1 AND COALESCE(u.priznak,'') NOT LIKE '%N%' AND e.dat_trzby>'1.3.2017' AND e.typdokl='U'; SELECT 'ZMENA ZAKLADU VYDEJKA:', e.porad_cis, e.dat_odesl, e.zakl_dan1, e.zakl_dan2, e.zakl_dan3, p.cenapol FROM faktury_eet e JOIN sklad_prijemky p ON p.idprijemka=e.porad_cis WHERE COALESCE(e.fik, '') <> '' AND COALESCE(e.overeni, 0) = 0 AND e.dat_trzby>'1.3.2017' AND abs(COALESCE(p.cenapol,0) - COALESCE(e.zakl_dan1,0) - COALESCE(e.zakl_dan2,0) - COALESCE(e.zakl_dan3,0) )>1 AND COALESCE(p.priznak,'') NOT LIKE '%N%' AND e.typdokl='P'; SELECT 'ZMENA CENY VYDEJKA:', e.porad_cis, e.dat_odesl, e.celk_trzba, p.cenasdph FROM faktury_eet e JOIN sklad_prijemky p ON p.idprijemka=e.porad_cis WHERE COALESCE(e.fik, '') <> '' AND COALESCE(e.overeni, 0) = 0 AND e.dat_trzby>'1.3.2017' AND abs(COALESCE(p.cenasdph,0) - COALESCE(e.celk_trzba,0) )>1 AND COALESCE(p.priznak,'') NOT LIKE '%N%' AND e.typdokl='P';
eet.sql
SELECT COUNT(*) AS CELKEM FROM faktury_eet WHERE COALESCE(overeni,0) = 0 AND dat_trzby>'1.3.2017'; SELECT COUNT(*) AS OVEROVACI_MOD FROM faktury_eet WHERE COALESCE(overeni,0) = 1 AND dat_trzby>'1.3.2017'; SELECT COUNT(*) AS CENA_NULA FROM faktury_eet WHERE celk_trzba =0 AND dat_trzby>'1.3.2017'; SELECT COUNT(*) AS KREGISTRACI FROM faktury_eet WHERE COALESCE(faktury_eet.fik, '') = '' AND COALESCE(faktury_eet.overeni, 0) = 0; SELECT e.id_pokl, u.idvyridil, COUNT(e.id_pokl) AS POCET_REGISTRACI FROM faktury_eet e LEFT JOIN common_uzivatele u ON u.uid=e.id_pokl WHERE COALESCE(e.overeni, 0) = 0 AND dat_trzby>'1.3.2017' GROUP BY 1,2; SELECT FIRST 1 porad_cis, fik, dat_odesl AS LASTREG FROM faktury_eet WHERE COALESCE(overeni,0) = 0 ORDER BY dat_odesl DESC;
Zjisteni hesla k odemceneho certifikatu
- prihlasit jako user: print(ClientSession:UserDecryptString(ClientSession:GetOption("FakturyDM.EET_EncryptedPassword")))