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

Prato demorou ou veio com bicho? 10 direitos do consumidor em restaurantes

Do UOL, em São Paulo

15/09/2017 04h00

Você vai a um bar ou restaurante e seu prato demora para chegar, ou pior, sua comida vem com um bicho no meio. Em situações como essas, o consumidor nem sempre conhece os seus direitos e pode ficar em desvantagem.

Para ajudar os clientes a conhecerem seus direitos nesses estabelecimentos, o UOL ouviu os especialistas Carlos Simetta, coordenador do Procon-SP, e Sonia Amaro, advogada da associação de consumidores Proteste.

Veja a seguir 10 direitos que todo consumidor tem em bares e restaurantes.

  • Getty Images/iStockphoto

    Pedido demorado

    O consumidor pode desistir do pedido sem a necessidade de pagar por ele, se considerar que está demorando demais. Não há um tempo máximo de espera, porém o cliente pode perguntar sobre o tempo de preparação do prato antes de fazer o pedido ou se achar que está demorando para chegar à mesa. Se, mesmo assim, optar por ir embora, o cliente só deve pagar por aquilo que consumiu (bebidas, por exemplo).

  • Getty Images/iStockphoto

    Prato com cabelo ou bicho

    Se um prato vier com cabelo, pelo, insetos ou qualquer corpo estranho, o consumidor pode pedir a troca imediata, ainda que tenha notado a presença da sujeira após consumir parte do pedido. Caso não se sinta confortável para pedir a troca, o cliente pode ir embora sem pagar pelo prato, porém terá de pagar por outros produtos consumidos no local. O mesmo vale para um pedido que venha com gosto ou cheiro estranho. Em cidades como São Paulo, é direito do consumidor visitar a cozinha dos estabelecimentos.

  • Getty Images/iStockphoto

    Taxa de desperdício

    Alguns estabelecimentos --principalmente pizzarias que funcionam em sistema de rodízio-- costumam cobrar uma taxa adicional de clientes que não consomem todo o pedido (como a borda da pizza). A prática, no entanto, é considerada abusiva e coloca o consumidor em desvantagem por exigir dele o pagamento extra sobre algo que ele já está pagando.

  • Thinkstock

    Perda da comanda

    Muitos estabelecimentos cobram uma multa do consumidor caso ele perca a comanda na qual estão anotados os seus pedidos. A prática, porém, é considerada abusiva por transferir ao cliente a responsabilidade de controlar os gastos. Cabe ao estabelecimento fazer isso.

  • iStock

    Taxa de serviço

    O pagamento da taxa de serviço, que equivale a 10% do que foi consumido, é opcional. Caso se sinta mal atendido, o pedido tenha demorado para chegar ou tenha vindo errado, o cliente pode se negar a pagar a taxa. O estabelecimento também não pode embutir os 10% do serviço no preço final, que deve estar discriminado de forma clara na conta.

  • Divulgação

    Consumação mínima

    Conforme determina o Código de Defesa do Consumidor, é proibido ao estabelecimento impor limites mínimos de consumo aos seus clientes. A cobrança de consumação mínima é considerada venda casada, portanto, uma prática abusiva.

  • puhhha /iStock

    Porção dividida

    Ainda que não haja uma legislação específica para o caso de um estabelecimento que se nega a dividir um prato em dois, órgãos de direito do consumidor entendem que a prática é abusiva, pois obriga o cliente a pedir duas porções, sendo que apenas uma seria suficiente para sua necessidade. Da mesma forma, cobrar taxa extra para dividir um pedido em dois também é considerado prática abusiva.

  • Elvis Fernandes

    Couvert de entrada

    O couvert de entrada (aperitivos servidos antes do início da refeição) pode ser cortesia do estabelecimento. Se for cobrado, é preciso que o consumidor seja informado previamente pelo garçom ou atendente. Além disso, o preço do couvert deve estar no cardápio. Se o cliente não for devidamente informado e não o aceitar, o couvert não poderá ser cobrado.

  • UOL

    Couvert artístico

    Os estabelecimentos podem cobrar o chamado couvert artístico (uma taxa) quando oferecem show ou atração ao vivo. No entanto, o consumidor precisa ser informado sobre a cobrança, e o valor deve estar afixado em local visível logo na entrada. Se for informado apenas no fechamento da conta, o cliente pode se negar a pagar.

  • Getty Images/iStockphoto

    Sentiu-se lesado?

    Caso o cliente sinta-se lesado, a recomendação é sempre chamar o gerente e tentar resolver a questão ali mesmo. Se não for possível uma solução, o consumidor pode procurar um órgão de defesa -como o Procon, a Proteste ou o Idec- e registrar uma reclamação. No caso de cobrança indevida, o consumidor deve levar a nota fiscal para pedir o reembolso dos valores.