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

Acusada de camuflar lucros, Amazon divulga pela 1ª vez o valor dos impostos

Pacotes de produtos processados pela Amazon; empresa já usa máquinas para substituir pessoas na hora de embrulhar vendas. - Rick T. Wilking/AFP
Pacotes de produtos processados pela Amazon; empresa já usa máquinas para substituir pessoas na hora de embrulhar vendas. Imagem: Rick T. Wilking/AFP

Da agência RFI

19/12/2019 12h24

A gigante da distribuição online Amazon anunciou ontem ter pago mais de 250 milhões de euros em impostos na França em 2018 e ter realizado um volume de negócios de 4,5 bilhões de euros. Como Google, Apple e Facebook, a empresa é frequentemente acusada de camuflar esses números para reduzir o montante que deve rear ao Estado, mas resolveu tornar públicas essas informações pela primeira vez.

Segundo o diretor geral da Amazon na França, Frédéric Duval, o objetivo é acabar com as polêmicas em torno da gigante. "A contribuição da Amazon aos financiamentos dos serviços públicos e do modelo social francês é de milhões de euros a cada ano", afirma o comunicado da empresa.

Em entrevista à Info, Duval indicou que o objetivo era "mostrar um esclarecimento mais concreto" por parte da gigante, precisando que "não há nenhuma outra razão em particular". "Eu sabia que havia dúvidas sobre nosso impacto econômico e a quantidade de impostos que a Amazon paga na França".

O anúncio ocorre em um momento em que Paris tenta colocar um fim às práticas fiscais controversas de multinacionais do setor digital. No final do ano ado, o Executivo francês votou uma taxa para as gigantes do Gafa (Google, Amazon, Facebook e Apple), que entrou em vigor neste ano. O ex-secretário francês do setor digital, Mounir Mahjoubi, revelou recentemente que essas empresas americanas declararam no ano ado na França um volume de negócios quatro vezes inferior ao verdadeiro, resultando em cerca de 1 bilhão de euros a menos ao fisco.

A Amazon informou que emprega 9.300 pessoas e conta com mais de 20 sites logísticos no país. "A França é essencial à Amazon", reitera o comunicado, lembrando que a gigante investiu "mais de 6,8 bilhões de euros em atividades sas em 2010". Por isso, Duval acredita que a melhor solução seria "seguir o quadro do regulamento internacional estabelecido pela OCDE", a Organização para Cooperação e Desenvolvimento Econômico.

Organização contesta números divulgados

A organização sa Attac (Associação para a Taxação das Transações Financeiras e pela Ação Cidadã) criticou o balanço divulgado pela Amazon. "A empresa se recusa a apresentar os lucros realizados na França, então não podemos calcular os impostos", diz o porta-voz da Attac, Raphael Pradeau.

Segundo ele, "as declarações da Amazon não respondem ao que mostramos, ou seja, que grande parte do volume de negócios, 57%, é dissimulado em paraísos fiscais". Essa atitude contribui para degradar o modelo social francês, prejudicando as finanças públicas.

"O que esperamos não é que as empresas se façam de boazinhas fazendo seus próprios cálculos, mas que a União Europeia instaure a apresentação pública desses números para obrigar as multinacionais a serem transparentes, declarando suas atividades reais em cada país", conclui Pradeau.