Tax NEWS leden 2019

Tax news_LERIKA

V našem novoročním vydání Tax News se věnujeme vybraným změnám přijatých v souvislosti s daňovým balíčkem 2019 a informujeme vás o novinkách, které si pro nás připravila Poslanecká sněmovna na své schůzi v posledních pracovních předvánočních dnech. Přinášíme shrnutí každoročních parametrických změn nastávajících ve vazbě na zvýšení minimální a průměrné mzdy a nezapomněli jsme ani na cestovní náhrady platné od ledna 2019. Živnostníci a ostatní osoby samostatně výdělečně činné jistě ocení zvýšení limitu pro výdajové paušály. Pro ně přinášíme i informace o platbách záloh na sociální a zdravotní pojištění.

Pdf verze našich Tax News je ke stažení zde: TAX NEWS_01_2019 CZ

 

DAŇOVÝ BALÍČEK 2019

Jak jsme Váš již informovali v posledním čísle Newsletteru v září 2018, Ministerstvo financí připravilo obsáhlý zákon, kterým se mění některé zákony v oblasti daní od roku 2019. Poslanecká sněmovna schválila vládní návrh daňového balíčku ve 3. čtení v poslední předvánoční pracovní den, v pátek 21.12.2019, a to ve znění některých pozměňovacích návrhů, čímž potěšila řadu živnostníků a OSVČ. Pozměňovacími návrhy totiž došlo mimo jiné k navrácení stropů procentuálních výdajů na úroveň platnou pro rok 2017. Daňový balíček 2019 míří do Senátu a musí jej podepsat prezident.

Daň z příjmů

Zásadní změny, týkající se zrušení zdanění prostřednictvím superhrubé mzdy a snahy o zavedení zdaňování příjmů prostřednictvím progresivní sazby daně fyzických osob (19 % a 24 %), neprošly. V navrhovaném balíčku tedy zůstaly především změny vycházející z předpisů EU (implementace tzv. Anti-Tax Avoidance Directive, nebo-li ATAD) zabraňujících agresivnímu daňovému plánování, které jsme vám představili v našem zářijovém vydání Newsletteru.

Jedná se zejména o opatření týkající se omezení daňové odčitatelnosti úroků z úvěrů a půjček, o zdanění přemístění majetku beze změny vlastnictví do zahraničí (tzv. exit tax), o zavedení tzv. CFC Rules zdaňujících příjmy zahraniční ovládané „spící“ společnosti nebo o odstranění hybridních nesouladů různých daňových systémů. Tyto změny byly přijaty více méně v navrženém znění.

V aktuálním vydání Tax News vám představujeme další malou ukázku z toho, co bylo předmětem projednávaného daňového balíčku 2019 a v jakém znění nyní míří balíček do Senátu.

Odpočet na podporu výzkumu a vývoje

Rozpočtový výbor podal pozměňovací návrh, aby záměr uplatnit v základu daně odpočet na podporu výzkumu a vývoje musel být povinně oznámen správci daně. I když se neoznámení těchto okolností nebude pokutovat jakožto nesplnění povinností nepeněžní povahy, pokud tak daňový subjekt neučiní, nebude oprávněn si vynaložené náklady do odpočtu zahrnout. Pozměňovací návrh byl Poslaneckou sněmovnou přijat, stejně jako další zpřísňující pravidla upravující podmínky dokumentace vytvářené pro uplatnění příslušného odpočtu na výzkum a vývoj.

Výdajové paušály

I když se první pokusy opozice o zvýšení omezení pro uplatnění výdajových paušálů nezdařily, tak i přesto poslanci ODS na 24. schůzi Poslanecké sněmovny dne 4. prosince 2018 znovu podali návrh na změnu zákona, který se týkal zvýšení limitu příjmů pro aplikaci výdajových paušálů u OSVČ na 2 mil. Kč. Opoziční poslanci trvají na tom, že by se měly odstraňovat překážky, které se kladou do cesty právě osobám samostatně výdělečně činným. Ministerstvo financí následně oznámilo, že tento návrh podpoří, a tak Poslanecká sněmovna přinesla všem podnikatelům předvánoční překvapení v podobě schválení zvýšení limitů pro výdajové paušály. Velikost uplatnitelných paušálů v rozmezí 40 % až 80 % dle jednotlivých profesí zůstává nezměněná.

