Zákon o dani z přidané hodnoty - Oddíl 2 - Přeshraniční režim pro malé podniky pro tuzemsko v případě osoby povinné k dani se sídlem v jiném členském státě

Předpis č. 235/2004 Sb.

Znění od 1. 1. 2025

235/2004 Sb. Zákon o dani z přidané hodnoty

Oddíl 2

Přeshraniční režim pro malé podniky pro tuzemsko v případě osoby povinné k dani se sídlem v jiném členském státě

§ 109bd

Registrace do režimu pro malé podniky pro tuzemsko

(1) Hodlá-li osoba povinná k dani se sídlem v jiném členském státě využít v tuzemsku režim pro malé podniky, je povinna podat přihlášku k registraci nebo jiné podání podle právních předpisů státu usazení, a to správci daně státu usazení.

(2) V tuzemsku je řízení o registraci do režimu pro malé podniky pro tuzemsko zahájeno dnem, ve kterém správce daně obdrží podle nařízení Rady o správní spolupráci a boji proti podvodům v oblasti daně z přidané hodnoty82) od správce daně státu usazení informaci, že osoba povinná k dani hodlá v tuzemsku tento režim využít.

(3) Splňuje-li osoba podle odstavce 2 podmínky využití režimu pro malé podniky pro tuzemsko, správce daně rozhodnutí o registraci neoznamuje a založí jej do spisu a správci daně státu usazení sdělí, že tato osoba tyto podmínky splňuje. V opačném případě nebo v případě, že údaje poskytnuté správcem daně státu usazení nejsou dostačující pro posouzení splnění podmínek využití režimu pro malé podniky pro tuzemsko, registraci zamítne; důvody zamítnutí sdělí správci daně státu usazení.

(4) Správce daně rozhodne o registraci a sdělí skutečnost správci daně státu usazení podle odstavce 3 nebo rozhodne o zamítnutí registrace a sdělí důvody zamítnutí správci daně státu usazení podle odstavce 3 ve lhůtě a za podmínek stanovených pro potvrzení splnění podmínek pro využití přeshraničního režimu pro malé podniky státem osvobození nařízením Rady o správní spolupráci a boji proti podvodům v oblasti daně z přidané hodnoty82). Jedná-li se o zvlášť složitý případ, může správce daně tuto lhůtu prodloužit po dobu nezbytnou k prověření splnění podmínek využití režimu pro malé podniky, pokud ve lhůtě podle věty první o tomto prodloužení informuje správce daně státu usazení.

(5) Správce daně v rozhodnutí o registraci nebo zamítnutí registrace podle odstavce 3 zohlední pouze

a) informace, které obdržel od správce daně státu usazení, a

b) jiné informace než podle písmene a), které má k dispozici.

(6) Proti rozhodnutí o registraci nelze uplatnit opravné prostředky. Proti rozhodnutí o zamítnutí registrace se lze odvolat do 60 dnů ode dne, kdy bylo toto rozhodnutí oznámeno nebo jinak doručeno správcem daně státu usazení podle právních předpisů státu usazení. Nepředal-li správce daně státu usazení správci daně informaci o tom, kdy bylo toto rozhodnutí oznámeno nebo jinak doručeno, má se za to, že bylo oznámeno desátým dnem následujícím po dni, ve kterém bylo toto rozhodnutí předáno správci daně státu usazení.

(7) Režim pro malé podniky lze využít ode dne, ve kterém byla osoba podle odstavce 1 správcem daně státu usazení registrovaná nebo jinak identifikovaná podle právních předpisů státu usazení pro přeshraniční režim pro malé podniky pro daný členský stát. Od tohoto dne se tato osoba považuje za osobu registrovanou do režimu pro malé podniky pro tuzemsko.

§ 109be

Skončení použití režimu pro malé podniky pro tuzemsko

(1) Režim pro malé podniky pro tuzemsko nelze využít ode dne následujícího po dni, ve kterém osoba registrovaná do režimu pro malé podniky pro tuzemsko přestala splňovat podmínky využití tohoto režimu. Správce daně vydá rozhodnutí, pokud se jedná o nesplnění podmínek, které posuzuje.

(2) Osobě registrované do režimu pro malé podniky pro tuzemsko zaniká registrace dnem, ve kterém správce daně státu usazení zrušil registraci nebo jinou identifikaci osoby registrované do režimu pro malé podniky pro tuzemsko podle právních předpisů státu usazení.

§ 109bf

Doručování v řízeních souvisejících s registrací do režimu pro malé podniky a zákazem použití režimu pro malé podniky pro tuzemsko

(1) Správce daně v řízeních souvisejících s registrací do režimu pro malé podniky pro tuzemsko doručuje písemnost elektronicky, a to prostřednictvím

a) datové schránky, nebo

b) veřejné datové sítě na adresu elektronické pošty uvedenou v přihlášce k registraci, nemá-li adresát zpřístupněnu datovou schránku.

(2) Správce daně doručuje rozhodnutí o zamítnutí registrace do režimu pro malé podniky pro tuzemsko a rozhodnutí o skutečnosti, že osoba registrovaná do režimu pro malé podniky pro tuzemsko přestala splňovat podmínky využití tohoto režimu, elektronicky, a to prostřednictvím

a) správce daně státu usazení, nebo

b) datové schránky nebo veřejné datové sítě na adresu elektronické pošty uvedenou v přihlášce k registraci, nemá-li adresát zpřístupněnu datovou schránku.

(3) Písemnost podle odstavce 1 nebo 2, která se doručuje prostřednictvím veřejné datové sítě na adresu elektronické pošty, se považuje za doručenou desátým dnem následujícím po dni, ve kterém byla datová zpráva odeslána.

§ 109bg

Plnění povinností v režimu pro malé podniky pro tuzemsko

Osoba registrovaná do režimu pro malé podniky pro tuzemsko plní povinnosti týkající se režimu pro malé podniky v tuzemsku vůči státu usazení podle právních předpisů tohoto státu; to neplatí v případě povinností stanovených správcem daně ve výzvě.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »