Primeiro de tudo criar uma migração para inserir o novo menu no i-educar, geralmente eu olho os outros menus existentes pra ter uma base de quais valores colocar nos inserts, mas um exemplo seria assim:
no terminal:
php ieducar/vendor/bin/phinx create AddMenuRelatorioExemplo
execute esta query no banco para pegar o proximo id de relatorio
select max(cod_menu_submenu)+1 from portal.menu_submenu
editar o codigo da migração para ficar assim:
<?php
use Phinx\Migration\AbstractMigration;
class AddMenuRelatorioExemplo extends AbstractMigration
{
public function change()
{
$this->execute("INSERT INTO portal.menu_submenu VALUES (9998880, 25, 2,'Relatorio de exemplo', 'module/Reports/RelatorioExemplo', null, 3);");
$this->execute("INSERT INTO pmicontrolesis.menu VALUES (9998880, 9998880, 21126, 'Relatorio de exemplo', 0, 'module/Reports/RelatorioExemplo', '_self', 1, 15);");
$this->execute("INSERT INTO pmieducar.menu_tipo_usuario VALUES (1,9998880,1,1,1);");
}
}
O numero 9998880 é o id do proximo relatorio pego na query, o numero 21126 é o codigo do menu, neste caso de relatorios, e o caminho é o caminho que o formulario do relatorio vai estar no codigo.
no terminal:
php ieducar/vendor/bin/phinx migrate -e development
Agora que o menu já foi inserido, deve ser criado os arquivos correpondente ao relatorio.
Caminho: ieducar/modules/Reports/Views/RelatorioExemploController.php
<?php
require_once "lib/Portabilis/Controller/ReportCoreController.php";
require_once "Reports/Reports/RelatorioExemploReport.php";
class RelatorioExemploController extends Portabilis_Controller_ReportCoreController
{
protected $_titulo = 'RelatorioExemplo';
protected function _preRender(){
parent::_preRender();
Portabilis_View_Helper_Application::loadStylesheet($this, 'intranet/styles/localizacaoSistema.css');
$localizacao = new LocalizacaoSistema();
$localizacao->entradaCaminhos( array(
$_SERVER['SERVER_NAME']."/intranet" => "Início",
"educar_index.php" => "i-Educar - Escola",
"" => "RelatorioExemplo"
));
$this->enviaLocalizacao($localizacao->montar());
}
function form() {
$this->inputsHelper()->dynamic(array('ano', 'instituicao', 'escola', 'curso', 'serie'));
$this->campoTexto('aluno','Aluno','',40,255,true);
}
function report() {
return new RelatorioExemploReport();
}
function beforeValidation() {
$this->report->addArg('ano', (int)$this->getRequest()->ano);
$this->report->addArg('instituicao', (int)$this->getRequest()->ref_cod_instituicao);
$this->report->addArg('escola', (int)$this->getRequest()->ref_cod_escola);
$this->report->addArg('curso', (int)$this->getRequest()->ref_cod_curso);
$this->report->addArg('serie', (int)$this->getRequest()->ref_cod_serie);
$this->report->addArg('aluno', $this->getRequest()->aluno);
}
}
?>
O segundo arquivo: ieducar/modules/Reports/Reports/RelatorioExemploReport.php
<?php
require_once "lib/Portabilis/Report/ReportCore.php";
require_once "App/Model/IedFinder.php";
class RelatorioExemploReport extends Portabilis_Report_ReportCore
{
function templateName() {
return 'nome_arquivo_jasper_relatorio_exemplo';
}
function requiredArgs() {
$this->addRequiredArg('ano');
$this->addRequiredArg('instituicao');
$this->addRequiredArg('escola');
$this->addRequiredArg('matricula');
}
}
?>
Agora no ireport 4.7, criar um arquivo com onome nome_arquivo_jasper_relatorio_exemplo e salvar na pasta ReportSources/Portabilis, tanto o jasper quanto o jrxml.