======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")))