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

[BUG] Rotina de emissão manual não executa quando initial_date é ausente #132

Closed andrekutianski closed 2 years ago

andrekutianski commented 2 years ago

Descreva o erro

Quando a propriedade _initialdate está ausente nas configurações do módulo (tbladdonmodules) e a emissão de notas é configurada para a rotina manual, nenhuma nota é transmitida para a API ou processada e seu status fica "aguardando", sem apresentar nenhum erro detalhado ou prosseguindo com a transmissão.

Como reproduzir

O cenário onde este comportamento inesperado ocorre é quando o módulo está configurado para emissão manual e o setting initial_date está ausente para module NFEioServiceInvoices em tbladdonmodules.

Comportamento esperado

Para que a rotina de transmissão possa saber qual é a data máxima no passado ela deve verificar possíveis notas que estejam aguardando transmissão, usa-se o valor de initial_date como referência. Em um cenário normal o valor de initial_date refletiria a data de ativação do módulo, evitando assim que qualquer registro anterior proveniente de versões legadas não fossem retransmitidos (inclusive este comportamento é legado de versões obsoletas), mas em alguns cenários este valor não foi inicializado corretamente.

Não existindo um valor em initial_date, as rotinas de transmissão que são executadas quando o módulo está configurado pra emissão manual não conseguem selecionar os registros, como se não houvessem notas a serem transmitidas.

Ambiente e versões:

Contexto adicional

É possível realizar uma correção paleativa inserindo um registro na tabela tbladdonmodules contendo um valor para a propriedade initial_date. Desta forma a rotina terá uma referência de data e conseguirá selecionar corretamente as notas na fila de transmissão.

Este valor de preferência deve ser no passado, pois assim caso existam notas que precisam serem transmitidas, mas que já estão paradas a um tempo na fila, possam ser inclusas, por exemplo:

module setting value
NFEioServiceInvoices initial_date 2022-08-01

O comando SQL seria:

INSERT INTO `tbladdonmodules` (`id`, `module`, `setting`, `value`) VALUES (NULL, 'NFEioServiceInvoices', 'initial_date', '2022-08-01');

image