Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Prevenir a re-submissao de acao da nota na visualizacao da fatura #160

Closed
andrekutianski opened this issue Jun 11, 2024 · 0 comments
Closed
Assignees
Labels
technical debt Necessary refactoring for better maintenance

Comments

@andrekutianski
Copy link
Collaborator

Descreva o erro

Após a acao de cancelamento ou reemissao de nota através da visualizacao da fatura na area de administracao do WHMCS, caso o usuário tente atualizar/recarregar a página, a acao é novamente submetida.

Nos casos ocorridos, quando uma reemicao é realizada e a página recarregada em seguida, é gerado uma duplicidade da solicitacao.

Como reproduzir

Etapas para reproduzir o comportamento:

  1. Vá para a visualizacao da fatura;
  2. Clique em reemitir nota;
  3. Tente atualizar a página com a tecla F5 e confirme a janela de alerta de resubmissao de formulário;
  4. A mesma fatura terá duas notas emitidas.

Comportamento esperado

Caso o administrador tente atualizar a página, nao poderá ser realizada nova submissao do comando.

Ambiente e versões:

  • Versão do módulo: 2.1.8
  • Versão do WHMCS: 8.x
  • Versão do PHP: N/A
@andrekutianski andrekutianski added the technical debt Necessary refactoring for better maintenance label Jun 11, 2024
@andrekutianski andrekutianski self-assigned this Jun 11, 2024
andrekutianski added a commit that referenced this issue Jun 11, 2024
Este commit altera o comportamento das acoes de cancelamento e reemissao da nota na visualizacao da fatura para prevenir a re-submissao da acao quando administrador tentar atualizar a pagina apos envio do POST com o comando.

ref: #160
luiznfeio added a commit that referenced this issue Jun 13, 2024
* refact: atualiza chamadas de registro e melhora o tratamento de erros #55

O commit inclui atualizações nas chamadas de registro para fornecer informações mais precisas sobre o comportamento do aplicativo. Também melhora o tratamento de erros em vários locais para tornar o aplicativo mais robusto e mais fácil de depurar quando algo dá errado. As alterações de registro garantem que cenários de falha importantes sejam registrados corretamente para solução de problemas futuros.

* feat: adiciona classe de validações para CPF e CNPJ

Essa atualização inclui uma nova classe de auxílio `Validations` no módulo `NFEioServiceInvoices`. Essa classe contém métodos para validar CPFs e CNPJs, conforme regras de verificação do Brasil, garantindo a integridade dos dados tratados em nossos serviços.

* refact: refatora e melhora validações na função gnfe_customer

O código foi refatorado na função gnfe_customer para melhorar as validações de CPF e CNPJ. Foram adicionadas novas condições de validação de CPF e CNPJ utilizando um novo helper de validações. Foi reformulado o retorno dos dados de CPF e CNPJ validados, adicionando o nome e tipo de documento conforme a validação. Melhorias extras também foram implementadas para validar e lidar com a inscrição municipal do cliente.

* refact: atualiza tratamento de erros na emissão de NF

As modificações implementadas visam melhorar o manejo de erros ao emitir notas fiscais. Agora, quando os dados do cliente retornarem algum erro, o status da NF será atualizado e a emissão será interrompida para evitar inconsistências. Além disso, o código de tratamento do CEP e do nome do cliente foi refinado para aumentar a precisão e a robustez da operação.

ref: #55

* style: corrige formatação no arquivo Validations.php PSR12

* refact: refatora tratamento de status ao cancelar nota

Esta atualização refatora a manipulação do status da nota quando é realizada cancelamento para atender a estrutura atual de retorno da API de cancelamento. Também a função updateLocalNfeStatus foi atualizada para aceitar um parâmetro adicional para o status do fluxo. Além disso, foi removido trechos de codigos comentados.

* feat: adiciona 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 e certificar-se de que é de uma fonte confiável antes de processá-lo. Também foi melhorado o tratamento de erros e códigos de respostas.

* chore: adiciona extensão JSON às dependências do composer

* feat: adiciona métodos para atualizar status de Notas Fiscais

Foram implementados dois novos métodos no repositório ServiceInvoices: `updateNfStatusByExternalId` e `updateNfStatusByNfeId`. Esses métodos permitem atualizar o status e o flow status de uma Nota Fiscal, seja pelo ID externo da mesma ou pelo seu próprio ID. No caso de erro, registra-se um log detalhado. Estes novos métodos visam substituir as operações no banco de dados realizada por funções legadas.

* refact: atualiza métodos para gerir status de NF

Os métodos `updateLocalNfeStatus` e `updateLocalNfeStatusByExternalId` foram atualizados para melhorar o controle de erros e a consistência do código. Foram adicionados tratamentos de exceções e logs para rastrear operações. Além disso, o tipo de retorno foi ajustado para booleano a fim de garantir uma melhor compreensão do status da operação.

* Adiciona funções de atualização e modal de confirmação para ações

Este commit adiciona uma nova função no módulo para atualizar o status de uma nota fiscal. Agora é possível buscar o status mais recente de uma nota na API em caso de falha no sincronismo dessa informação. Também foi refatorado os botoes de acoes para exibir um modal de confirmação antes de realizar a ação.

* fix: corrige resposta para callback de webhook

Este commit implementa um workaround no arquivo callback.php que retorna um status code 200 quando a requisição contém uma query que começa com 'echo'. Essa solução visa atender a verificação do webhook.

* fix: corrige propriedades de colunas de timestamp

Esta atualização modifica como as colunas de registro de data e hora de criação e atualização são manipuladas no módulo NFEioServiceInvoices. Agora, as colunas 'created_at' e 'updated_at' são gerenciadas automaticamente pelo banco de dados, evitando a necessidade de atualizá-las manualmente no código. Além disso, foi implementada uma migração para atualizar as colunas em questão nas tabelas existentes.

ref: #156

* refact: refatora código para criação de tabelas

Este commit refatora o método de criação das colunas de timestamp, a lógica inicial utilizava modificadores não compativeis com a versao atual do Capsule utilizado pelo WHMCS.

ref: #156

* fix: atualiza nomes de campos no repositorio ProductCode

apos a alteracao dos nomes das colunas para timestamp restou atualizar a referencia em $fieldDeclaration.

ref: #156

* fix: remove campos de data de NFEio/Nfe.php

Os campos 'created_at' e 'updated_at' foram removidos de buildItemsToTransmit como parte da refatoracao dos timestamps.

ref: #156

* feat: registra resposta de callback flowMessage e exibe na interface do usuário

Inclui 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.

* feat: adiciona coluna de condições na tabela de notas

adicionado exibicao de mensagem do fluxo na visualizacao da fatura.

* Delete case sensitive unused file (duplicated) (#157)

* style: remocao de codigo comentado

* refact: #156 refatora propriedades de colunas de timestamp

Este commit refatora as propriedades das colunas de timestamp para o controle manual dos valores. Isso foi necessario para garantir interoperabilidade entre bancos em MariaDB e MySQL devido as diferentes formas na tratativa do valor para timestamps, o que poderia levar a inconsistencias do registro dependendo das definicoes de fuso horario do banco e PHP.

ref: #156

* fix(callback): corrige verificacao de cabecalho para assinatura

Este commit implementa uma verificacao estendida dos cabecalhos para verificar o valor da assinatura do webhook. Esta correcao foi necessaria devido a possibilidade de alguns servidores web ou load balancers reescreverem os cabecalhos e podendo levar a falha na validacao.

* refact: altera acoes da nota na visualizacao da fatura

Este commit altera o comportamento das acoes de cancelamento e reemissao da nota na visualizacao da fatura para prevenir a re-submissao da acao quando administrador tentar atualizar a pagina apos envio do POST com o comando.

ref: #160

* chore(dependencies): atualiza dependencias do projeto

* chore(dependencies): atualiza dependencias do projeto

---------

Co-authored-by: Luiz NFE.io <74252574+luiznfeio@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
technical debt Necessary refactoring for better maintenance
Projects
None yet
Development

No branches or pull requests

1 participant