Solidární zvýšení daně

Návrh opozice na zrušení tzv. „superhrubé“ mzdy a solidárního zvýšení daně bohužel dle očekávání neprošel. V tomto ohledu zůstane v roce 2019 vše při starém.

Změna výše slevy na poplatníka

Sleva na poplatníka v současnosti představuje 24.840 Kč a je v zákoně o dani z příjmů stanovena ve stejné výši již od novely platné od roku 2008. Tehdy průměr měsíční mzdy v České republice dosahoval 20.957 Kč. Od 1.1.2019 se průměrná měsíční mzda zvyšuje na částku 32.699 Kč. V souvislosti s takto dramatickým nárůstem průměrných mezd proto poslanci představili pozměňovací návrh, který upravoval výši roční slevy na poplatníka na 30.000 Kč. Tento návrh bohužel přijat nebyl a sleva na poplatníka zůstává po staru na zažité výši.

Zdanění mezd

V roce 2019 se zákon o daních z příjmů v oblasti zdanění mezd bude novelizovat pouze nepatrně. Zaměstnavatele bude zajímat změna limitu pro tzv. příjmy ze závislé činnosti malého rozsahu, které se zdaňují srážkovou daní. Daňový balíček totiž tento limit zvyšuje společně se zvýšením hranice pro účast zaměstnanců na nemocenském pojištění na hranici 3.000 Kč. Pozor však na měsíc, od kterého bude tato změna aplikovatelná, s největší pravděpodobností jím bude až únor 2019.

Nad rámec změn zaváděných daňovým balíčkem stojí za zmínku drobná novelizace, která již před Vánoci vyšla ve Sbírce zákonů a která se s účinností od 1.1.2019 týká zaměstnanců, jejichž odměna podléhá odvodům na zdravotní a sociální pojištění dle právních předpisů jiného členského státu EU, EHP nebo Švýcarska. V takovém případě se „superhrubá“ mzda vyčísluje jako součet příjmů ze závislé činnosti a částky odpovídající příspěvkům zaměstnavatele na toto povinné zahraniční pojištění. Opouští se od právní fikce, kdy se v minulosti základ daně z příjmů těchto osob navyšoval paušálně o 34 % coby o hypotetické příspěvky zaměstnavatele do českého sociálního systému, přestože zahraniční zaměstnanec do českého sociálního systému nespadal. Pozor si ale dejte na zahraniční zaměstnance ze 3. zemí (tedy zemí mimo EU, EHP a Švýcarsko), jejich základem daně je stejně jako v minulosti standardní „superhrubá“ mzda, tedy příjem zvýšený o 34 %.

Daň z přidané hodnoty

Změny, které nás čekají v zákoně o DPH, jsou poměrně rozsáhlé a budeme se jim detailněji věnovat na stránkách našich Tax News v průběhu prvních měsíců roku 2019. I když se daňový balíček nestihl dotlačit k tomu, aby změny platily od 1.1.2019, přinášíme vám stručný souhrn, o čem se v návrhu novelizace zákona o DPH jednalo:

  • Pravidla pro vouchery: Víte, kdy uplatnit DPH při prodeji tzv. voucherů, jinak nazývaných také jako poukazy či kupony? Novela zákona o DPH by na to měla dávat odpověď a my se vám ji pokusíme zprostředkovat v našich nejbližších Tax News.
  • Opravy základu daně u nedobytných pohledávek: Novela zákona o DPH rozšiřuje případy, které je možné tzv. „vydobropisovat“ a požádat o vrácení příslušné DPH. Novinkou je umožnění opravy základu daně v případě neúměrně dlouhého insolvenčního nebo exekučního řízení, stejně jako možnost opravy základu daně v případě reorganizace podle insolvenčních předpisů.
  • Finanční leasing: Zbystřit by měly všechny leasingové společnosti. Novelou zákona o DPH se změní i definice finančního leasingu (tzv. pravého leasingu), který je považován za dodání zboží s povinností odvedení DPH při předání předmětu leasingu nájemci. Nově by měl finanční leasing zahrnovat také smlouvy s opcí nájemce (opce k přechodu vlastnického práva), pokud se využití opce jeví jako jediná ekonomicky rozumná volba. Nové pravidla se týkají smluv, které budou uzavřeny po schválení novely, nebo kde k předání předmětu leasingu dojde po účinnosti novely.
  • Služby související s nájmem: Novela zavádí speciální režim u přefakturace služeb, které jsou nakupovány subdodavatelsky a v souvislosti s nájmem jsou dále přeúčtovány. Den uskutečnění zdanitelného plnění u těchto služeb je výslovně definován jako den zjištění skutečné (přefakturované) částky za službu, která byla v souvislosti s tímto nájmem přijata. To se nevztahuje na služby typu dodání tepla, chladu, elektřiny, plynu, vody, odstranění odpadních vod a telekomunikační služby apod.
  • Korekce DPH u významné opravy nemovité věci: Korekce uplatněného odpočtu DPH při změně účelu užití nemovitosti nemá nikdo z nás rád. Návrh novely zákona o DPH nám v tomto směru situaci neusnadnil a doplnil ustanovení, podle kterého by se měla provádět korekce uplatněné DPH také u významné opravy na nemovité věci.

