Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Jasper Report (Antigo IReport) No Adianti Se alguém tiver interesse em saber como configurar o adianti para uso com este gerador de relatório, por favor aponte o interesse que posto como fazer a instalação da biblioteca JasperPHP para uso com Adianti. Se quiser ver o funcionamento segue uma captura de tela do mesmo rodando uma emissão de boleto Bancário. https://www.dropbox.com/s/6qk3a45ueszbyco/boleto-2018-12-18_16.13.07?dl=...
AN
Jasper Report (Antigo IReport) No Adianti  
Se alguém tiver interesse em saber como configurar o adianti para uso com este gerador de relatório, por favor aponte o interesse que posto como fazer a instalação da biblioteca JasperPHP para uso com Adianti.

Se quiser ver o funcionamento segue uma captura de tela do mesmo rodando uma emissão de boleto Bancário.

https://www.dropbox.com/s/6qk3a45ueszbyco/boleto-2018-12-18_16.13.07?dl=0


Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (46)


MG

Eu tenho interesse: marcelo@mgsistemas.com.br
JA

tenho interesse, que biblioteca está usando para gerar os boletos? jrmaceio09@gmail.com
AN

Júnior Andrade. Uso biblioteca de desenvolvimento próprio. Gero campo digitável e código de barras através de fórmula definida pelo usuário.
AN

Ok. Vou fazer um tutorial e enviar aos seus emails.
RB

Posta no fórum.

CG

Eu tenho interesse:
contato.carlobau@gmail.com.
obs: baixei esse arquivo que está no post mas não consegui abrir essa extensão "07".
AN

Renomeia para extensão MP4. Provavelmente você usa Windows que é dependente da extensão .
JA

Utilizo o IReport atualmente, e gostaria de saber como funciona essa evolução...
jpalvesalmeida@gmail.com
RS

Eu tenho, robsonsorrilha@gmail.com
AN

João Almeida nunca usei o Ireport. Tudo que sei é que não está tendo atualização e que foi substituído pelo Jasper report. Salvo engano a última versão do Ireport é de 2016 (posso estar enganado) mas lembro de algo assim quando fui baixar o Jasper.
AT

Eu tenho interesse Augusto: aatavarez@hotmail.com
LC

Tbem tenho interesse: leandro@imprime.com.br
MR

Poderia postar aqui no fórum um tutorial de como fazer/utilizar para ajudar a todos que queiram utilizar.
AN

Tranquilo. Até fim de semana vou postar
AB

Tenho interesse
ademilsonbritto@gmail.com
AN

Tutorial finalizado Baixar em:

https://www.dropbox.com/s/68wyhb06r3guco1/phpjasper.pdf?dl=0
AN

Correção no documento:

Onde se lê:

$folders[] = 'nfephp';

Leia-se :
$folders[] = 'phpjasper';
AN

Arquivo Corrigido:

https://www.dropbox.com/s/68wyhb06r3guco1/phpjasper.pdf?dl=0
RS

Bom dia Armando, como eu faço para passar parametros para o jasperReport, tipo quero imprimir um relatório com período entre datas? ou filtrar um id do cliente? para imprimir somente dados de um.

AN

No adianti voce passará em options conforme abaixo. Estou passando os parâmetros codigo da empresa,filial,usuario.. e quaisquer outros necessários.

$options = [
'format' => ['pdf'],
'locale' => 'pt_BR',
'params' => [
'param_empresa' => TSession::getValue('gempresa'),
'param_filial' => TSession::getValue('gfilial'),
'param_usuario' => intval(TSession::getValue('userid'))
],
'db_connection' => [
'driver' => 'postgres',
'username' => TSession::getValue('guser_bd'),
'password' => TSession::getValue('gsenha_bd'),
'host' => TSession::getValue('ghost_bd'),
'database' => TSession::getValue('gname_bd'),
'port' => TSession::getValue('gport_bd')
]
];

No jasper os parâmetros NORMALMENTE estão dento da cláusula sql. O importante é que os parâmetros passados no adianti estejam definidos no jasper com os mesmos nomes e tipos (inteiros,strings,etc).

No jasper a cláusula SQL seria algo como:

SELECT public.temp_r_boleto.empresa,
public.temp_r_boleto.filial,
pega_logo(empresa,filial) AS logo,
pega_empresa(empresa,filial) AS nome_empresa,
public.temp_r_boleto.cod_usuario,
linhadigitavel,
razao_social,
agencia_cedente,
data_documento,
nossonumero,
vencimento,
observacao,
cgc,
produto,
unidade,
quantidade,
valor_nf,
numero_nf,
serie_nf,
endereco,
cidade,
codbarra,
prefixo_id,
carteira,
valor_nf,
emissao,
public.temp_r_boleto.cod_id
FROM public.temp_r_boleto
where empresa=$P{param_empresa}
and filial = $P{param_filial}
and cod_usuario = $P{param_usuario}
MM

Também gostaria.

monteiro1.info@gmail.com

Muito obrigado
AN

Pessoal. Não sei se ficou claro no documento enviado, portanto vou especificar aqui.

Para que voce tenha o pdf para impressão serão necessárias 2 Action...

Por exemplo : Na Action onProcessa (responsável por indicar arquivo de entrada,de saída,parametros e conexão ao BD) voce terá algo assim :

  1. <?php
  2.     public static function onProcessa($param)
  3.     {
  4.        try
  5.        {
  6.           // open a transaction with database 'erpweb'
  7.           TTransaction::open('erpweb');
  8.           $repository = new TRepository('tempboleto');
  9.           // creates a criteria
  10.           $criteria = new TCriteria;
  11.           $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa'))); 
  12.           $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial'))); 
  13.           $criteria->add(new TFilter('cod_usuario','=',TSession::getValue('userid')));
  14.           $criteria->add(new TFilter('marca','=','x'));
  15.             
  16.           $count $repository->count($criteria);
  17.           TTransaction::close();
  18.           $send = new StdClass;
  19.           $send->no_boleto $count;
  20.           TForm::sendData('form_imprimirboleto'$send);             
  21.           $relatorio 'reportjasper/boleto_banco_' TSession::getValue('pnobanco') . '.jasper';
  22.  
  23.           if (!file_exists($relatorio))
  24.           {
  25.              new TMessage('info','Relatório Boleto Para o Banco ' TSession::getValue('pnobanco') . ' Não Encontrado.....'); 
  26.           } else
  27.           {
  28.              $input =  TSession::getValue('gpasta_relatorio') .'boleto_banco_' TSession::getValue('pnobanco') . '.jasper';  
  29.              $output TSession::getValue('gpasta_apache') . 'boleto_' trim(TSession::getValue('login'));
  30.              $options = [
  31.              'format' => ['pdf'],
  32.              'locale' => 'pt_BR',
  33.              'params' => [
  34.              'param_empresa' => TSession::getValue('gempresa'),
  35.              'param_filial' => TSession::getValue('gfilial'),
  36.              'param_usuario' => intval(TSession::getValue('userid'))   
  37.               ],
  38.              'db_connection' => [
  39.              'driver' => 'postgres',
  40.              'username' => TSession::getValue('guser_bd'),
  41.              'password' => TSession::getValue('gsenha_bd'),
  42.              'host' => TSession::getValue('ghost_bd'),
  43.              'database' => TSession::getValue('gname_bd'),
  44.              'port' => TSession::getValue('gport_bd')
  45.              ]
  46.              ];
  47.              $jasper = new PHPJasper\PHPJasper;
  48.              $jasper->process(
  49.              $input,
  50.              $output,
  51.              $options
  52.              )->execute(); 
  53.           }   
  54.        }
  55.        catch (Exception $e// in case of exception
  56.        {
  57.             new TMessage('error'$e->getMessage()); // shows the exception error message
  58.             TTransaction::rollback(); // undo all pending operations
  59.        }
  60.     }
  61. ?>


Na outra Action que é a carga do pdf em si, algo assim:

  1. <?php
  2.     public static function onImprime($param)
  3.     {
  4.        $relatorio =  TSession::getValue('gpasta_saida') . 'boleto_' trim(TSession::getValue('login')) . '.pdf';
  5.        chmod($relatorio0777);    
  6.        
  7.        if (!file_exists($relatorio))
  8.        {
  9.           new TMessage('info','Relatório Boleto Bancário Não Encontrado . Voce Processou o Relatório ????'); 
  10.        } else
  11.        {
  12.           parent::openFile($relatorio);       
  13.        }
  14.     }
  15. ?>
RS

Bom dia, entendi a questão dos paremetros, bom fiz os procedimentos e agora estou com a mão na massa para processar um relatório e deu o seguinte erro:

Fatal error: Class 'PHPJasper' not found in
RS

e agora deu este

Warning: Unsupported declare 'strict_types' in C:wamp64wwwsgophpjaspervendorgeekcomphpjaspersrcPHPJasper.php on line 12

Fatal error: Default value for parameters with a class type hint can only be NULL in
AN

Robson.

Como não tenho nenhuma maquina com Windows não consigo reproduzir o erro.

Mas a mensagem : Fatal error: Class 'PHPJasper' not found in

O ADIANTI não está encontrando a classe PHPJasper.

Verifique se caminho em engine.php se está correto (de acordo com a sua instalação)

require_once "phpjasper/vendor/autoload.php";

e no arquivo AdiantiApplicationLoader.php

está com a linha

$folders[] = 'phpjasper';

Se estiver tudo correto voce pode tentar incluir a classe no seu código de impressão:

Procure pela classe PHPJasper e inclua no código.

use "onde está a classe"PHPJasper

AN

e agora deu este

Warning: Unsupported declare 'strict_types' in C:wamp64wwwsgophpjaspervendorgeekcomphpjaspersrcPHPJasper.php

Ou Seja: Voce conseguiu carregar a classe PHPJasper?
RS

os erros que passei anteriormente consegui resolver todos, agora na hora que processo o relatorio está dando este:


Fatal error: Uncaught Error: Class 'AdiantiWidgetUtilTExceptionView' not found in C:wamp64wwwsgolibadianticoreAdiantiCoreApplication.php on line 71

Error: Class 'AdiantiWidgetUtilTExceptionView' not found in C:wamp64wwwsgolibadianticoreAdiantiCoreApplication.php on line 71

$input = 'reporterjasper/agentas.jasper'; $output= 'app/output/agentes'; $options = [ 'format' => ['pdf'], ]; $jasper = new PHPJasper\PHPJasper; $jasper->process($input,$output,$options)->execute();
AN

Input e output deve informar o caminho COMPLETO do relatório.... Ou seja a partir do disco c . C:/........
RS

obrigado Armando, agora deu certo, ficou show. abraço, qualquer coisa dou um grito...abraço, feliz 2019
AN

Robson.

Se você teve que fazer algo diferente do documento que enviei, detalhe aqui para os participantes do fórum. Como não tenho Windows acho que o pessoal que usa ficaria grato.

Se encontrar algum problema com Jasper e se eu souber como ajudar estamos aí.

Feliz 2019.
RS

beleza, combinado, estou tentando agora é fazer o processamento e abrir o pdf no mesma ação. novidades eu posto aqui.
AN

Eu tentei isso e percebi que qualquer comando após o execute abre um erro de exceção. Não consegui identificar o motivo disso.
RS

Armando, estou retomando um projeto que uso o Jasper, você conseguiu ver o porque que após EXECUTE() perde o caminho do Adianti, e da erros


  1. <?php
  2.  $jasper = new PHPJasper\PHPJasper;
  3.  $jasper->process($input,$output,$options)->execute();
  4. ?>



Fatal error: Uncaught Error: Class 'AdiantiWidgetBaseTScript' not found in C:wamp64wwwcertificadolibadiantiwidgetdatagridTDataGrid.php on line 960
Error: Class 'AdiantiWidgetBaseTScript' not found in C:wamp64wwwcertificadolibadiantiwidgetdatagridTDataGrid.php on line 960
AN

Não descobri Robson.

Aqui está funcionando com duas actions mesmo. Uma onde o relatório é processado e em outra onde então é impresso. Os usuários se acostumaram com esse tipo de abordagem. Tá fluindo tranquilo aqui.
FF

Ola estou usando a biblioteca phpJasper mas estou com um erro ao executar o
  1. <?php  $jasper->process($inputProcess,$outputProces,$optionsProces)->execute();  ?>

Imagem com a exceção https://prnt.sc/s3kt6i
FF

Ola estou usando a biblioteca phpJasper mas estou com um erro ao executar o
  1. <?php  $jasper->process($inputProcess,$outputProces,$optionsProces)->execute();  ?>

Imagem com a exceção https://prnt.sc/s3kt6i
FF

Encontrei, a versão estava errada, instalei o openjdk-8 e funcionou.

Mas apenas uma duvida, notei o mesmo erro ao executar o método process, não consigo chamar nenhuma classe do Adianti após isso, tive que usar a estrategia do Armando, duas ações uma para processar e outra para abrir o pdf.

Alguém achou a solução para isso?
ES

Preciso encontrar o arquivo onde eu possa fazer a alteração no seguinte comando: parametros.put("REPORT_LOCALE", new Locale("pt", "BR")).

Algúem pode me informar onde encontro esse arquivo?
DN

Emerson, no array de options vc seta o locale:
$options = [
'format' => ['pdf'],
'locale' => 'pt_BR',
'params' => [],
'db_connection' => [
'driver' => 'postgres',
'username' => 'user',
'password' => 'psw',
'host' => 'localhost',
'database' => 'banco',
'port' => '5432'
]
];

Emerson estou com o mesmo problema que vc, nao gosto de deixa 2 botoes, deberia poder fazer tudo em sequencia. Nao estou entendendo o por que nao posso chamar a funcao openFile a continuacao do execute do jasper..
MO

Boa noite,

Estou tentando definir o que usar como gerador de relatorio para integrar ao adianti e me deparei com esses posts acima.. gostaria de mais informações sobre como utilizar e configurar o Jasper no adianti, tentei acessar os links com os tutoriais que foram disponibilizados mas os links não estão disponíveis.. poderia postar novamente?
Muito Obrigado e Forte abraço!!!
AN

Marcos De Oliveira

Qual o seu email?
MO

Opa Armando..
Obrigado pela resposta...

eduardoitj@yahoo.com.br

Uma pertunta.. vc utiliza o Jasper para todos os seus relatórios? ou depende do que está precisando?
FM

Olá a todos, o que tiverem de informação sobre como integrar o Jasper no adianti ficarei muito grato. Algum dos colegas já tentou utilizar ele também no Builder?
FM

Esqueci de informar o email para contato: f.manfredini@hotmail.com
LC

Tem este vídeo:
https://www.youtube.com/watch?v=IzOZ7Br5utk

Eu não vi o vídeo ainda.
WR

Olá, poderia disponibilizar os arquivos para realizar a implementação do Jasper no Adianti? Meu e-mail: felipealvesrrodrigues@outlook.com