;(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

Covid-19: prazo para reembolso por eventos cancelados é longo, diz Proteste

Do UOL, em São Paulo

16/04/2020 11h02

A Proteste, Associação de Consumidores, informou considerar muito longo o prazo de 12 meses depois do fim da calamidade para reembolso de consumidores que tiveram eventos cancelados por causa da pandemia do novo coronavírus.

Na semana ada, foi publicada uma MP (medida provisória) que isenta as empresas do setor turístico e de eventos (cinemas, teatros e plataformas digitais de vendas de ingressos pela internet) da obrigação de efetuar o reembolso imediato aos consumidores que não possam usufruir dos serviços contratados durante a pandemia.

Para isso, as empresas ou prestadores de serviço devem assegurar: a remarcação dos serviços, das reservas e dos eventos cancelados;
a disponibilização de crédito para uso ou abatimento na compra de outros serviços, reservas e eventos, disponíveis nas respectivas empresas; ou outro acordo a ser formalizado com o consumidor.

Caso não haja acordo, o consumidor pode pedir o cancelamento do contrato e a devolução do valor, que poderá ser efetuada em até 12 meses contados do fim do estado de calamidade.

A MP determina que estas operações ocorram sem custo adicional, taxa ou multa ao consumidor, desde que a solicitação seja efetuada no prazo de 90 dias, contado da data da sua entrada em vigor.

"Estas medidas sacrificam demasiadamente os direitos dos consumidores, que deverão decidir entre aceitar um crédito para um evento futuro, do qual ele pode não ter interesse ou possibilidade de estar presente, ou esperar um prazo longo para obter o reembolso" disse em nota o Diretor de Relações Institucionais e Mídia da Proteste, Henrique Lian.

Em comunicado, a Proteste informou entender que, neste contexto de pandemia, as medidas previstas na MP são necessárias para evitar que as empresas do setor turístico deixem de operar no Brasil.

"Consideramos que o prazo máximo para reembolso deva ser de 12 meses, contados a partir da data original do evento, aos moldes do que será aplicado em relação aos bilhetes aéreos", argumenta Lian.

"A MP 925/20, que trata do cancelamento ou remarcação de agens aéreas, permite que as companhias forneçam um crédito ao consumidor que não pôde realizar o seu voo em decorrência da pandemia, ou que efetuem o reembolso no prazo de 12 meses contados da data do voo, atendendo as necessidades das empresas e dos consumidores", diz a nota.

Veja mais economia de um jeito fácil de entender: @uoleconomia no Instagram.
Ouça os podcasts Mídia e Marketing, sobre propaganda e criação, e UOL Líderes, com CEOs de empresas.
Mais podcasts do UOL em uol.com.br/podcasts, no Spotify, Apple Podcasts, Google Podcasts e outras plataformas.