Hotmart: sincronizar vendas — como o processo roda e o que trava cada venda

Sincronizar vendas é o processo que traz para o ERP as vendas que aconteceram na Hotmart: cria o cliente, cria o item (produto ou serviço) e cria a venda. É o ponto que mais gera chamado, e quase sempre pelo mesmo motivo: a tela de Vendas do aplicativo engana. Ela não mostra o que está no ERP.

A LISTA DE VENDAS NÃO VEM DO ERP
Toda vez que você abre a tela de Vendas do aplicativo Hotmart, o aplicativo consulta a Hotmart ao vivo e devolve o que a Hotmart responder. Só depois disso ele cruza cada venda com o ERP, procurando pelo código de transação. É por isso que a venda aparece na lista e mesmo assim não existe no ERP: a lista prova que a venda existe na Hotmart, e nada além disso.
Quem responde se a venda entrou é a coluna Pedido. Quando ela mostra o código do pedido do ERP, em forma de link, aquela venda já foi sincronizada e o link abre a venda no ERP. Quando mostra quatro traços (----), aquela venda ainda não existe no ERP.
Os filtros da busca avançada (Cliente, Situação e Data da venda) também são aplicados na Hotmart, não no ERP. E quando você não informa período nenhum, a busca cobre os últimos 90 dias. Essa é a razão real de venda antiga não aparecer na lista: ninguém perdeu a venda, o período é que não a alcança.
Se a Hotmart não devolver venda nenhuma para aquele filtro, a tela não fica vazia: o aplicativo avisa "Nenhuma venda encontrada." e volta para a tela inicial do Hotmart. Não é erro de integração, é período sem venda.

O FORMULÁRIO DE SINCRONIZAÇÃO
O botão Sincronizar abre um formulário com três campos, os três obrigatórios: Tipo, A partir de e Até.
Tipo é uma lista fechada, com exatamente duas opções: Venda de produtos e Venda de serviços. Não existe uma terceira opção, nem uma opção que faça os dois de uma vez.
As datas já vêm preenchidas com o primeiro e o último dia do mês corrente. Você pode trocar, mas o próprio formulário recusa intervalo maior que 90 dias, com a mensagem "O intervalo entre as datas deve ser menor que 90 dias." (é o mesmo limite que o texto do topo chama de "3 meses"). Para cobrir um período maior, sincronize em faixas de até 90 dias, uma de cada vez.
Dando certo, a resposta é "Sincronização iniciada com sucesso." — iniciada, não concluída.

AS TRÊS RECUSAS ANTES DE COMEÇAR
"Existe uma sincronização em andamento." Só roda uma sincronização por vez na mesma loja, e ela ocupa a loja inteira, não só o tipo escolhido. Enquanto a anterior não terminar, nenhuma outra começa.
"Nenhuma venda encontrada." A Hotmart não devolveu venda nenhuma naquelas datas.
"Todas as vendas no período informado ja foram sincronizadas." Antes de começar, o aplicativo descarta toda venda cujo código de transação já existe no ERP. Se não sobrar nenhuma, ele nem inicia.
Aqui moram dois detalhes importantes. O primeiro: não existe reimportação. Venda já sincronizada nunca é trazida de novo, nem para atualizar valor, situação ou cliente. O texto do próprio formulário diz que o processo "atualizará informações de vendas com status Completo ou Aprovado", mas não é isso que acontece: venda que já está no ERP é jogada fora antes de o processo começar. Correção em venda já sincronizada é feita na venda do ERP, na mão.
O segundo: a sincronização não filtra por situação. O único recorte é período e tipo — entra toda venda daquele intervalo que ainda não está no ERP, seja qual for a situação dela na Hotmart. O trecho "Completo ou Aprovado" do formulário não descreve o que o processo faz.

COMO O PROCESSO RODA
Sincronizar não é uma espera de tela. Quando você confirma, o aplicativo monta a lista dos códigos de transação que faltam, guarda essa lista e registra um cron no ERP. O cron chama o aplicativo de volta várias vezes, e cada execução processa até 10 vendas. Quando não sobra código na lista, o processo se encerra, o cron é removido e o ERP recebe a notificação "Hotmart: Sincronização de vendas finalizada com sucesso.".
Enquanto roda, a tela de Vendas mostra a faixa "Sincronização em andamento: X de Y vendas processadas". No fim, ela vira o aviso "Sincronização concluída com sucesso!" com o total.
Atenção ao contador: o X conta só as vendas que realmente entraram no ERP. Venda que deu erro não soma. Por isso, no aviso de conclusão, X menor que Y não significa que parou no meio — significa que a diferença deu erro, e o motivo está no link de detalhes.
Não existe prazo. Não prometa minutos nem horário: o tempo depende de quantas vendas entraram na lista e de como a Hotmart e o ERP respondem a cada uma.
A faixa de andamento não se atualiza sozinha. Ela é preenchida no momento em que a lista de vendas é carregada. Para ver o número andar, recarregue a tela ou refaça a busca.
O aviso de conclusão fica na tela até você fechá-lo no X. Depois de fechado, ele não volta. Iniciar uma nova sincronização também limpa o aviso da anterior.

QUANDO UMA VENDA FALHA
Erro em uma venda não interrompe as outras. A venda com problema é registrada e o processo segue para a próxima. O erro fica guardado na sincronização e aparece no aviso de conclusão, no link "Algumas vendas não foram sincronizadas. Clique aqui para mais detalhes.". O link abre a janela "Vendas com erro na sincronização:", com uma linha numerada por venda, no formato "Venda : (código de transação) - motivo".
Venda que falhou não é reprocessada sozinha. Depois de corrigir a causa, sincronize o mesmo período outra vez: as que já entraram são descartadas e só as que faltaram serão trazidas.

AS TRÊS MENSAGENS QUE MAIS TRAVAM UMA VENDA
"Forma de pagamento do pedido não foi mapeada para o ERP". O meio de pagamento que veio da Hotmart (Boleto, Cartão de crédito, Pix, Paypal, Carteira, Google Pay e os demais) não chegou a nenhuma forma de pagamento do ERP. O aplicativo usa primeiro o de-para que você salvou; se não houver de-para, ele tenta casar pelo nome, procurando uma forma de pagamento do ERP com o nome exatamente igual ao rótulo (por exemplo, uma forma chamada Pix). Não achando nem uma coisa nem outra, a venda para aqui. Resolve na tela de formas de pagamento do próprio aplicativo Hotmart.
"Situação do pedido não foi mapeada para o ERP". Mesma lógica, agora com a situação da venda na Hotmart (Aprovado, Completo, Cancelado, Aguardando Pagamento, Reembolsado e as demais): ou existe o de-para, ou existe uma situação de venda no ERP com o nome igual ao rótulo. Resolve na tela de situações do aplicativo.
"O item (nome do infoproduto) já está vinculado como produtos, e não pode ser sincronizado como servicos" — e a mensagem inversa. Aquele infoproduto já foi trazido antes como uma coisa e você mandou sincronizar como a outra. Um infoproduto tem um único vínculo.

PRODUTO OU SERVIÇO: A ESCOLHA QUE MUDA O QUE NASCE NO ERP
O campo Tipo não é um rótulo. Ele decide o que o ERP cria. Com Venda de produtos, o infoproduto é cadastrado como Produto e a venda entra como venda de produtos. Com Venda de serviços, o infoproduto vira Serviço e a venda entra como venda de serviços. São cadastros e telas diferentes dentro do ERP, e a nota que você emite depois sai de uma venda ou da outra — por isso a escolha precisa combinar com o que a contabilidade espera daquele infoproduto.
O vínculo é gravado na primeira vez que aquele infoproduto é sincronizado e vale para as vendas seguintes dele. Depois disso, sincronizar o mesmo infoproduto pelo outro tipo é justamente o que produz a terceira mensagem de bloqueio.

