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

Erro ao executar agendamento publicarProtocoloIntegrado #12

Open
danielcoelhocgu opened this issue Jan 4, 2023 · 1 comment
Open

Erro ao executar agendamento publicarProtocoloIntegrado #12

danielcoelhocgu opened this issue Jan 4, 2023 · 1 comment

Comments

@danielcoelhocgu
Copy link

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...', 'sesol@cgu.gov.b...')
#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...', 'sesol@cgu.gov.b...')
#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...', 'sesol@cgu.gov.b...')
8 {main}
@danielcoelhocgu
Copy link
Author

danielcoelhocgu commented Jan 4, 2023

Aberto pull request #21 para correção do problema.

Testei no nosso ambiente do SUPER da CGU e funcionou corretamente. Conseguimos voltar a publicar os processos.

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

No branches or pull requests

1 participant