ADVERTISEMENT

Jollibee posts lower profit in 2019

Published Feb 18, 2020 12:00 am
By JAMES A. LOYOLA Jollibee Foods Corporation, one of the largest food service companies in Asia, reported a 14.4 percent drop in consolidated attributable net income to ₱6.33 billion last year from ₱7.4 billion in 2018. In a disclosure to the Philippine Stock Exchange, JFC said consolidated revenues increased by 11.4 percent to ₱179.64 billion from ₱161.2 billion in 2018. JFC opened 497 stores in 2019, 273 in the Philippines and 224 abroad. System wide sales increased by 14.9 percent to ₱243.79 billion last year from ₱212.19 billion. System wide sales rose 23.2 in the fourth quarter of 2019 to ₱72.72 billion compared to the ₱59 billion in the same quarter of 2018, including the impact of Coffee Bean and Tea Leaf which was acquired last September. Without CBTL, system wide sales for the fourth quarter grew by 9.3 percent. Global same store sales grew by 4.0 percent representing a marked improvement versus the 2.5 percent in the third quarter. Philippine business same store sales growth in the fourth quarter reached 4.6 percent against a third quarter growth rate of 3.3 percent. International Business same store sales growth likewise improved from 0.3 percent in the third quarter to 2.0 percent in last quarter led by the improvement in Yonghe King in China and Smashburger in the United States. Store network expansion contributed 6.7 percent to system wide sales growth, partly offset by -1.4 percent from changes in currency exchange rates. Practically all brands in the Philippines improved their same store sales growth from the third quarter to the fourth quartter led by Jollibee, Red Ribbon, Greenwich and Burger King. Same store sales growth in the Philippines was driven by the continued growth in volume of customer visits in the stores compared to a year ago and strong growth in delivery business for all brands. Panda Express which opened its first store in December 2019 has been generating sales above expectation. Foreign business grew by 59.3 percent with CBTL accounting for 53.8 percent, new stores 7.3 percent and same store sales growth 2.0 percent, partly offset by -5.3 percent impact of changes in currency exchange rates. JFC Chief Executive Officer Ernesto Tanmantiong said “2019 was a very tough year for JFC, but the resilience and determination of our people have kept driving the business forward.” He added, “We are very encouraged by the continued rise in customer visits to our stores, the strong growth in our store network with sustained healthy return on invested capital, the strong momentum in the delivery business, the recovery of the Red Ribbon product supply in the Philippines and the very good indicators of recovery of the Smashburger business in the United States.” For 2020, JFC plans to open 600 stores, about 250-300 of which will be in the Philippines and 300 to 350 abroad. The firm said “2020 may mark the first time in JFC's history when the international business generates greater organic store expansion than the Philippine business.”
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.