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

Esse conteúdo é antigo

Escolas devem dar desconto na mensalidade durante isolamento, diz Procon-SP

29.mar.2020 - Estudantes fazem a lição de casa; na Holanda, aulas estão suspensas por conta da pandemia do novo coronavírus - Robin Utrecht/SOPA Images/LightRocket via Getty Images
29.mar.2020 - Estudantes fazem a lição de casa; na Holanda, aulas estão suspensas por conta da pandemia do novo coronavírus Imagem: Robin Utrecht/SOPA Images/LightRocket via Getty Images

Agência Brasil

07/05/2020 19h47Atualizada em 07/05/2020 19h48

A Fundação Procon-SP publicou hoje diretrizes para negociação dos consumidores com as instituições particulares de ensino infantil, fundamental e médio durante a crise do novo coronavírus. As escolas do estado de São Paulo que não atenderem às diretrizes terão que apresentar sua planilha de custos, responderão a processo istrativo e poderão ser multadas.

De acordo com as diretrizes, deve ser oferecido um percentual de desconto na mensalidade escolar, cujo valor pode ser proposto pela própria instituição, de acordo com sua situação econômico-financeira. O Procon afirma que, embora livre o percentual de desconto a ser fixado, sua concessão é considerada diretriz obrigatória.

Além disso, desde o mês de abril, devem ser suspensas imediatamente as cobranças de qualquer valor complementar ao da mensalidade escolar, como alimentação, atividades extracurriculares, eios, academia, serviço de transporte oferecido pela instituição de ensino, entre outros. Caso esses valores já tenham sido pagos, devem ser descontados na mensalidade seguinte.

Segundo o órgão, as diretrizes são resultado de uma crescente demanda dos consumidores no estado relacionada às dificuldades com instituições privadas que prestam serviços educacionais sobre o atendimento, ao ensino à distância e ao pagamento das mensalidades escolares. O objetivo das medidas é resguardar os direitos dos consumidores e de garantir o equilíbrio contratual.

As diretrizes definem também que a instituição que quiser implementar o ensino à distância deverá disponibilizar os meios tecnológicos para que o consumidor tenha o ao conteúdo.

O Procon informa que o consumidor só poderá recusar o ensino à distância se não tiver infraestrutura, como tablet, computador ou celular com o à internet. Nesse caso, a instituição deverá apresentar como alternativa o plano de reposição de aulas ou o fornecimento da tecnologia necessária.

O documento estipula ainda que "é direito dos consumidores a rapidez no atendimento de suas demandas, bem como à análise de sua situação contratual de inadimplência, devendo a instituição negociar alternativas para o pagamento, como, por exemplo, maior número de parcelas".

As escolas deverão disponibilizar ao menos um canal de atendimento ao consumidor para tratar das questões financeiras, e a existência desse canal deve ser comunicada a todos os seus consumidores, por meio tecnológico.