Instalação dos Relatórios na versão 2.1.0

Olhei esses tópicos, em um deles eu cheguei até o link:

https://github.com/portabilis/i-educar/wiki/Pacote-de-relatórios

Mas nesse passo-a-passo, fala sobre phinx, que parece ter sido removido na versão 2.1.0 do i-educar.

Correto?

Correto, mas acredito que o problema de output(), que você está enfrentando, esteja relacionado ao caminho do relatório está errado no ini.

As configurações no ieducar.ini estão assim:

Tente substituir a linha report.source_path... por:

report.source_path = /application/ieducar/modules/Reports/ReportSources/

@Bonot,

Mesmo substituindo permanece o erro.

O caminho lá em cima tá assim
http://IP_DA_VPS:PORTA/module/Reports/StudentsPerClass

não sei se isso ajuda para identificar-mos a configuração correta.

Acho que você vai precisar reproduzir os passos que indiquei no Erro relatórios após novo pacote de relatórios, para ver qual o caminho dos relatórios que está no container. Você fez o clone dos relatórios certinho?

Segue esses passos:

  • Acessar o container: docker exec -it ieducar_1604 bash , em alguns casos precisa do sudo na frente.
  • Entrar na pasta em que os relatórios se encontram, padrão: cd ieducar/modules/Reports/ReportSources/
  • Execute uma listagem dos arquivos, pra ver se estão aí mesmo: ls
  • Se estiver tudo ok, use o comando pwd para mostrar na tela o caminho atual, e coloque ele no ini.

E o resultado foi esse, depois que digitei pwd de dentro da pasta ReportSource:
/root/i-educar/ieducar/modules/Reports/ReportSources

Na verdade na versão 2.1.0, não tem mais esse ieducar_1604, na instalação.

Tenta colocar assim no ini então:

report.source_path = /root/i-educar/ieducar/modules/Reports/ReportSources/

Na verdade na versão 2.1.0, não tem mais esse ieducar_1604 , na instalação.

Sim, não tem mais.

Alterei,
Mesmo assim, continua se abrir.

É normal ter esses dois parâmetros:

image

Outra dúvida,
Preciso rodar algum comando depois de atualizar esse arquivo .ini

estou precisando resolver o mesmo problema, a pergunta é : tenho que executar aqueles procedimentos que estão em Instalação dos Relatórios na versão 2.1.0 ? o arquivo phinx.php fica onde nesta ultima versão?

Depois de fazer o clone dos relatórios você rodaram:
docker-compose exec php artisan reports:install
docker-compose exec php artisan migrate

Esses comandos são executados fora do docker.

Rodei sim, @Juchem

De dentro da pasta /i-educar/
docker-compose exec php artisan reports:install

E nesse:
docker-compose exec php artisan migrate

Esse erro para exibir relatórios acontece com todos os relatórios? Já testou outro relatório?

Em i-educar/storage/logs tem alguns arquivos de texto com erros da aplicação, vê se ai não te da uma luz do que pode estar acontecendo.

Acontece com todos os Relatórios.
Vou verificar os logs

As últimas linhas do Log de hoje, estão assim:

Name: situacao_matricula_pkey; Type: CONSTRAINT; Schema: relatorio; Owner: postgres

ALTER TABLE ONLY situacao_matricula
ADD CONSTRAINT situacao_matricula_pkey PRIMARY KEY (cod_situacao);
) at /application/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, PDOException(code: 42723): SQLSTATE[42723]: Duplicate function: 7 ERROR: function “get_ddd_escola” already exists with same argument types at /application/vendor/laravel/framework/src/Illuminate/Database/Connection.php:507)
[stacktrace]
#0 /application/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback(‘SET search_path…’, Array, Object(Closure))
#1 /application/vendor/laravel/framework/src/Illuminate/Database/Connection.php(511): Illuminate\Database\Connection->run(‘SET search_path…’, Array, Object(Closure))
#2 /application/app/Console/Commands/ReportsInstallCommand.php(58): Illuminate\Database\Connection->unprepared(‘SET search_path…’)
#3 [internal function]: App\Console\Commands\ReportsInstallCommand->handle(Object(Illuminate\Filesystem\Filesystem), Object(Illuminate\Database\PostgresConnection))
#4 /application/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#5 /application/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#6 /application/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#7 /application/vendor/laravel/framework/src/Illuminate/Container/Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#8 /application/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\Container\Container->call(Array)
#9 /application/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#10 /application/vendor/laravel/framework/src/Illuminate/Console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#11 /application/vendor/symfony/console/Application.php(901): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 /application/vendor/symfony/console/Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\ReportsInstallCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /application/vendor/symfony/console/Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 /application/vendor/laravel/framework/src/Illuminate/Console/Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /application/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /application/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 {main}
"}

Não consegui executar em modo debug, pra tentar visualizar onde tá o erro.

Esse erro aconteceu por que você deve ter executado 2 vezes as migrations, não deve ser isso que está travando seu relatório.


Bom, podemos tentar fazer o seguinte:
Abra o arquivo i-educar/vendor/cossou/jasperphp/src/JasperPHP/JasperPHP.php
Na linha 186 adiciona esse comando: echo $this->the_command;exit;
Salva o arquivo e tenta gerar o relatório.
Na nova aba que abriu no navegador ter uma string, essa é a string com os comandos para gerar o teu relatório, remova o final dessa string, o final dela deve ter algo como 2>&1 copie o resto dessa string e cole no terminal do container do i-educar, após isso mande executar, cola o retorno do comando aqui para nós.

Eu iria fazer isso em minha instalação, mas meu banco de dados está sem nada, preciso achar um backup ou algo assim.

image

Após alterado esse arquivo, o resultado ao executar o relatório foi:

/application/vendor/cossou/jasperphp/src/JasperPHP/../JasperStarter/bin/jasperstarter compile /root/i-educar/ieducar/modules/Reports/ReportSources/students-per-class.jrxml -o /root/i-educar/ieducar/modules/Reports/ReportSources/students-per-class

Não apareceu, como disse nessa parte (não consegui executar esse passo):

Na nova aba que abriu no navegador ter uma string, essa é a string com os comandos para gerar o teu relatório, remova o final dessa string, o final dela deve ter algo como 2>&1 copie o resto dessa string e cole no terminal do container do i-educar, após isso mande executar, cola o retorno do comando aqui para nós.

Bom dia.
Você não consegue executar esse comando no terminal de dentro do container do docker?