;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Antes de estreia na Bolsa, Multilaser alerta para riscos tributários

A Multilaser se prepara para abrir, nos próximos dias, um novo capítulo da sua história, com uma oferta inicial de ações (IPO, na sigla em inglês) para levantar cerca de R$ 2 bilhões - Cris Fraga/Estadão Conteúdo
A Multilaser se prepara para abrir, nos próximos dias, um novo capítulo da sua história, com uma oferta inicial de ações (IPO, na sigla em inglês) para levantar cerca de R$ 2 bilhões Imagem: Cris Fraga/Estadão Conteúdo

Gabriel Baldocchi

São Paulo

12/07/2021 08h32Atualizada em 12/07/2021 09h21

Na transformação de uma empresa de reciclagem de cartuchos, no início dos anos 2000, ao posto de fabricante de bens de consumo, com 20 marcas próprias, a Multilaser multiplicou em 100 vezes a sua receita. Os R$ 3 bilhões anuais de faturamento incluem a atuação em segmentos que vão de itens para pets a TVs e celulares.

A companhia se prepara para abrir, nos próximos dias, um novo capítulo da sua história, com uma oferta inicial de ações (IPO, na sigla em inglês) para levantar cerca de R$ 2 bilhões. Nesse processo, o grupo se apresentou com mais profundidade ao mercado e exibiu dados operacionais que foram bem avaliados, mas também riscos que chamam a atenção.

A empresa pretende destinar pouco mais de 40% dos recursos para reforço de caixa, ou R$ 792 milhões, considerando o preço médio da faixa indicativa, de R$ 11,90 por ação. Outros 15% serão reservados para potenciais aquisições. Já o restante será usado para o pagamento de dívidas (R$ 870 milhões).

Os créditos que poderão ser liquidados ou amortizados com os novos recursos foram levantados para capital de giro. Quase metade do volume envolve cifras tomadas com os bancos coordenadores da oferta - a maioria contratada nos últimos nove meses, segundo o prospecto da operação.

Para Miguel Felipe Costa Vieira, gerente associado líder de M&A da Peers Consulting, o uso dos recursos do IPO para liquidar créditos recentes é um ponto de atenção. Mas ele destaca como positivo o fato de o endividamento no período ter sido acompanhado de um aumento consistente na receita.

Tributos

O resultado da companhia traz outro ponto de alerta. Segundo a empresa, os benefícios fiscais representaram pouco mais da metade do lucro líquido em 2020. Ao citar o tema como fator de risco, a empresa diz que a parcela dos incentivos no lucro, que chegou a R$ 253 milhões em 2020, não pode ser distribuída como dividendo.

A questão tributária é recorrente nos documentos, com mais de 40 citações ao longo das quase 700 páginas do prospecto. Entre elas, os processos judiciais referentes ao tema, a maioria do total dos R$ 143 milhões em ações consideradas como perda provável, provisionadas, e dos R$ 428 milhões avaliados como perdas possíveis, sem reservas. As contingências tributárias foram consideradas como "significativas", numa nota de auditores no balanço de 2020.

Um profissional de uma grande gestora afirma que a viabilidade do IPO não está ameaçada. Segundo ele, porém, alguns demandam ajustes de preço, como o de benefícios fiscais e processos tributários. "São fatores de risco. O crescimento da Multilaser é muito expressivo. Se não fosse isso (os riscos), o IPO estaria vindo a múltiplos super altos", afirma o gestor, que pediu para não ser identificado.

Procurada, a Multilaser afirmou que não vai comentar porque está em período de silêncio.