Důvodová zpráva k novele komentuje situaci následovně: „V praxi se úprava odpočtu z tohoto titulu bude vztahovat například na situace, kdy plátce na nemovitosti, kterou používal pro uskutečňování zdanitelných plnění, provedl opravu, u vstupů pro opravu si uplatnil nárok na odpočet daně, a poté nemovitost prodal, přičemž dodání nemovitosti bylo osvobozené od daně bez nároku na odpočet daně.“

Zkoumat se budou opravy, které byly provedeny na nemovité věci v období 10 let před dodáním (převodem) nemovitosti.

  •  Změna sazeb: Daňový balíček 2019 přeřazuje do 10% sazby daně dodání tepla a chladu.

Za připomenutí stojí i změny schválené již v minulosti, které budou uvedeny do praxe od 1.1.2019:

Sdružení (společnost) bez právní subjektivity

S rokem 2018 končí i přechodné období pro uplatňování nových pravidel pro DPH u sdružení (společností) bez právní subjektivity. Mnozí plátci DPH využili přechodných ustanovení, která platila do konce roku 2018, a postupovali podle již zrušené právní úpravy, kdy byla agenda DPH za celou společnost (sdružení) řešena pouze tzv. pověřeným účastníkem. Ten zodpovídal a plnil všechny daňové povinnosti pod svým jménem (podával daňová přiznání k DPH a kontrolní hlášení, vystavoval daňové doklady, vystupoval jako příjemce plnění atd.).

Od 1.1.2019 vystupuje ve sdružení každý účastník sám za sebe. Znamená to, že každý společník je samostatným daňovým subjektem z pohledu zákona o DPH, plátcem či osobou povinnou k dani, uplatňuje „své“ nároky a plní si „své“ povinnosti k DPH vůči finančnímu úřadu sám za sebe. Nově musí každý společník fakturovat plnění zákazníkovi dle svého dohodnutého podílu a nebo, pokud i nadále vystupují společníci vůči zákazníkovi prostřednictvím jednoho vybraného společníka, musí v takovém případě dojít k vyrovnání mezi jednotlivými společníky, které se již bude považovat za předmět DPH.

Datum zdanitelného plnění

Dne 5.12.2018 byla prezidentem podepsaná drobná novela, která upravuje datum uskutečnění zdanitelného plnění. Novela je účinná od 1.1.2019 a týká se poněkud kontroverzní úpravy stanovující povinnost odvést DPH u zdanitelných plnění, která jsou zahájená v jednom roce a nejsou ukončená do 31.12. roku následujícího (§ 21 odst. 8). Podle stávající úpravy musí totiž plátce z takových plnění přiznat a odvést DPH nejpozději k 31.12., přestože žádné vyúčtování nebo fakturace vůči zákazníkovi neproběhla.

Novela zavádí, že tato povinnost se nebude vztahovat např. na soudem (ex offo) ustanovené advokáty a další osoby, kdy úplatu za poskytnutí služby hradí stát. V ostatních případech však povinnost odvést DPH i z nevyfakturovaných plnění nadále trvá.

Protože novelu již potvrdil i prezident, je její vyhlášení ve Sbírce zákonů (podmínka, aby vstoupila v platnost) pouze formalitou.

Sazba DPH 10 % u hromadné přepravy

