Desenvolvimento   Millen-22253 – Integração e- Millennium X hub Plugg To
Release                   102
Versão                     5
Autor                      Jaciara Silva
Nome do Processo: Movimentações
Na atual integração com o Hub da Plugg.TO o e-Millenium é sempre passivo, ou seja, somente recebe as chamadas realizadas pelo hub. No entanto, para que o status do pedido de venda seja atualizado, o Plugg.TO tem a necessidade de ler a API de listagem de pedidos constantemente, o que causa lentidão e perda de performance. 
Para atender esta necessidade foram desenvolvidos um webhook e um processo de listagem para contingenciamento deste webhook. 
No primeiro módulo criado, serão interceptadas as chamadas que aprovam, reservam, faturam, embarcam, entregam e/ou cancelam os pedidos, sendo gravados numa tabela, com a data/hora da chamada, "trans_id" e posição da fila (sequencial). Esse módulo também disponibilizará um endpoint que irá listar, a cada chamada, no máximo 100 'registros' (parametrizável) dessa tabela. Ao serem listados, seguirão para o final da fila, onde ficarão bloqueados por 2 horas (parâmetro customizável). 
Quando o cliente que consome o 'feed' realmente tiver processado o pedido, deverá ser realizada a chamada em um segundo endpoint, que será o responsável pela "retirada" da fila, onde, efetivamente, o pedido deixará de existir na tabela.
Obs.: A ação de exclusão do pedido da tabela será parametrizável, sendo:
No processo exclusivo para o recurso, um segundo módulo consumirá o endpoint da Plugg.TO, onde deverá enviar o pedido e seu status, seguindo o mesmo código gerado pela rotina "processa_status":
0  Aguardando Pagamento 
1  Pagamento Confirmado 
2  Em Preparação
3  Despachado
4  Entregue
5  Cancelado
6  Problemas
7  Embarcado
8  Falha na Entrega
Após o envio, este pedido deixará de existir na tabela.
Atenção! Este recurso não acompanha a versão do sistema. Para utilizá-lo, solicite aos nossos consultores que forneçam o módulo para instalação. Caso você não consiga fazer a instalação, entre em contato com nosso departamento comercial e solicite a visita de um consultor.
Instalar os módulos millenium!eco_feed.minst e millenium_eco!webhook.minst. Para informações sobre como fazer a instalação de módulos no e-Millennium acesse o Manual de instalação de módulos no e-Millennium. 
No caso desta integração, não haverá uma tela para configuração de acessos, pois o cliente irá instalar o módulo para habilitar o acesso as API's desenvolvidas. Quem vai realizar as configurações e chamadas à API será a Plugg To, que não possui acesso ao e-Millennium. Portanto, não se faz necessária a tela de configurações. 
Com os módulos instalados, é possível acessar o método que realizará os cadastros do FEED e WEBHOOK. Através do método: MILLENIUM_ECO!WEBHOOK.VITRINE_CONFIG_WEBHOOK.REGISTRAR. 
Serão alimentadas as tabelas: VITRINE_FEED_CONFIG e VITRINE_CONFIG_WEBHOOK;
Deverão ser informadas qual VITRINE queremos configurar e qual URL esta vitrine acessará, conforme exemplo abaixo:

Configuração do webhook
Em c:\wts\scheduler!millenium_eco!webhook.ini, temos a configuração do método que inicialmente será com 1 minuto. Este método irá rodar a cada X tempo (de acordo com a configuração), acionando o método MILLENIUM!ECO_FEED.VITRINE_FEED.LISTAR que retornará por padrão o máximo de 100 pedidos que possuam DATA_HORA menor que 2 horas de diferença do horário de execução. Com este retorno será verificado se a VITRINE vinculada ao pedido possui a configuração no webhook, para que possa ter URL a acessar e, se o status do pedido está dentro do configurado. Caso atenta a todos requisitos, será realizada uma chamada POST para URL informada. Caso contrário será adicionado um log, e seguiremos para próxima listagem. Após varrer todos pedidos informados no retorno, eles serão removidos da tabela.

Configuração do feed
Em c:wts\scheduler!millenium_eco!feed.ini
Para fins de teste, está configurado com 1.440 minutos, podendo ser ajustado de acordo com a necessidade do cliente. Onde o método excluirá todos os registros da tabela VITRINE_FEED que possuam o campo DATA_HORA com mais de 7 dias do horário/data atual em que ele for executado. 
Também será disponibilizado o acesso a exclusão com o método: MILLENIUM!ECO_FEED.VITRINE_FEED.EXCLUIR, onde será possível escolher: excluir pela vitrine, pelo id de controle da tabela, ou pelo trans_id do feed.

Inclusão de pedido de venda – Status 0
Inclusão de pedido de venda com aprovação – Status 1
Pedido em preparação (na inclusão foi feita a reserva/pré-faturamento do pedido) – Status 2
Faturamento do pedido de venda / Despacho – Status 3
Entregue - Status 4
O status Entregue deve-se a integração com Gateway de Frete, quando alteramos o status para Aprovado, é enviado para a plataforma configurada, neste momento podemos ter sucesso ou falha na entrega das informações para a plataforma (considera volume eventos).
Atenção! Não deve ser confundido com a entrega da mercadoria para o consumidor final.
Cancelamento - Status 5
Ocorre quando, nas opções da tela do Pedido de Venda, é acionada a função de Quitar pedido.
Embarcado - Status 7
Ao criar um embarque e vincular os itens (dos pedidos criados) nesse embarque, alterando o status do embarque para "Aprovado", será replicado o status de Embarcado. 
Falha na entrega do pedido - Status 8
Falha na entrega deve-se a integração com Gateway de Frete, quando o status é alterado para Aprovado, é enviado para a plataforma configurada, neste momento podemos ter sucesso ou falha na entrega das informações para a plataforma.
