Strateg 2.0 Strategický nástroj pro management

1. 6. 1998

Sdílet

Informační systém Strateg 2.0 představuje efektivní nástroj určený ke komplexnímu modelování ekonomické a fina...


Informační systém Strateg 2.0 představuje efektivní nástroj
určený ke komplexnímu modelování ekonomické a finanční situace
firmy, k vytváření analýz o stavu, možném rozvoji a podpoře
finančního plánování a řízení ve střednědobé a dlouhodobé
perspektivě. Produkt je určen pro vrcholový a střední management
firem libovolné velikosti, které používají účtovou osnovu pro
podnikatele. K jeho výhodám patří snadné a intuitivní ovládání
v prostředí Windows a možnost spolupráce systému s jinými
programy na bázi technologie OLE 2.

K čemu slouží Strateg?

V současné době je při rozhodování o dalších směrech rozvoje
firmy stále ve větší míře kladen důraz na přesné, a pokud možno
exaktně podložené statistiky a analýzy a důkladné prověření
několika možných variant řešení. Často nastává situace, že firma
má sice k dispozici určitý informační systém, který však
neposkytuje tzv. manažerské výstupy a možnost pracovníkům firmy
údaje využívat pro další zpracování. Je zřejmé, že v důsledku
neexistence těchto údajů nebo v důsledku jejich neúplnosti, pak
strategická rozhodnutí managementu nemusí být často správná,
a firma zbytečně investuje do předem nevýhodných projektů.
A právě do této oblasti cílí Strateg, který umožňuje plánovat
v rozsahu od čtvrtletního až po dlouhodobé plánování, a to ve
výhledu až dvanácti let. Svojí stavbou program podporuje možnost
vytváření různých variant řešení budoucí ekonomické situace.
Velmi důležité je, že firmy mohou používat Strateg jako nadstavbu
svého stávajícího informačního systému. To znamená v první řadě
ušetření peněz a času a také možnost využívat již existující
data.

Základní popis funkcí

Plánování výrobního programu. Program umožňuje modelovat situaci
na základě změn počtu kusů jednotlivých výrobků, cenového vývoje,
volby alternativních výrobních programů atd.
Plánování přímých nákladů. Oblast zahrnuje přímé materiálové
náklady jako celek nebo s možností členění na hlavní skupiny
materiálu, subdodávek apod., přímé mzdové náklady, ostatní přímé
osobní náklady.
Plánování nepřímých nákladů. Pro sestavení úplného rozpočtu
nákladů je třeba počítat s dalšími náklady podle druhového
členění. Přednost je dána individuálnímu propočtu před metodou
extrapolace.
Plánové kalkulace. Podle zvolené základny je možné provést
rozdělení nákladů na jednotlivé výrobky či obory a dokončit
kalkulaci nákladů, převést druhové členění na kalkulační členění,
vyloučit z kalkulací výnosy, činnosti a náklady, které se
nekalkulují, či zjistit ziskový bod, rentabilitu nebo příspěvek
ke krytí.
Plánování oběžných aktiv. Zvlášť významnou pozornost je v třeba
věnovat plánování zásob, pohledávek za odběratele a plánování
zdrojů financování.
Plánování investic a jejich aktivace. Nové investiční potřeby lze
plánovat v detailu jednotlivých investičních akcí nebo i po
jednotlivém investičním majetku. Spolu s investicemi se plánují
i zdroje na jejich úhradu.
Plánování hospodářského výsledku. Z předchozího postupu je
automaticky zjištěn hospodářský výsledek. Pokud je hospodářským
výsledkem zisk, plánuje se jeho zdanění a rozdělení. Je-li
hospodářským výsledkem ztráta, plánuje se její pokrytí.
Plánování Cash-Flow. Zdroje i potřeby jsou do plánovaného
Cash-Flow promítnuty automaticky jako důsledek úvah a plánování
jednotlivých vstupních bloků.
Plánovaná rozvaha. Na základě zpracování plánu všech předchozích
oblastí je automaticky proveden výpočet plánované bilance.
Finanční analýzy. Hlavní skupiny ukazatelů hodnotí: tržní hodnotu
podle očekávaných příjmů, vnitřní výnosové procento, ziskový bod,
citlivost na objemovou či cenovou změnu aktivit, rozklad
výsledovky a rozvahy, skladbu kapitálu, likviditu, rentabilitu
kapitálu a její pyramidové rozklady, pracovní kapitál apod.

Otevřenost systému

Jednou z hlavních výhod programu Strateg je jeho otevřenost. To
neznamená pouze export zvolených údajů, ani tradičně chápanou
modularitu systému (zákazník koupí různé moduly informačního
systému od jedné firmy, které však s programy zakoupenými od
jiných firem nekomunikují). Řada firem se potom snaží situaci
řešit nákupem všech modulů od jednoho dodavatele, přičemž náklady
pochopitelně rostou a firma se tak v podstatě stává "zajatcem"
svého dodavatele. Jaký je tedy rozdíl mezi většinou informačních
systémů a programem Strateg? Strateg patří mezi tzv. otevřená
řešení, postavená na specifikaci COM firmy Microsoft. Jednotlivé
moduly představují tzv. OLE servery, vzájemně komunikující přes
univerzální rozhraní, a je jedno pomocí jakých vývojových
prostředků jsou vytvořeny. Jednotlivé moduly programu Strateg tak
mohou komunikovat s jinými OLE moduly jakéhokoli programu.
Strateg tak může např. automaticky přebírat údaje z účetnictví.
Jelikož se jedná o technologii přímo vestavěnou do operačních
systémů firmy Microsoft, může libovolná softwarová firma
upravovat informační systém dle aktuálních požadavků zákazníka,
i když se nejedná o primárního dodavatele.

Závěr

Program Strateg 2.0 představuje vyzrálý produkt, který může
pomoci zaplnit mezeru na trhu programů zabývajících se komplexním
ekonomickým a finančním modelováním podnikatelských subjektů.



Strateg 2.0

K recenzi poskytla firma:
Epass, s.r.o.
Půlkruhová 99/42
Praha 6
Cena: 30 000 Kč
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.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:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { 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(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll 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 = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } 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(); } 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(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }