======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===== [[http://www.etrzby.cz/cs/odkdy-evidovat-trzby]] ===== Tiskárna pokladních dokladů ===== Je požadována tiskárna podporující {{:ruzne:escpos.pdf|ESC/POS}} a virtuální nebo fyzický COM port. ==== Postup pro Epson TM-T20II ==== * připojit přes USB * vytvořit {{:ruzne:tmvirtualportdriver850a.zip|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 ==== cmd /c "copy %s com4:" notepad "%s" ===== 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 [[firebird:setenv|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 <$LOGDIR/$LOG.daily 2>&1 Login $USER $PASSWORD $DATANAME "Client:eetsend.sh" 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" Exit 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/[[firebird:setenv|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")))