Ultima Edição: 28/Oct/25
  1. Gerar relatório BIRT
  2. Template para criar um novo campo para grid e filtro:
  3. Abrir o filtro asim que a tela carregar.
  4. Chamar rota back-end pelo Controller Javascript
  5. Remover a validação de um campo

Gerar relatório BIRT

Arquivo Controller.php

$reportMapping = 
array ('NOME_DO_CAMPO' => "valor",
"__format" => $row["TIPOREPORT"]
);

$type = 'BIRT';
try{
        $birtQr2Url = $this->reportService->createRemoteReport($type, "CTB69007", $reportMapping);
        $response->addMessage(new DTO\Response\Message($birtQr2Url));
}catch (\Exception $e){
        throw new \Exception("Mensagem de erro.");
}

Lembrando que o segundo parâmetro do createRemoteReport deve ser o código do relatório (normalmente importado da tela dinamicamente), e é usado pelo framework pra encontrar o arquivo template do BIRT (nome_do_modulo/backend/reports/CODIGO.rptdesign).

Template para criar um novo campo para grid e filtro:

"fields": [
        {
        "id": "",
        "name": "CAMPO",
        "label": "Nome do Campo",
        "template": "field/select-native.html",
        "showOnList": true
        }    
]

campo vazio


Abrir o filtro asim que a tela carregar.

WidgetOnEnterOnce vai rodar uma vez quando o widget carregar e executar esse bagulho: ZhFilterPreferences.openFilterWidget(templateManager.container.getWidget(‘Nome’));

O Nome é o nome que você deu pro seu widget com o grid que vai trazer e mostrar os dados.

   {
    "id": "234567890123456789987654",
    "name": "WidgetOnEnterOnce",
    "code": "ZhFilterPreferences.openFilterWidget(templateManager.container.getWidget('Nome'));"
   }

`Filtro`


Chamar rota back-end pelo Controller Javascript

Enviando informação (widget.currentRow) do tipo “Row”:

General.callRestEngine("modulo#/nomeDaRota", "Row", widget.currentRow).then(function(sucess) {
          fazerAlgo();
        }, function(error){
        	ScreenService.showMessage(error.data.error);
})

a rota precisa estar devidamente registrada no arquivo routes.json no backend do modulo específico.


Remover a validação de um campo

Aparentemente precisa usar delete.

Não me fez nada :/

field.validations.required = false;

Funcionou

 delete(field.validations.required);