Amazon Vendor Central
A Amazon manda o pedido; o Odoo o recebe, confere título por título contra o seu cadastro e o transforma em cotação quando alguém manda. O que ele não faz — de propósito — é responder à Amazon.
Visão geral
No Vendor Central a Amazon compra. Ela não é marketplace aqui: ela é atacadista, emite um pedido de compra e depois revende por conta própria. Isso inverte o vocabulário e é a primeira coisa a entender:
| O que a Amazon chama | O que é do nosso lado |
|---|---|
| purchase order (pedido de compra) | Uma venda. Vira cotação e, depois, pedido de venda — nunca um pedido de compra do Odoo. |
| vendor | Nós. A editora que fornece. |
| buying party | O centro de distribuição da Amazon que está comprando — cada um com CNPJ próprio. |
| net cost | O que a Amazon paga por exemplar. É este o preço da linha. |
| list price | O preço de capa com que ela revende. Não entra na cotação. |
Registrar o pedido da Amazon como pedido de compra inverteria estoque e faturamento: o sistema passaria a achar que estamos comprando livros da Amazon. O erro não aparece na tela — aparece no fechamento do mês, com estoque negativo e receita faltando.
O caminho tem três paradas, e a do meio é o ponto do módulo:
- Importar — o módulo lê os pedidos da Amazon e guarda uma cópia fiel de cada um.
- Conferir — cada ISBN é casado com o código de barras do produto. O que não casa fica visível antes de virar documento.
- Gerar a cotação — um ato de alguém, nunca automático. A cotação nasce em rascunho e fica lá.
O que este módulo não faz
Ele só lê da Amazon. Não confirma pedido (acknowledgement), não manda aviso de embarque (ASN), não imprime etiqueta de caixa e não emite invoice por EDI.
Não é uma etapa que ficou para depois: é o desenho. Essas operações disparam relógio de SLA na Amazon e assumem compromisso de entrega — decisão de uma pessoa olhando, não de uma rotina às quatro da manhã. A limitação está no código, não num acordo: a camada que fala com a Amazon tem um único caminho de saída, e ele só sabe ler.
Enquanto a confirmação não estiver no sistema, ela continua sendo feita à mão no portal do Vendor Central — e o portal segue sendo o dono do estado do pedido. É por isso que a importação relê pedidos antigos em vez de só buscar os novos.
Configuração
Grupos de acesso: Amazon Vendor / Operador importa, corrige o casamento de produto e gera cotação; Amazon Vendor / Gerente também configura a conta. As credenciais em si são de administrador do sistema — quem opera nunca as vê. O grupo de operador já implica Vendedor, porque a cotação é documento de vendas.
Multiempresa por construção: a conta é um registro por empresa, não uma configuração global. Cada vendor tem o seu próprio aplicativo e o seu próprio token na Amazon — não existe credencial que sirva a duas editoras.
A conta (uma vez por empresa, em ou ):
- Dê um Nome da conta e escolha a Região. Para o Brasil, BR — que fala com o endpoint da América do Norte. Não existe host brasileiro; procurar por um é perder a tarde.
- Preencha Amazon como cliente: o parceiro em nome de quem as cotações saem.
- Cole as três credenciais do aplicativo criado no Amazon Developer Central:
Client ID do LWA, Client Secret do LWA e o
Refresh token da autorização. O refresh token começa com
Atzr|e aparece uma única vez, na tela de autorização. - Salve e clique em Testar conexão na ficha da conta. Ele fala com a Amazon e não importa nada.
Os campos de segredo chegam sempre em branco, mesmo depois de configurados: o valor guardado não volta para o navegador. Deixar em branco mantém o que já está lá — preencha só para trocar. O indicador Credenciais configuradas diz se há um token gravado, sem revelá-lo.
Se o teste falhar com HTTP 403 depois de o login ter funcionado, não é senha errada. É o aplicativo sem o papel Vendor Orders no Developer Central, ou uma autorização dada para o Seller Central em vez do Vendor. O conserto é no painel da Amazon.
As unidades da Amazon
A Amazon não compra como uma pessoa só. Cada centro de distribuição é um estabelecimento fiscal próprio — no Brasil, mesma raiz de CNPJ e filial diferente — e o pedido diz qual deles está comprando.
O que ela não manda é quem é esse estabelecimento. O pedido traz apenas a sigla:
buyingParty = {"partyId": "GRU8"}
shipToParty = {"partyId": "GRU8"}
Sem CNPJ, sem endereço, sem razão social. Daí o mapa em : uma linha por sigla, dizendo quem ela é no seu cadastro — e, se a entrega for em outro endereço, qual é.
Unidade não mapeada não vira cotação. O pedido é importado e fica marcado, mas a cotação é recusada com o nome da sigla. Cair num cliente padrão seria pior: a nota sairia contra o CNPJ de outra filial, em silêncio e com número plausível.
Para começar, o botão Mapear unidades pelos pedidos, na ficha da conta, cria uma linha para cada sigla já vista e sugere um cliente quando um contato casa sem ambiguidade. A sugestão é isso mesmo — sugestão, para você conferir. Casar pelo nome funcionaria numa casa que batize os contatos de "Amazon GRU8" e em nenhuma outra, e convenção de cadastro de uma editora não pode virar regra de um módulo.
Importar os pedidos
Há dois caminhos, e eles fazem a mesma coisa:
- À mão, em pelo botão Importar da Amazon no alto da lista em : escolha o intervalo e clique em Ler da Amazon.
- Sozinho, pela rotina diária das 07:00 UTC — quatro da manhã em Brasília, quando a Amazon já fechou o dia e ninguém está usando o sistema. Liga e desliga em Definições.
A leitura à mão mostra a conta antes de gravar: quantos pedidos, quantos exemplares, quanto em net cost, quantos ISBNs distintos e — o que mais importa — a lista exata dos que não têm produto no cadastro. Só então Importar.
Reimportar o mesmo intervalo não duplica nada: a chave é o número do pedido. E a janela recua alguns dias de propósito (o campo Janela de releitura, 7 dias por padrão), porque a Amazon muda o estado de um pedido depois de criá-lo. Uma marca d'água que só andasse para frente congelaria o estado no instante da primeira leitura.
O casamento com o cadastro
Cada linha traz o ISBN-13 do título, que o módulo procura no Código de barras do produto. A comparação ignora hífen e espaço dos dois lados — parte do catálogo está gravada com hífen, e a comparação crua daria por ausente um título que existe.
O outro identificador do pedido, o ASIN, é o código interno da Amazon. Ele é guardado para conferência, mas não serve para casar com o nosso cadastro — não existe lá.
Linha cujo ISBN não casa não impede nada: ela entra sem produto, é contada, e simplesmente fica de fora da cotação. Travar o pedido inteiro por causa de um título que talvez nem seja nosso seria pior — e a Amazon não espera.
Ignorar é a decisão certa; ignorar em silêncio não é. Toda vez que uma linha fica de fora, o histórico do pedido registra quais ISBNs foram deixados — porque a cotação passa a prometer menos exemplares do que a Amazon pediu, e essa diferença apareceria só na entrega.
Para trazer o título de volta, há duas saídas:
- Cadastrar o título com o ISBN no código de barras, e reimportar.
- Escolher o produto à mão na linha do pedido. Essa escolha fica travada e sobrevive às próximas leituras — corrigir uma vez é corrigir para sempre.
O filtro Com títulos sem produto, na lista de pedidos, junta tudo o que está saindo incompleto — é a fila de trabalho de quem cuida do cadastro.
Gerar a cotação
No pedido, o botão Gerar cotação cria o pedido de venda em rascunho, com as linhas casadas, as quantidades pedidas e o net cost como preço. O prazo final da janela de entrega da Amazon vira a Data de entrega.
As linhas sem produto no cadastro ficam de fora, e o histórico do pedido diz quais foram.
Para trabalhar em lote: selecione os pedidos na lista, abra o menu de engrenagem e escolha Gerar cotações. Aqui a regra é o contrário da do botão individual — o que não pode ser gerado é pulado, não interrompe os outros, e no fim aparece um relatório do que ficou de fora e por quê. Numa seleção de cinquenta, parar no terceiro jogaria fora o trabalho dos outros quarenta e sete. Pula-se pouca coisa: pedido que já tem cotação, e pedido em que nenhuma linha casou — esse não tem o que cotar.
A cotação nunca é confirmada pelo módulo. Confirmar assume compromisso de entrega e move estoque — quem faz isso é uma pessoa, depois de olhar. E nada é enviado à Amazon nesse momento: o que acontece aqui não chega ao Vendor Central.
Duas recusas que preferem falhar a acertar por acaso:
- Moeda diferente da empresa — a cotação é recusada em vez de convertida. Converter caladamente poria um número plausível e errado num documento que ninguém reconfere.
- Pedido que já tem cotação — não se gera a segunda. Se a primeira estiver errada, ela é que deve ser corrigida ou cancelada.
- Pedido sem nenhuma linha casada — não há o que cotar, e uma cotação vazia registraria uma venda de nada.
Quando a Amazon muda o pedido
Ela muda. O estado anda de New para Acknowledged e depois Closed, e a quantidade aceita frequentemente é menor que a pedida.
Enquanto não existe cotação, mudança é só notícia: a cópia se atualiza e pronto. Depois que a cotação existe, o módulo avisa e não reescreve — o pedido ganha uma tarja vermelha dizendo exatamente o que mudou (estado, quantidade, em que linha), e o documento comercial fica intacto.
É deliberado: a cotação pertence a quem a fez. Reescrevê-la por baixo trocaria um problema visível por um invisível. Depois de resolver, o botão Dar por lida a mudança tira o aviso e guarda o texto no histórico.
Se a Amazon inventar um estado que o módulo ainda não conhece, o pedido é importado assim mesmo e fica marcado. O filtro Estado desconhecido na Amazon lista esses casos. Recusar a gravação por causa de um nome novo perderia a venda para preservar a lista.
O relatório por título
A agenda responde por pedido; esta tela responde por livro. Em , uma linha por título por pedido, em pivô.
A tela abre pela pergunta que se faz primeiro — ainda dá para atender? — na coluna Situação no Odoo:
| Situação no Odoo | O que significa |
|---|---|
| Cotado aqui | O título virou linha de uma cotação por este módulo. |
| Ainda dá | Não foi atendido, mas o pedido continua aberto na Amazon: cadastrar o título ou gerar a cotação ainda resolve. |
| Janela fechada | Não foi atendido e a Amazon já fechou o pedido. Daqui não sai mais nada. |
O nome da coluna é literal: situação no Odoo, não no mundo. "Cotado aqui" conta só o que passou por este módulo. Como um ano de histórico foi importado depois do fato, quase nada antigo aparece cotado — aqueles livros saíram pelo portal, antes deste módulo existir. Para esse período, "janela fechada" é o normal, não perda; use o filtro de data para olhar só o que chegou desde que o módulo entrou em operação.
"Janela fechada" não quer dizer que o livro nunca foi entregue. Um pedido atendido por fora — pelo portal, por planilha, do jeito que a casa fazia antes deste módulo — também chega aqui fechado, e a Vendor Orders API não distingue um caso do outro. O que a coluna afirma é apenas isto: por dentro do Odoo, aquele título naquele pedido não vai mais a lugar nenhum. Para o histórico importado, espere números altos aqui — é passado, não perda.
Expandindo por Atendimento, aparece onde parou — e essa é a segunda pergunta, a da causa. Três paradas, e só a última é sucesso:
| Situação | O que significa | De quem é o problema |
|---|---|---|
| Sem produto no cadastro | O ISBN não existe em nenhum produto; a linha ficou de fora da cotação. | De quem cuida do cadastro. |
| Ainda sem cotação | O título casou, mas ninguém transformou o pedido em cotação. | De quem opera. |
| Em cotação | Virou linha de um pedido de venda. | — |
Agrupe por Título nas linhas e leia as colunas, com exemplares e valor ao lado. Três filtros prontos: Janela fechada (o que não foi e não será mais), Ainda dá para atender (a fila de trabalho de hoje) e Não atendidos, que junta os dois.
Quanto tempo leva
A medida Dias até fechar conta do pedido até a Amazon encerrar o documento. É o mais perto de um tempo de entrega que a Vendor Orders API oferece — ela não nos diz quando recebeu, diz quando fechou.
Ligue o filtro Ciclo concluído antes de ler essa média. Pedido ainda aberto vale zero e só puxaria o número para baixo. E lembre que a Amazon também fecha o pedido que cancelou: um ciclo de poucas horas é quase certamente cancelamento, não velocidade.
Ao lado dela, Dias concedidos mostra o prazo que a Amazon deu — comparar os dois é comparar o combinado com o acontecido.
Limites conhecidos
- Um cliente por conta — a cotação sai sempre para o mesmo parceiro. Como cada centro de distribuição da Amazon tem CNPJ próprio, o correto é resolver o cliente por pedido, a partir do buying party. Está mapeado, ainda não implementado.
- Impostos — a linha nasce com o net cost e o Odoo aplica a posição fiscal do parceiro. Vale conferir com um pedido real antes de confiar no total.
- Endereço de entrega — o pedido traz o centro de distribuição de destino, mas ele ainda não vai para o endereço de entrega da cotação.
- Devoluções e chargebacks — fora do escopo. A Amazon os informa por outras APIs.
Perguntas frequentes
Importar avisa a Amazon de alguma coisa?
Não. Nenhuma operação do módulo escreve na Amazon — nem importar, nem gerar cotação, nem
confirmar o pedido de venda depois.
A tela de configuração está vazia e eu já configurei a conta.
Você está em outra empresa. A conta pertence a uma empresa e a regra multiempresa a esconde das
demais — troque no seletor do canto superior direito. A própria tela avisa quando é esse o caso.
Por que o preço da linha não é o preço de capa?
Porque a Amazon não paga o preço de capa: ela paga o net cost, que é o que a cotação
registra. O preço de capa fica guardado na linha, para conferência.
Reimportei e o produto que eu tinha corrigido à mão voltou ao que era?
Não deveria — escolha humana fica travada. Se voltou, o produto foi trocado por outra
importação com o campo destravado; reabra a linha e escolha de novo.
A cotação saiu com menos linhas que o pedido da Amazon.
Os títulos sem produto no cadastro ficam de fora. O histórico do pedido lista os ISBNs
deixados; cadastre-os (ou escolha o produto à mão na linha) e a próxima cotação sai completa.
A cotação já criada não se completa sozinha — corrija-a ou cancele e gere de novo.
O pedido sumiu da lista.
Provavelmente foi fechado pela Amazon e você está com o filtro Ainda aberto
ligado. Pedido fechado continua no sistema, apenas em cinza.
Preciso instalar alguma biblioteca Python?
Não. A API da Amazon não exige mais assinatura AWS, e o módulo usa só o que o Odoo já tem.
- Integração Metabooks — de onde vem o ISBN que faz o casamento funcionar.
- Papéis de acesso — os grupos da casa e como eles se somam aos deste módulo.
liber