Skip to content

feat: atualizar automaticamente status de notas Criadas via cron#199

Open
ianchamba wants to merge 1 commit into
nfe:mainfrom
ianchamba:feat/auto-refresh-created-status
Open

feat: atualizar automaticamente status de notas Criadas via cron#199
ianchamba wants to merge 1 commit into
nfe:mainfrom
ianchamba:feat/auto-refresh-created-status

Conversation

@ianchamba

Copy link
Copy Markdown
Contributor

Resumo

Adiciona uma nova opção em Configurações Globais (desativada por padrão) que faz o AfterCronJob consultar na API da NFE.io o status atualizado das notas com status Created (Criada) e atualizar o banco local automaticamente — mesma rotina executada pelo botão Atualizar do painel administrativo.

Motivação

Hoje, notas que ficam com status Created na API só têm o status local atualizado se o administrador clicar manualmente no botão Atualizar para cada uma. Em volumes maiores isso é inviável. Esta funcionalidade automatiza esse passo, mantendo o controle do operador via toggle.

Comportamento

  • Toggle: Atualizar status de notas Criadas (chave de storage auto_refresh_created_status). Desativada por padrão.
  • Quando habilitada: a cada execução do cron do WHMCS, após o processamento normal das notas em fila (Waiting), o hook seleciona até 5 notas com status Created, ordenadas por updated_at ascendente (mais antigas primeiro), e para cada uma chama Nfe::fetchNf() + updateLocalNfeStatus().
  • Limite por ciclo: 5 notas, evitando sobrecarga de API e timeout do cron. As demais entram no próximo ciclo.
  • Logs: registrados em nfeio_serviceinvoices com as chaves hook_aftercronjob_refresh_created, hook_aftercronjob_refresh_created_error e hook_aftercronjob_refresh_created_invalid_response.

Arquivos alterados

  • lib/Hooks/AfterCronJob.php — novo método refreshCreatedInvoicesStatus() gated pela config
  • lib/Models/ModuleConfiguration/Repository.php — declaração da nova chave nos arrays fieldDeclaration, model e fields
  • lib/templates/admin/configuration.tpl — novo checkbox na tela de Configurações Globais
  • lib/Admin/Controller.php — persistência do valor em configurationSave()

Test plan

  • Após atualizar o módulo, abrir Configurações Globais e confirmar que a opção "Atualizar status de notas Criadas" aparece desmarcada
  • Salvar configurações com a opção desativada e verificar que o AfterCronJob não dispara o refresh (sem entradas hook_aftercronjob_refresh_created no log)
  • Marcar a opção, salvar e aguardar próximo ciclo de cron — verificar log hook_aftercronjob_refresh_created com a quantidade
  • Com mais de 5 notas em Created, confirmar que apenas 5 são processadas por ciclo
  • Confirmar que o status local muda quando a API retorna status diferente de Created

Adiciona opção em Configurações Globais (desativada por padrão) para que
o AfterCronJob consulte na API da NFE.io o status atualizado de até 5
notas com status 'Created' por execução, atualizando o banco local com
a mesma rotina utilizada pelo botão "Atualizar" do painel admin.

- Nova chave de storage: auto_refresh_created_status
- Limite de 5 notas por ciclo, ordenadas por updated_at asc
- Tratamento de erros e respostas inválidas com logModuleCall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant