Acompanhamento de pedidos
Este é um conjunto de scripts Python destinados a agilizar e automatizar o processo de reconciliação de pedidos com grupos de compras. Basicamente, ele automatiza a recuperação de informações de rastreamento, upload para sites de grupos de compras e reconciliação de pedidos após reembolso. O principal objetivo desses scripts é permitir que você consulte uma única Planilha Google e saiba imediatamente quais pedidos foram devidamente rastreados e reembolsados pelos grupos de compras, além de fornecer ao usuário as ferramentas para solucionar quaisquer problemas que possam surgir.
O que isso faz
Existem duas tarefas principais. Eles são:
get_order_tracking.py:
Este script faz o seguinte:
- Analisa e-mails de notificação de envio não lidos dos últimos 45 dias da Amazon ou Best Buy.
- Analisa um conjunto de informações desses e-mails e e-mails associados, incluindo números de rastreamento, números de pedidos, custos de pedidos, endereços de e-mail, URLs de pedidos e datas de envio e salva essas informações em disco e no Drive.
- Carrega esses números de rastreamento para sistemas de rastreamento de pedidos de grupos como Pointsmaker, MYS ou USA.
- Agrupa pedidos ou números de rastreamento agrupados pela Amazon ou Best Buy para reconciliação posterior (por exemplo, dois pedidos são agrupados se forem enviados na mesma remessa).
- Envia por e-mail para você (o usuário) uma lista de números de rastreamento/pedidos encontrados, para verificação de integridade.
Se não conseguir analisar um e-mail por algum motivo, ele marcará o e-mail como não lido para que você possa lê-lo manualmente mais tarde. Isso às vezes acontece se a Amazon estiver lenta – nesses casos, não há mal nenhum em executar o script novamente.
reconciliar.py
Este é o roteiro para a reconciliação. Ele faz o seguinte:
- Carrega nos grupos de números de rastreamento/pedidos de
get_tracking_numbers.py
. - Preenche os custos reembolsados quando pode (para grupos como Pointsmaker, MYS ou EUA). Isso envolve acessar o site do grupo e analisar o mapeamento desde o número de rastreamento até o custo reembolsado.
- Agrupa pedidos por ordem de compra (se aplicável, somente EUA).
- Aplica ajustes manuais (consulte "Saída de folhas" abaixo).
- Carrega a saída da reconciliação para uma Planilha Google em um formato legível. Consulte "Saída de folhas" abaixo para obter mais informações.
Limitações
- Isso só funcionará para uma conta de e-mail por vez
- Isso só funcionará para GMail
- O upload automático funciona apenas para os EUA e sites cujos sites tenham o mesmo formato de Pointsmaker ou MYS
- Todos os endereços devem conter uma chave que identifique exclusivamente a qual grupo de compras o endereço pertence. O padrão é parte do endereço do grupo.
Pré-requisitos
- Python3 e pip3 (eles devem vir juntos)
Instruções
Se você estiver no Windows, use este guia em vez destas instruções, pois o Windows é um pouco difícil e este guia é claro.
Se você estiver em um Mac (OSX):
Abra um terminal e execute os seguintes comandos. Eles instalam o Homebrew (um gerenciador de pacotes), depois usam o Homebrew para instalar o Git + Python, baixam o projeto e configuram o ambiente Python.
cd ~
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install pyenv
brew install git
git clone https://github.com/gbrodman/order-tracking.git
cd order-tracking
pyenv install 3.7.4
pyenv global 3.7.4
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.bash_profile
source ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pip install -r requirements.txt
Em todos os sistemas operacionais:
- Desconecte-se de quaisquer VPNs que possam interferir (elas podem ou não causar alguns problemas de conectividade de rede)
- Habilite o IMAP no GMail - vá para a página Configurações, depois para a guia "Encaminhamento e POP/IMAP" e certifique-se de que o IMAP esteja habilitado
- Copie config.yml.template para config.yml
- Defina a configuração (consulte a seção "Configuração" abaixo para obter mais informações)
- Execute
python get_tracking_numbers.py
seguido de python reconcile.py
Configuração
Aqui estão os detalhes dos campos em config.yml:
- O e-mail e a senha devem ser uma conta do GMail – especificamente, a senha deve ser uma senha específica do aplicativo. Provavelmente, você poderá manter a mesma configuração de IMAP e SMTP (a menos que tenha certeza de que não deveria).
- Desde março de 2020, as senhas de aplicativos não são mais suportadas pelo Google. OAuth é necessário para ser usado para fazer login no Gmail. Veja detalhes abaixo sobre como configurar isso.
- Para cada grupo em 'grupos', inclua o nome completo do grupo (para sites como MYS, este deve ser o URL menos o bit ".com"). Inclua uma chave exclusiva por grupo (o padrão é baseado no endereço) que aparecerá apenas nas notificações de envio para esse grupo. O nome de usuário e a senha devem ser do portal online do grupo para que possamos fazer upload dos números de rastreamento e extrair dados de reconciliação.
- lookbackDays é o quanto atrás em sua conta de e-mail pesquisaremos e-mails de remessa não lidos da Amazon. Nota: os links de envio expiram após 45 dias, então não devemos ultrapassar esse prazo
- O baseSpreadsheetId de reconciliação deve ser o ID de uma Planilha Google existente. Consulte a seção abaixo sobre como conceder permissões corretas a essa planilha. O ID pode ser recuperado do URL, que tem o formato "https://docs.google.com/spreadsheets/d/SHEET_ID"
- O campo "driveFolderId" deve ser o ID de uma pasta do Google Drive na qual armazenaremos dados persistentes. Isso pode ser recuperado no URL da pasta, que tem o formato "https://drive.google.com/drive/folders/FOLDER_ID"
Planilhas/configuração e permissões da unidade
Precisamos criar e usar uma conta automatizada do Google Cloud para gravar no Drive e no Planilhas. Veja como fazemos isso:
- Primeiro, crie um projeto do Google Cloud em https://console.cloud.google.com
- Em seguida, crie a conta de serviço no Google Cloud e obtenha as credenciais para ela, seguindo as etapas 1 a 5 nesta página. Certifique-se de anotar o endereço de e-mail da conta de serviço – deve ser muito longo e incluir “.gserviceaccount.com” no final.
- Ao baixar o arquivo JSON de credenciais, renomeie-o como "creds.json" e coloque-o no mesmo diretório desses scripts.
- No site do console do Google Cloud, use o painel de navegação esquerdo para acessar "APIs e serviços"
- Em seguida, clique em “Ativar APIs e serviços”. Isso o levará para a biblioteca API. Você precisa pesquisar e ativar a "API do Google Drive" e a "API do Planilhas Google". Para cada um, pesquise, clique no termo e ative-o.
- A seguir, para a reconciliação da Planilha Google e da pasta Google Drive que configuramos, certifique-se de compartilhar a planilha/pasta com a conta de serviço que criamos anteriormente. Basta compartilhar ambos com o endereço de e-mail que termina em “.gserviceaccount.com” (certifique-se de que o endereço tenha permissões de edição na planilha e na pasta).
- Para OAuth, crie uma chave em https://support.google.com/cloud/answer/6158849?hl=en e armazene como client_secret.json no mesmo diretório desses scripts.
Deveria ser isso - o arquivo "creds.json" dará aos scripts a capacidade de serem executados como a conta de serviço, e concedemos à conta de serviço permissões para as coisas nas quais ela precisa gravar.
Argumentos
-
--headless
para ser executado em um navegador sem cabeça. Isso é útil se você não se importa em ver o que a automação está fazendo. -
--firefox
para rodar usando Firefox/Geckodriver em vez de Chrome -
--groups AB
executará a reconciliação apenas nos grupos A e B. Se omitido, executará a reconciliação em todos os grupos.
Saída de planilhas
A tarefa de reconciliação tem uma saída que consiste em duas guias na Planilha Google que configuramos anteriormente. As abas são:
Reconciliação
Esta é a planilha principal. Como um único número de rastreamento pode consistir em vários pedidos e um único pedido pode conter vários números de rastreamento, nós os agrupamos em pedidos com base em como as remessas foram divididas. As colunas são:
- Pedidos: IDs de pedidos contidos neste grupo
- Rastreamentos: números de rastreamento contidos neste grupo
- Valor faturado: valor total cobrado de você para este grupo
- Valor Reembolsado: Valor total que os sites dos grupos de compra mostram para este grupo
- Data da última remessa: Esta é a data da remessa mais recente. Se foi há muito tempo e o pedido não foi reembolsado, provavelmente você terá um problema.
- POs: Lista de pedidos de compra (atualmente apenas para os EUA)
- Grupo: o grupo de compra
- Para e-mail: o e-mail para o qual os e-mails de envio/pedido foram enviados
- Ajuste manual de custos: esta é uma forma de ajustar o custo reembolsado esperado de um pedido. Se você sabe que um item foi sub-reembolsado por um bom motivo, você pode adicionar esse valor aqui. Esperamos que o valor faturado seja igual ao valor reembolsado mais esse ajuste manual de custos. Isso será salvo se você alterá-lo.
- Substituição manual: Outro campo manual, marque se tiver certeza de que o grupo parece correto - ele irá ignorar qualquer outra coisa e marcar como resolvido
- Diferença Total: É a diferença total entre o valor faturado e reembolsado (mais ajustes manuais). Verde significa que os valores foram iguais ou a substituição foi verificada, amarelo significa que você foi reembolsado em excesso e vermelho significa que você foi reembolsado a menos.
- Notas: Notas para seu uso pessoal
Rastreamentos
Cada linha nesta folha corresponde a um número de rastreamento. Ele contém pedidos para esse rastreamento e outras informações sobre eles, incluindo o valor reembolsado, se pudermos encontrar um. Esta guia é mais útil para descobrir exatamente onde ocorreu um problema, caso um grupo tenha verificado incorretamente algum item.
Importação de relatório da Amazon
Primeiro, exporte um relatório de remessas comerciais da Amazon como CSV (por meio da seção Business Analytics do site). Em seguida, faça upload desse arquivo CSV para o Google Drive e abra-o como um arquivo do Planilhas. Anote o ID da planilha, que pode ser recuperado do URL da planilha da mesma forma que antes, ou seja, "https://docs.google.com/spreadsheets/d/SHEET_ID". Observe também o nome da guia.
Em seguida, execute python import_report.py
. Ele solicitará o ID da planilha e o nome da guia mencionados acima - insira-os. Ele imprimirá informações sobre os rastreamentos que está importando e também imprimirá todas as linhas para as quais não foi possível encontrar um grupo válido (nota: o o endereço não está formatado como "Cidade, ESTADO", portanto, para esta seção, recomendo usar o início dos endereços como chaves de grupo, por exemplo, '123 Fake St' (sem as aspas) na configuração do seu grupo).
Importação manual de pedidos
Às vezes, pode-se desejar adicionar manualmente um objeto de rastreamento ao armazenamento de dados. Para fazer isso, execute o script manual_input.py
. Se você executá-lo sem argumentos, ele solicitará uma série de entradas (também permite excluir objetos de rastreamento existentes). A maioria dos argumentos é opcional e tentará preencher padrões sensatos, mas o número de rastreamento, o número do pedido e os campos de grupo são obrigatórios.
Se você deseja executar a entrada em uma única etapa, adicionando um novo objeto de rastreamento na forma mais simples, basta executar um comando:
python manual_input.py -a -t TRACKING_NUMBER -g GROUP -o ORDER_NUMBER
por exemplo
python manual_input.py -a -t TBA1234567890 -g mysbuyinggroup -o 123-1234567-1234567
Doações
Este software é totalmente gratuito, licenciado sob a Licença Pública Geral GNU Affero. No entanto, se você deseja doar algum dinheiro para mim, sinta-se à vontade para enviar qualquer quantia em dinheiro através do Paypal para https://paypal.me/GustavBrodman