;

Dimension Data hlásí pozitivní finanční výsledky

17. 5. 2010

Sdílet

Skupina Dimension Data, která je kótována na burzách v Londýně a Johannesburgu, zaznamenala obrat ve výši 2,2 miliardy dolarů – o 11,1 % více v meziročním srovnání při zachování konstantní měnové báze. Provozní zisk se zvýšil o 21,0 % na 107,5 milionů dolarů a provozní marže se zvýšila na 5,0 % (H1 2009: 4,6%, před mimořádnými položkami), v reportované měně. Navýšení v provozní marži bylo taženo lepší hrubou marží následovanou vyššími příjmy z oblasti služeb a pozitivním omezením režijních nákladů. Zisk na akcii vzrostl o 20,0 % na 4,2 centů a skupina skončila období s hotovostí ve výši 493 milionů dolarů.

Výsledky H1 2010 je třeba analyzovat s ohledem na velké výkyvy v mnoha obchodovaných měnách ve skupině, stejně tak i na velmi silný výkon  H1 2009. Příjmy v  konstantní měnové bázi v 1. čtvrtletí 2010 poklesly o 3,7 %, zatímco ve 2. čtvrtletí 2010 se navrátily k růstu. Pokles byl zejména zapříčiněn prudkým zhoršením příjmů ve společnosti Plessey a nižšími příjmy v Express Data. S výjimkou uvedených společností bylo dosaženo 0,4 % růstu v konstantní měnové bázi.

Služby vzrostly o 7,4 %, což ovlivnila zejména oblast Managed Services, která byla velkým tahounem růstu, a zlepšení ziskovosti v oblasti systémové integrace (SI). Dimension Data mají neustálou poptávku po službě Uptime pro správu IT prostředí, stejně jako po nabídce outsourcingu. Příjmy oblasti profesionálních služeb se meziročně zvýšily o 3,1 %, přičemž růst byl dosažen ve většině regionů. Podíl služeb v oblasti SI se zvýšil na 42,1 % z 38,6 % v předchozím období.

Zlatým hřebem tohoto období byl výkon oblasti systémové integrace (SI), které vzrostl provozní zisk o 15,8 % v konstantní měnové bázi na 80,6 milionů dolarů a reportována je i lepší provozní marže ve výši 4,5 % (H1 FY2009: 3,8 %). Výkonnost SI byla podložena pokračujícím silným růstem Managed Services, které se zvedly o 10,1 % v konstantní měnové bázi.

Geograficky se velmi pozitivní zlepšení provozní marže SI projevilo ve čtyřech z pěti regionů. Amerika si vedla mimořádně dobře se zvýšenými příjmy i silným zlepšením ziskovosti. Došlo k oživení výdajů na produkty a pokračovalo zlepšování příjmového mixu ve prospěch služeb. V Evropě vedlo zvýšení marží a zlepšení efektivity k významnému zvýšení ziskovosti.  Amerika i Evropa společně reportovali provozní marže vyšší než 3,0 %, což je významný milník. Obchod v Asii se také zlepšoval po celé období, jelikož region pokračuje v investicích v rámci strategického růstového programu. V Austrálii a na Středním Východě a v Africe byl robustní růst ziskovosti a  provozních marží poháněn růstem příjmů ze služeb a kontrolou nákladů.

Oblast internetových řešení (IS) si v růstu vedla také dobře, podpořená obchodními jednotkami na komunikace, datová centra a telekomunikační linky. Hlavním rysem tohoto období byla vítězství v oblastech cloudových řešení a hlasových služeb pro veřejný sektor. Příjmy vzrostly o 10,0 %, zlepšila se provozní marže a o 11,7 % se zvýšila ziskovost. Oblast IS zaznamenává pokračující masivní poptávku po svých řešeních, zejména po datových centrech a službách hostingu.

Robustní výkony oblastí IS a SI byly sníženy slabou obchodní situací ve společnosti Plessey, která ohlásila 51,4% pokles příjmů v konstantní měnové bázi a malou provozní ztrátu. Příjmy poklesly i ve společnosti Data Express o 13,8 %, a to v důsledku snížení cen o přibližně 20 % ve většině produktových řad napojených na silně zhodnocené měny Austrálie a Nového Zélandu. Kromě toho byly objemy ovlivněny omezeními dodávkami od několika klíčových dodavatelů.

 

Přehled vybraných ekonomických ukazatelů


$ '000

H1 2010
31. března 2010

H1 2009
31. března 2009

Příjmy

2.165.621

1.950.108

Provozní zisk
Provozní marže

107.469
5,0 %

87.464
4,5 %

Provozní zisk (před mimořádnými položkami)
Provozní marže (před mimořádnými položkami)

107.469
5,0 %

88.798
4,6 %

Zisk připadající na akcionáře mateřské společnosti
Zisk připadající na akcionáře mateřské společnosti
(před
mimořádnými položkami)

71.710
71.710

65.997
58.739

Zisk na kmenovou akcii (US centů)
Zisk na kmenovou akcii (US centů) (před mimořádnými položkami)

4.2
4.2

3.9
3.5

Našli jste v článku chybu?
'; 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'; } }
OSZAR »