Dne 27.12.2018 podepsal prezident novelu, která osobní hromadnou přepravu (jízdné ve vlacích, autobusech, přívozech nebo lanovkách) přeřazuje od 1.1.2019 do 10 % snížené sazby. Očekáváme, že mezi datem redakční uzávěrky těchto Tax News a jejich vydáním bude již novela vyhlášená ve Sbírce zákonů.

nikoleta.koprdova@lerika.eu

OSVČ – ZMĚNY, KTERÉ BY NEMĚLY UNIKNOUT

Výdajové paušály 2019

Předvánoční překvapení přinesla Poslanecká sněmovna, která na svém jednání dne 21.12.2019 schválila ve třetím čtení daňový balíček pro rok 2019 ve znění pozměňovacích návrhů, čímž mimo jiné došlo k navrácení stropů procentuálních výdajů na úroveň platnou pro rok 2017.

Živnostníci a ostatní osoby samostatně výdělečně činné se tak mohou těšit, že si za rok 2019 budou moci opět uplatnit paušální výdaje odpovídající procentuální částce z příjmů limitovaných částkou 2 mil. Kč, zatímco v současnosti je to 1 mil. Kč. Maximální limity výdajových paušálů se tak zdvojnásobí.

Daňový balíček 2019 ještě musí projednat Senát a podepsat prezident.

Zálohy na sociální pojištění

Od 1. ledna 2019 dochází ke změnám v právní úpravě v souvislosti s placením záloh na důchodové a nemocenské pojištění („sociální pojištění“).

Zálohy se budou po novu platit v kalendářním měsíci, na který se záloha vztahuje. Platit je bude možné od prvního až do posledního dne daného kalendářního měsíce. Pro upřesnění, v případě platby zálohy za měsíc únor bude záloha splatná už během února (a nikoli až do 20. března, jak to bylo zaužíváno do konce roku 2018). Platba bude muset být na účtu sociální správy připsána v období od prvního do posledního dne měsíce.

Aby nedošlo ke zbytečným komplikacím z důvodu výše zmíněné změny v placení záloh na sociální pojištění, na přelom roku se vztahují přechodná ustanovení zákona.

Na základě přechodného ustanovení platí, že poplatníci nemusí hradit dvě zálohy na pojistné najednou. Záloha za prosinec nemusí být zaplacená vůbec a k vyrovnání doplatku může dojít až při zúčtování záloh v Přehledu o příjmech a výdajích OSVČ za rok 2018. Poplatníkovi bude standardně vyčíslen doplatek, který je splatný do 8 dnů od podání Přehledu. Pokud by se však OSVČ rozhodla zálohu za prosinec dobrovolně uhradit, mohla tak učinit v období od 21. do 31. prosince 2018, tj. po splatnosti zálohy za listopad 2018. Pozdější úhradu nelze provést. Toto přechodné ustanovení se nevztahuje na platby pojistného na nemocenské pojištění, kterého se OSVČ účastní dobrovolně.

Pokud se jedná o začínajícího podnikatele, první zálohu lze uhradit ode dne, kdy se přihlásí k sociálnímu pojištění, do konce následujícího kalendářního měsíce. To znamená, že pokud podnikatel zahájí podnikání v lednu 2019, zálohu musí uhradit nejpozději do konce února 2019 (tedy obdobně jako zálohu za únor 2019).

Praktické dopady

Z praktického hlediska výše popsaná změna znamená to, že měsíční zálohy, které OSVČ pravidelně měsíčně hradí, budou při vyčíslení doplatku na sociální pojištění započítané u OSVČ pouze 11-krát (pakliže OSVČ nevyužila možnosti dobrovolně doplatit 12. zálohu v průběhu prosince 2018, což ale dle našeho názoru nedává z hlediska praktického užitku příliš smysl). Dvanáctá záloha, hrazená standardně v průběhu ledna 2019, bude započítaná až oproti doplatku vycházejícího z Přehledu o příjmech a výdajích podávaném za rok 2019, tedy nejdříve v roce 2020).

Změna výše záloh po podání Přehledu

Zatímco dříve platilo, že nová výše zálohy vycházející z podaného ročního Přehledu o příjmech a výdajích se aplikuje již na zálohy hrazené za daný kalendářní měsíc, v němž byl nebo měl být podán Přehled, po novu bude platit, že nová výše zálohy se stanoví až pro měsíc následující po měsíci, ve kterém byl nebo měl být Přehled podán. Bystrý čtenář si všimne, že kombinace této změny s výše popsaným „posunem“ v úhradách záloh nemá z praktického hlediska na okamžik změny výše záloh žádný dopad.

Příklad

Podá-li OSVČ, které nezpracovává daňové přiznání daňový poradce, svůj roční Přehled za rok 2018 v dubnu 2019, hradí novou výši zálohy vyplývající z tohoto Přehledu poprvé za květen 2019. Tato záloha je po novu splatná od 1.5.2019 do 31.5.2019. OSVČ tedy provede v bance změnu pravidelného platebního příkazu na úhradu zálohy od následujícího měsíce po podání Přehledu, stejně jako tomu bylo i v minulosti.

Jednu drobnou změnu v hrazení záloh co do jejich výše však přeci jenom lze zaznamenat. Pokud z ročního Přehledu vyplyne nižší záloha oproti předchozímu období, je možné tuto nižší zálohu hradit již za měsíc, v němž byl Přehled podán.

Změny minimálních záloh – sociální pojištění

 Jako každoročně dochází po podání Přehledu ke změně minimálních záloh na pojistné, které činí:

  • pro hlavní činnost   2.388 Kč
  • pro vedlejší činnost   955 Kč

Zálohy na zdravotní pojištění

Platby záloh na zdravotní pojištění nezaznamenávají na rozdíl od sociálního pojištění významných změn. Záloha na pojistné za příslušný kalendářní měsíc a je splatná od prvního dne kalendářního měsíce, na který se platí, do osmého dne následujícího kalendářního měsíce, stejně jako v minulosti.

Takto stanovené zálohy na pojistné se poprvé zaplatí za kalendářní měsíc, ve kterém byl nebo měl být podán Přehled, a naposledy za kalendářní měsíc předcházející měsíci, ve kterém byl nebo měl být takový přehled předložen v dalším kalendářním roce.

Změny minimálních záloh – zdravotní pojištění

Od 1.1.2019 dochází ke změně výše minimální zálohy na zdravotní pojištění, která činí 2.208 Kč. Tato změna se stejně jako v minulosti promítne již při placení záloh na zdravotní pojištění za 1/2019.

Osobám bez zdanitelných příjmů („OBZP“) se zvyšuje minimální pojistné na částku 1.803 Kč.

Termíny pro podání Přehledů v roce 2018

Nejzazší termín pro podání Přehledu o příjmech a výdajích správě sociálního zabezpečení i zdravotní pojišťovně připadá letos na 2.5.2019. Pokud OSVČ využívá pro zpracování a podání svého ročního daňového přiznání služeb daňového poradce, prodlužuje se tento termín na 1.8.2019.

nikoleta.koprdova@lerika.eu

PARAMENTRICKÉ ZMĚNY PRO ROK 2019

Minimální mzda

S účinností od 1. ledna 2019 dochází k nárůstu minimální mzdy z 12.200 Kč na 13.350 Kč. O výši minimální mzdy rozhoduje vláda a stanovuje ji nařízením.

Od výše minimální mzdy se odvozuje:

  • maximální výše slevy za umístění dítěte do školky (tzv. školkovné). Zatímco v daňových přiznáních fyzických osob budeme moci uplatnit za rok 2018 tuto slevu pouze do výše do výše 12.200 Kč, za rok 2019 to bude již 13.350 Kč.
  • nárok na roční daňový bonus na dítě. Tento nárok vzniká od úhrnné výše ročních příjmů podle § 6 nebo § 7 ZDP dosahujících alespoň šestinásobku minimální mzdy – tedy pro rok 2018 alespoň částky 73.200 Kč a pro rok 2019 alespoň 80.100 Kč.
  • podmínky nároku na měsíční daňový bonus. Příjem od zaměstnavatele v daném měsíci musí dosáhnout alespoň poloviny minimální mzdy. V roce 2018 to tedy byla částka 6.100 Kč, která se od 1.1.2019 zvyšuje na 6.675 Kč.
  • limit pro zdanění pravidelně vyplácených důchodů, které jsou osvobozeny do výše 36-ti násobku minimální mzdy ročně, což bylo 439.200 Kč pro rok 2018. Pro rok 2019 budeme pracovat s částkou 480.600 Kč.

Průměrná mzda

Nárůstu se dočkala i veličina označovaná jako průměrná mzda, která bude od 1.1.2019 činit 32.699 Kč. Ve skutečnosti se jedná o očekávanou (nebo odhadovanou) průměrnou mzdu za rok 2018 zjišťovanou ze statistických údajů prvního pololetí 2018 a statistických údajů roku 2017.

Příslušné statistické veličiny, od nichž se průměrná mzda odvozuje, jsou každoročně stanoveny nařízením vlády, a to vždy do 30. září příslušného roku. V roce 2018 se jednalo o:

  • všeobecný vyměřovací základu za rok 2017, který činí 30.156 Kč,
  • přepočítací koeficient ve výši 1,0843.

Průměrná mzda, se kterou se pracuje od 1.1.2019, je součinem těchto dvou veličin:

průměrná mzda = 30.156 Kč * 1,0843 = 32.699 Kč

Průměrná mzda (resp. všeobecný vyměřovací základ) má dopad do řady oblastí souvisejících s daněmi, ovlivňuje například:

  • hranici pro solidární zvýšení daně,
  • strop vyměřovacího základu pro pojistné na sociální pojištění,
  • minimální výši záloh na zdravotní pojištění pro osoby samostatně výdělečně činné,
  • výši měsíčního příjmu zakládající účast zaměstnanců na nemocenském pojištění,
  • výši redukčních hranic při přiznávání nemocenských dávek,
  • výši základní výměry starobního, invalidního, vdovského, vdoveckého a sirotčího důchodu,
  • výši důchodů přiznávaných od 1.1.2019.

Za zmínku stojí, že společně s průměrnou mzdou se zvyšuje i hranice pro účast na nemocenském pojištění a tím i důchodovém pojištění u zaměstnanců (dle § 6 odst. 2 zákona o nemocenském pojištění), která stoupne ze současných 2.500 Kč na 3.000 Kč (což je od roku 2012 poprvé).

Nejdůležitější údaje platné pro rok 2019 

Údaje pro rok 2019
Všeobecný vyměřovací základ 30.156 Kč
Přepočítávací koeficient důchodového zabezpečení 1,0843
Průměrná mzda 32.699 Kč
Minimální mzda 13.350 Kč
Hranice pro uplatnění solidárního zvýšení daně u zálohy na DPFO 130.796 Kč
Strop vyměřovacího základu pro pojistné na sociální pojištění(48-násobek průměrné mzdy) 1.569.552 Kč
Roční hranice pro uplatnění solidárního zvýšení daně(48-násobek průměrné mzdy) 1.569.552 Kč
Minimální zálohy pro OSVČ na sociální pojištění u hlavní činnosti(odvozeno od ¼ průměrné mzdy) 2.388 Kč
Minimální zálohy pro OSVČ na zdravotní pojištění(odvozeno od ½ průměrné mzdy) 2.208 Kč
Minimální měsíční pojistné na zdravotní pojištění pro OBZP(odvozeno od minimální mzdy) 1.803 Kč
Výše příjmu sníženého o výdaje zakládajícího OSVČ s vedlejší činností účast na důchodovém pojištění 78.478 Kč
Minimální zálohy pro OSVČ na sociální pojištění u vedlejší činnosti 955 Kč
Redukční hranice pro účely nemocenského pojištění 1.090 Kč / 1.635 Kč / 3.270 Kč
Sleva na dani ve formě tzv. školkovného. Tato sleva je totožná s výší minimální mzdy. 13.350 Kč
Měsíční příjem zaměstnanců zakládající účast na nemocenském a tím i na důchodovém pojištění (1/10 průměrné mzdy zaokrouhlená na 500 Kč dolů) 3.000 Kč(dříve 2.500 Kč)

nikoleta.koprdova@lerika.eu

KARENČNÍ DOBA

Novelou zákoníku práce schválenou Poslaneckou sněmovnou se ruší tzv. karenční doba, tedy doba prvních 3 dní nemoci, po které v současnosti nenáleží zaměstnancům náhrady mzdy při pracovní neschopnosti. Současně s uvedenou změnou se snižují i odvody zaměstnavatelů na nemocenské pojištění o 0,2 %. Celkové odvody zaměstnavatele za zaměstnance tím pádem klesnou ze současných 34 % (25 % sociální pojištění a 9 % zdravotní pojištění) na 33,8 %.

Novela zákoníku práce zavádějící zrušení karenční doby měla nabýt účinnosti k 1.7.2019, Senát však uvedenou novelu v posledním předvánočním týdnu zamítl. Osud karenční doby je tedy v tuto chvíli v rukou Poslanecké sněmovny, kde pro její zrušení bude potřeba 101 hlasů.

ivana.ottova@lerika.eu

CESTOVNÍ NÁHRADY V ROCE 2019

Tuzemské pracovní cesty

Dnem 1. ledna 2019 nabývá účinnosti nová vyhláška Ministerstva práce a sociálních věcí, kterou se mění cestovní náhrady zaměstnanců poskytované při tuzemských pracovních cestách. Zvyšují se sazby stravného, mění se náhrada za používání silničních motorových vozidel a zvyšuje se průměrná cena pohonných hmot.

Náhrady cestovních výdajů
Průměrná cena pohonných hmot

benzin 95 oktanů

33,10 Kč

benzin 98 oktanů

37,10 Kč

motorová nafta

33,60 Kč
Sazba základní náhrady za používání silničních motorových vozidel za 1 km jízdy

jednostopá vozidla a tříkolky

1,10 Kč

osobní silniční motorová vozidla

4,10 Kč
Stravné za každý den pracovní cesty při délce trvání pracovní cesty

5 – 12 hodin

82 – 97 Kč

12 – 18 hodin

124 – 150 Kč

více než 18 hodin

195 – 233 Kč

 

Zahraniční pracovní cesty

Od 1. ledna 2019 dochází rovněž k některým změnám v sazbách zahraničního stravného při pracovní cestě mimo Českou republiku. Zvýšení zahraničního stravného se bude týkat následujících 9 zemí a výše diet bude následující:

Země Stravné – 2018 Stravné – 2019
Argentina 45 USD 50 USD
Kuba 45 EUR 50 EUR
Mauretánie 35 EUR 40 EUR
Myanmar (Barma) 45 USD 50 USD
Nizozemí 45 EUR 50 EUR
Polsko 35 EUR 40 EUR
Saúdská Arábie 40 EUR 45 EUR
Senegal 40 EUR 45 EUR
Sýrie 40 EUR 45 EUR

 

Kromě výše uvedeného dochází ke změně měny u stravného pro Konžskou demokratickou republiku, kde se základní sazba zahraničního stravného mění na 50 EUR ze 60 USD. Výše ostatních sazeb i podmínek pro poskytování zahraničních cestovních náhrad zůstává stejná jako v roce 2018.

nikoleta.koprdova@lerika.eu

EET – CO OČEKÁVAT V ROCE 2019?

V našem zářiovém Newsletteru jsme Vám představili hlavní změny, které má přinést novelizace zákona o elektronické evidenci tržeb a jejichž účinnost byla očekávaná k 1.7.2019. Jedná se především o náběh 3. a 4. fáze evidence tržeb a možnost pro nejmenší podnikatele evidovat své tržby v tzv. off-line režimu. Poslanecká sněmovna zasedla v posledním předvánočním týdnu k prvnímu čtení návrhu tohoto zákona. Jeho projednávání však bylo záhy přerušeno, což se ostatně stalo již po třetí od chvíle, kdy se návrhem začala Poslanecká sněmovna zabývat v září 2018. Novela zákona o EET je tedy stále na začátku své pouti legislativním procesem.

Protože příslušné změny zákona o EET vstupují v účinnost až prvního dne sedmého měsíce po dni vyhlášení zákona, lze předpokládat, že účinnost změn se oproti očekávanému datu 1.7.2019 zcela jistě posouvá.

nikoleta.koprdova@lerika.eu

V případě jakýchkoli otázek k uvedené problematice se na nás neváhejte obrátit!

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.5";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_TARGET="main",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectMessage(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}injectMessage(e){const t=document.querySelector(MESSAGE_TARGET);t?t.innerHTML=e:this.domNode&&(this.domNode.innerHTML=e)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,user_id:t.userId,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i,n));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s,n));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s,n));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i,n):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));