O CAMINHO DE UMA VENDA SÓ
Cada linha da lista tem os botões Gerar produto e Gerar serviço. Eles abrem, dentro do próprio aplicativo Hotmart, o formulário de venda do ERP já preenchido com os dados daquela venda — você confere e salva; a venda só é criada quando você salva. Esse caminho é útil quando você precisa de uma venda específica e não do lote.
Três diferenças que valem saber. Se o infoproduto já estiver vinculado ao outro tipo, aí o aplicativo pergunta: "Esta venda inclui um infoproduto vinculado anteriormente como Produto. Deseja alterar o vínculo para Serviço?" (e o inverso). Aceitando, o vínculo é trocado e você segue. Antes de aceitar, saiba o que isso faz: trocar o vínculo não converte o cadastro que já existe no ERP — cria um cadastro novo do outro tipo e deixa o antigo lá. Isso tem fonte própria nesta pasta, a de produto ou serviço. Na sincronização em lote essa pergunta não existe: a venda é simplesmente recusada com a mensagem de vínculo.
Se a venda já foi sincronizada, o aplicativo avisa "Esta venda já foi sincronizada." e não deixa seguir.
E situação ou forma de pagamento sem de-para não bloqueiam esse caminho: os campos chegam em branco no formulário e você escolhe na hora. É a saída para destravar uma venda específica enquanto o de-para não é criado. O passo a passo desse caminho, com o formulário, as permissões que valem nele e o que acontece se a gravação falhar, tem fonte própria nesta pasta.

ORDEM DE DIAGNÓSTICO
1. A loja está integrada. Se a tela de Vendas não abre e devolve "Esta loja não está integrada ao Hotmart.", levando para a tela inicial, pare aqui: não há o que sincronizar antes de a integração existir e estar autorizada naquela loja.
2. O período. O intervalo cabe em 90 dias? E a venda aparece na lista quando você filtra por esse período? Se não aparece na lista, ela não vai entrar na sincronização.
3. Já foi sincronizada. Olhe a coluna Pedido daquela linha: com código, já está no ERP; com ----, não está.
4. A mensagem de erro. Abra o link de detalhes do aviso de conclusão e leia o motivo daquela venda. As três mensagens acima cobrem a maioria.

O QUE COSTUMA DAR ERRADO
"Parou do nada" e "sincronizou 8 de 20 e travou". São duas coisas diferentes. Se ainda está rodando, é a faixa de andamento, que não se atualiza sozinha: volte para a lista de Vendas e recarregue, que o número aparece atualizado. Se o aviso já é o de conclusão, então as 12 restantes deram erro — o motivo está no link de detalhes.
"Sincronizei e não veio nada". Verifique qual mensagem apareceu. "Todas as vendas no período informado ja foram sincronizadas." significa que estava tudo no ERP; "Nenhuma venda encontrada." significa que a Hotmart não devolveu venda naquelas datas.
"Não consigo puxar vendas do ano passado". O formulário não aceita mais de 90 dias por vez, e a lista sem período informado só alcança os últimos 90 dias. Vá em faixas, da mais antiga para a mais nova.
"Diz que existe uma sincronização em andamento e não deixa". Há uma rodando na mesma loja. Espere terminar — quando terminar, ela sai da frente sozinha. Não existe botão para cancelar uma sincronização; sincronização que fica presa é caso de abrir chamado.
Venda que deu erro não volta sozinha. Corrigir o de-para não reprocessa nada: é preciso sincronizar o período de novo.
Situação ou meio de pagamento novo na Hotmart trava as vendas que os usarem até você criar o de-para. Uma venda com erro não contamina as outras do lote.
Sincronizar cria a venda no ERP. Do cadastro da venda para a frente — financeiro, estoque, nota fiscal — vale o fluxo normal do ERP.

ONDE ISSO NÃO SE RESOLVE
Esta fonte responde pela sincronização em lote: o que ela traz, o que ela recusa e por que uma venda trava. Cada um destes tem fonte própria nesta pasta: o de-para de situações e de formas de pagamento; o vínculo produto ou serviço e o que Alterar vínculo faz; o caminho de gerar a venda uma a uma; as listas e os relatórios do aplicativo; e autorizar, vincular por loja ou remover a integração. Cliente, produto, serviço, venda e nota fiscal são conceitos do ERP e se respondem pelas fontes do ERP — esta fonte só diz como a venda da Hotmart chega até eles. O desenho comum das integrações está na fonte raiz de Integrações.