Descreva o erro
Ao executar o agendamento ProtocoloIntegradoAgendamentoRN::publicarProtocoloIntegrado, ocorre um erro (Object of class DateTime could not be converted to string) no processamento do campo dth_abertura
da tabela atividade
do SEI. Pelo que investiguei, o código esperava que fosse retornado um objeto do tipo string e foi retornado um objeto do tipo DateTime.
O problema está na forma com que a função consultarAtividadesPublicacao
faz a consulta no banco.
https://github.com/supergovbr/mod-sei-protocolo-integrado/blob/2c744055740772db72b94d2526395cee54384ae2/src/bd/ProtocoloIntegradoMonitoramentoProcessosBD.php#L239
Ao usar a função consultarSql
diretamente, me parece que os campos são retornados da forma como o driver PHP do banco de dados utilizado retorna.
No caso do banco SQLServer, o driver SQLSRV por padrão retorna os campos de data como objetos DateTime e não como string. (https://learn.microsoft.com/en-us/sql/connect/php/how-to-retrieve-date-and-time-type-as-strings-using-the-sqlsrv-driver?view=sql-server-ver16).
O framework do SEI até corrige isso, mas só quando se usa as funções da classe InfraBD (Ex: listar, consultar, etc). Para não mudar muito o código, sugiro utilizar a função formatarLeituraDth
da interface InfraIBanco ao ler o valor do campo dth_abertura
. Irei fazer um pull request com a sugestão.
Para reproduzir
Execute o agendamento ProtocoloIntegradoAgendamentoRN::publicarProtocoloIntegrado, seja de forma manual ou automática, em um ambiente do SUPER com banco de dados SQLServer.
Comportamento esperado
Agendamento ser executado sem falhas.
Contexto da falha (Por favor, complete a seguinte informação):
- Versão do sistema: Módulo 2.3.1 / SUPER 4.0.3.3
- Navegador: Firefox
- Perfil do Usuário: administrador
- Banco de Dados: SQLServer
Log de Erros
Agendamento FALHOU (sdp-super-ap1.cgu.local)
Servidor: sdp-super-ap1.cgu.local
Data/Hora: 03/01/2023 01:00:28
Comando: ProtocoloIntegradoAgendamentoRN::publicarProtocoloIntegrado()
Erro: Descrição:
Erro acontecido
Mensagem:
Erro acontecido
Trilha de Processamento:
#0 /opt/v400/infra/infra_php/formularios/rn/InfraAgendamentoTarefaRN.php(621): ProtocoloIntegradoAgendamentoRN->publicarProtocoloIntegrado(Array)
#1 /opt/v400/infra/infra_php/InfraAgendamentoTarefa.php(198): InfraAgendamentoTarefaRN->executar(Object(InfraAgendamentoTarefaDTO))
#2 /opt/v400/sei/scripts/AgendamentoTarefaSEI.php(27): InfraAgendamentoTarefa->executar('no-reply-sei@cg...', '[email protected]...')
#3 {main}
Descrição Original:
Exception: 'Fatal Error: /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoMonitoramentoProcessosRN.php linha:873.
Object of class DateTime could not be converted to string
' in /opt/v400/infra/infra_php/Infra.php:207
Stack trace:
#0 [internal function]: infraGerarExcecao(4096, 'Object of class...', '/opt/v400/sei/w...', 873, Array)
#1 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoMonitoramentoProcessosRN.php(873): str_replace('/', '-', Object(DateTime))
#2 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoMonitoramentoProcessosRN.php(145): ProtocoloIntegradoMonitoramentoProcessosRN->publicarProcessosMonitorados(Array)
#3 /opt/v400/infra/infra_php/InfraRN.php(140): ProtocoloIntegradoMonitoramentoProcessosRN->publicarProcessosConectado(Object(ProtocoloIntegradoParametrosDTO))
#4 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoAgendamentoRN.php(34): InfraRN->__call('publicarProcess...', Array)
#5 /opt/v400/infra/infra_php/formularios/rn/InfraAgendamentoTarefaRN.php(621): ProtocoloIntegradoAgendamentoRN->publicarProtocoloIntegrado(Array)
#6 /opt/v400/infra/infra_php/InfraAgendamentoTarefa.php(198): InfraAgendamentoTarefaRN->executar(Object(InfraAgendamentoTarefaDTO))
#7 /opt/v400/sei/scripts/AgendamentoTarefaSEI.php(27): InfraAgendamentoTarefa->executar('no-reply-sei@cg...', '[email protected]...')
#8 {main}
Trilha de Processamento Original:
0 [internal function]: infraGerarExcecao(4096, 'Object of class...', '/opt/v400/sei/w...', 873, Array)
1 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoMonitoramentoProcessosRN.php(873): str_replace('/', '-', Object(DateTime))
2 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoMonitoramentoProcessosRN.php(145): ProtocoloIntegradoMonitoramentoProcessosRN->publicarProcessosMonitorados(Array)
3 /opt/v400/infra/infra_php/InfraRN.php(140): ProtocoloIntegradoMonitoramentoProcessosRN->publicarProcessosConectado(Object(ProtocoloIntegradoParametrosDTO))
4 /opt/v400/sei/web/modulos/mp/mod-sei-protocolo-integrado/rn/ProtocoloIntegradoAgendamentoRN.php(34): InfraRN->__call('publicarProcess...', Array)
5 /opt/v400/infra/infra_php/formularios/rn/InfraAgendamentoTarefaRN.php(621): ProtocoloIntegradoAgendamentoRN->publicarProtocoloIntegrado(Array)
6 /opt/v400/infra/infra_php/InfraAgendamentoTarefa.php(198): InfraAgendamentoTarefaRN->executar(Object(InfraAgendamentoTarefaDTO))
7 /opt/v400/sei/scripts/AgendamentoTarefaSEI.php(27): InfraAgendamentoTarefa->executar('no-reply-sei@cg...', '[email protected]...')
8 {main}