nfe / whmcs-addon

Módulo Nota Fiscal para WHMCS via NFE.io. Automatiza a emissão de notas fiscais.
10 stars 8 forks source link

WIP: Novas funcionalidades e melhorias #159

Closed andrekutianski closed 2 months ago

andrekutianski commented 4 months ago

Esta requisicao implementa novos recursos, melhorias e correcoes no módulo, visando melhor operacao, adminsitracao e integridade dos dados. As principais mudancas estao descritas a seguir.

Tratamento de status do cancelamento da nota via API

Refatorado a manipulação do status da nota quando é realizada cancelamento para atender a estrutura atual de retorno da API de cancelamento. Antes, ao cancelar uma nota via API, o objeto de retorno possuía um atributo "message" onde o processo de atualização de notas cancelava se baseava. Agora, a API de cancelamento está retornando a nf no objeto e código de status 202. Devido a isso as notas canceladas não estavam sendo registradas adequadamente.

Screenshot from 2024-04-27 21-37-02

Melhoria no tratamento de erros e registro de status do fluxo

Foi adicionado o registro do valor de flowStatus dos retornos do webhook, garantindo que em cenários de falha ou problemas, a informação deste atributo esteja registrada corretamente para solução de problemas. Com isso será possível analisar as mensagens de retorno de forma mais eficiente e também utilizar seus valores para processamento nas rotinas de mensagens de retorno implementadas nestas atualizações.

image

Também foi padronizado os identificadores e adicionado novos registros de log para permitir uma melhor depuração, tanto do retorno do webhook quanto em rotinas internas do módulo.

NOTA: A mensagem ApiNoResponse é uma mensagem interna utilizada para identificar quando uma ação de cancelamento não retornou o devido status pela nota já se encontrar cancelada na API ou tiver sua emissão não concluída e o usuário tenta cancelar da mesma forma.

Adicionado opção de atualização da nota

Foi adicionado na interface do administrador uma nova opção que permite a atualização do status da nota de forma manual. Com isso, é possível buscar as informações diretamente na API para refletir estas informações no WHMCS. Este recurso é útil em casos onde as informações do status da nota não foram sincronizados com o módulo.

image

Tratamento de mensagens do callback e exibição ao usuário

Foi incluída a mensagem do fluxo de emissão existente na resposta do webhook na interface do usuário para permitir maior clareza em relação ao status do processo. Agora, caso o fluxo apresente um problema, a mensagem com os detalhes do motivo será exibida junto às informações da nota.

Com isso, será possível compreender melhor o motivo da falha, além de permitir a exibição de condições como quando o prestador possuir pendências junto a prefeitura como o caso de notificações pendentes de ciência no DTE que podem impedir a emissão das notas.

Além disso, foram realizadas alterações na interface do usuário para melhorar a visualização de informações.

msg-domicilio-dte

msg-flow-status-invoice

Screenshot from 2024-04-27 21-35-05

NOTA: está sendo utilizada a coluna _issue_noteconditions já existente na tabela _mod_nfeio_siserviceinvoices para armazenar a mensagem do fluxo, evitando assim a criação de uma nova coluna uma vez que a mesma não está sendo mais utilizada pelas rotinas do módulo.

Adicionado classe de validações para CPF e CNPJ

Foi incluída uma nova classe de auxílio Validations no módulo NFEioServiceInvoices. Essa classe contém métodos para validar CPFs e CNPJs com base no algoritmo de validação, conforme regras de verificação, ao invés da definição de validade de documento pelo tamanho de caracteres, garantindo a integridade dos dados tratados.

Agora quando o número de documento não for válido, seja um CPF ou CNPJ, o processo de emissão da nota será encerrado e uma mensagem com o motivo será mostrado ao usuário, além de um registro detalhado no log do módulo quando em modo depuração.

Screenshot of WHMCS - NFE io NFSe (1)

Screenshot of WHMCS - System Module Debug Log

Adicionado validação e manipulação de webhook (hmac)

Foi adicionado um novo método de validação de webhook na classe de validação e uma nova manipulação de webhook no arquivo callback. Agora, é possível verificar a assinatura do webhook (HMAC) e certificar-se de que é de uma fonte confiável antes de processá-lo.

Também foi melhorado o retorno de erros e códigos de respostas para as chamadas da API ao callback, com isso é possível permitir que a API realize novas tentativas de envio em casos de impossibilidade do processamento na primeira chamada, evitando que atualizações de informações no módulo não sejam prejudicadas por qualquer impossibilidade momentânea do módulo em escutar os retornos.

Corrigido problema no registro de timestamp das informações no banco de dados

Foi corrigido um problema na definicao do tipo de valor padrao para os campo de created_at e updated_at nas tabelas do módulo. As informações nao estavam sendo registradas devidamente por algumas definicoes manuais de data de rotinas legadas e também devido a falta de uma definicao de valores padroes para estas colunas do tipo timestamp que poderia gerar uma atribuição equivocada de valores nestes campos.

Detalhes da análise e correcao podem ser encontradas na questao 156 https://github.com/nfe/whmcs-addon/issues/156