Customizar relatório já existente

Grupo sobre o desenvolvimento/extensão das funcionalidades do Compiere / Adempiere onde é necessário alterar o código fonte.
RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Customizar relatório já existente

Mensagempor RicoTr » Ter Mai 11, 2010 8:04 pm

Boa noite...

preciso customizar o Relatório de Reabastecimento, e vou fazer pelo IReport.
Mas como eu faço para executar o processo desta classe e chamar o .jasper ao invés do padrão do Adempiere???
No ambiente do Adempiere (como System em Relatorio&Processo->Replenish Report) eu coloco no campo: relatorio.jasper e o campo de visualização do relatório: deixo em branco.
Ele faz tudo certo, e mostra o relatório que criei (do IReport), mas não sei como passar o parâmetro, que no caso é o ad_pinstance_id...
Ou tenho que criar uma nova classe baseada no ReportStarter e tentar passar por aí????
Obrigado pela ajuda

Ricardo

edilsondneto
Mensagens: 145
Registrado em: Seg Mar 02, 2009 5:52 pm
Localização: Fortaleza-Ceara

Re: Customizar relatório já existente

Mensagempor edilsondneto » Ter Mai 11, 2010 9:26 pm

Veja http://www.adempiere.com/index.php/ADem ... tion_HowTo


Penso que seja o Recod_id "$P{RECORD_ID} "...veja se da certo, caso não de certo me fale que mando um jasper de exemplo.

RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Re: Customizar relatório já existente

Mensagempor RicoTr » Qua Mai 12, 2010 8:15 am

obrigado Edislon, acho mesmo que é por aí, mas 2 coisas...
1-nao encontro o ResportStarter2.java... em qual brance está????
2-mesmo assim fica a dúvida... pq.no Relatório de Reabastecimento ele utiliza a classe org.compiere.process.ReplenishReport. E nesta classe ele faz uma série de ações onde finaliza populando a tabela T_Replenish, e é esta a tabela do select utilizado pelo relatório. Mas nesta classe ele executa o processo e depois gera o relatório. O que ainda não sei é como vou fazer para ele executar o processo e depois gerar o relatório .jasper. Pq. eu ainda não tenho o Recod_id "$P{RECORD_ID}, somente vou te-lo depois de processar (onde inclusive preciso gerar o Pededido de Compra baseado neste relatório - mas isso ele faz). Aí sim, eu teria esta variável e poderia chamar a classe ResportStarter2....
obrigado
Ricardo

edilsondneto
Mensagens: 145
Registrado em: Seg Mar 02, 2009 5:52 pm
Localização: Fortaleza-Ceara

Re: Customizar relatório já existente

Mensagempor edilsondneto » Qua Mai 12, 2010 10:07 am

veja a Classe ReportStarter em org.compiere.repor.ReportStarter da tag 342.

veja a imagem no ireport na figura, que estou referenciando a categoria do produto cm $P{RECORD_ID}, então so vai imprimir a categoria que esta na tela.

Quando você for informar para o relatório faça assim no campo jasper report = attachment:NOMEDOARQUIVO.jrxml

seria isso que vc deseja?
ainda tem alguma duvida?

irepot.png
Ireport
irepot.png (28.77 KiB) Visto 5035 vezes

fernando_compufmt
Mensagens: 87
Registrado em: Qua Dez 19, 2007 7:55 pm

Re: Customizar relatório já existente

Mensagempor fernando_compufmt » Qua Mai 12, 2010 7:34 pm

Ola.
Bom para executar um novo .jasper são necessários alguns procedimentos. Uma dica, crie um novo "Relatorio de Reabastecimento" e apenas desative o anterior.
Então: em Relatorio/Processo.
Você ira preencher os campos de cadastro.. (vermelhos são obrigatórios).- não esqueca de marcar o checkbox "relatório".
Anexe o seu arquivo .jasper (que você criou pelo iReport) no processo (basta clicar no clipse que há logo acima).
No ultimo campo "Jasper Report" coloque o seguinte: attachment:arquivo.jasper
Coloque o .jasper que evita alguns erros que aparecem para compilar o arquivo .jrmxl
Caso voce utilize parametros, na aba de parametros o valor do campo "nome da coluna BD" deve coincidir com nome do parametro em seu relatório.

Att.

Fernando
Fernando Moraes
http://www.faire.com.br
Faire Consultoria

RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Re: Customizar relatório já existente

Mensagempor RicoTr » Qua Mai 12, 2010 10:49 pm

Bom é quase isto, mas o problema é somente o parametro. Fiz como o fernando sugeriu, e funcionou: ele chama o .jasper, mas aparece a mensagem: Não Contém Páginas. Isto por causa do parametro. Veja, eu já tenho 4 parametros, mas eles são para popular a tabela T_Replenish, e este processo funciona ok. Mas o parametro para o jasper é outro. E é justamente este que eu não sei como passar. Dentro da minha classe eu sei como pega-lo (getAD_PInstance_ID() - é só isso), mas como eu já tenho os outros parametros, me confundo... tenho que apaga-los e colocar somente o outro??? e como faço isto??? Ou seja, para o MEU processo, os parametros estao Ok, mas para o processo RportStarter é que não sei como passa-lo.
O meu select no jasper está assim:
select <campos> from adempiere.t_replenish where ad_pinstance_id=$P{ad_pinstance_id}
mas não tem como colocar este ad_pinstance_id na aba dos parametros. ou tem??? bom eu ja estou confuso e divagando, amanha volto a mexer com isto com a cabeça arejada...
obrigado pela ajuda...
Ricardo

ralexsander
Mensagens: 564
Registrado em: Ter Nov 21, 2006 7:43 am
Localização: São Paulo
Contato:

Re: Customizar relatório já existente

Mensagempor ralexsander » Qua Mai 12, 2010 10:55 pm

Olá Ricardo,

Basta incluir o parâmetro diretamente no iReport, com o mesmo nome que você colocou no Adempiere. Ex:

Adempiere: M_Product_ID
iReport: $P{M_Product_ID}

Att.
Ricardo Alexsander Santana
http://www.kenos.com.br

RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Re: Customizar relatório já existente

Mensagempor RicoTr » Qui Mai 13, 2010 7:37 am

No IReport está certo é o $P{ad_pinstance_id}
e no Adempiere é o campo: ad_pinstance_id
Mas isto não posso colocar como um parametro na: Aba de Parametros
No código fonte (minha classe), como fazer para criar parametro??
Obrigado

fernando_compufmt
Mensagens: 87
Registrado em: Qua Dez 19, 2007 7:55 pm

Re: Customizar relatório já existente

Mensagempor fernando_compufmt » Qui Mai 13, 2010 2:08 pm

Algumas perguntas, ainda nao entendi ao certo o que você está fazendo. Mas voce pode colocar o parametro AD_... sempre atento a diferenciacao de maiuscula e minuscula. Voce poderia colocar a imagem da janela Relatorio/Processo. Você esta executando uma classe(processo) e ao mesmo tempo querendo gerar o relatório, correto?!

Da pra chamar o relatorio via fonte, mas preciso conseguir entender o seu processo para tentar orientá-lomelhor maneira.

Att.

Fernando
Fernando Moraes
http://www.faire.com.br
Faire Consultoria

RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Re: Customizar relatório já existente

Mensagempor RicoTr » Qui Mai 13, 2010 8:55 pm

Desculpe a todos, eu acho que deveria ter começado justamente por esta parte, mas vamos lá.
O que estou querendo fazer é exatamete o Relatorio de Reabastecimento. Pelo Menu=>Administracao de Materiais=>Relatorio de Reabastecimento, que já existe e funciona como eu desejo. Ali tem 4 parametros: 1-Armazem / 2-Fornecedor / 3-Tipo de Documento / 4-Tipo de Documento.
Ou seja, para 1 armazém, escolho 1 fornecedor (e ligado a ele existem n produtos) e os Tipos de Documento quer dizer:
(de acordo com a regra escolhida lá no produto=>estoque min.e estoque máx...) se existir algum produto (que esteja ligado a este fornecedor) possuir um estoque menor do que o estoque mínimo, então aparece no relatório com a quantidade a comprar. E mais, se nos parametros existirem os Tipos de Documento (por exemplo Pedido de Compra), esse documento é gerado automaticamente.
Então existe a classe: org.compiere.process.ReplenishReport que faz exatamente isto. Ou seja, 1-executa um processo para validar/preencher a tabela T_Replenish 2-executa o processo de mostrar o relatório, que é baseado nesta tabela 3-cria automaticamente o documento desejado.
Como disse, ele faz, e faz correto. A única coisa que eu quero, é que ao invés de mostrar o relatório padrão do Adempiere, eu possa substituí-lo por um que vou criar pelo IReport. De resto está perfeito.
Aí que eu me perdi. Como passar o parametro do processo 1 => relatorio Jasper (ao invés de chamar o padrão).
Acredito que não seja tão difícil, já teste/debugei mas eu ainda estou me habituando ao código do Adempiere então fico me batendo... e incomodando...:)
obrigado pela atenção...

Ricardo

fernando_compufmt
Mensagens: 87
Registrado em: Qua Dez 19, 2007 7:55 pm

Re: Customizar relatório já existente

Mensagempor fernando_compufmt » Sex Mai 14, 2010 5:12 pm

Bom, nunca precisei alterar algo do tipo. mas vamos entender o que o adempiere faz.
Primeiro ele executa o processo que esta explito la:

-org.compiere.process.ReplenishReport

Logo apos este processo ser executado com sucesso, o sistema
continua a execuçao e realiza outras validacoes (classe ProcessCtl.java)

Se voce analisar o método verá que se tiver algum caminho setado
no campo "Jasper Report" que via setar a variavel isJasper == true

e vai entrar num IF q tem quase no final do metodo

Código: Selecionar todos

      if (isJasper)
      {
         m_pi.setReportingProcess(true);
         m_pi.setClassName(ProcessUtil.JASPER_STARTER_CLASS);
         startProcess();
         unlock();
         return;
      }



Entao tu vai colocar normalmente o caminho do jasper...
Agora os parametros, ele vai usar os do processo, no momento nao consigo visualizar outra forma a nao ser criar um parametro ad_p.... com uma logica padrao (para obter o valor da variavel e passa-la pro iReport).


Uma segunda alternativa seria copiar a classe ReplenishReport
e chamar o arquivo do report manualmente.. passando os devidos parametros e dxando a opcao relatorio desmarcada na config do Relatorio de Reabastecimento.

Att.

Fernando
Fernando Moraes
http://www.faire.com.br
Faire Consultoria

RicoTr
Mensagens: 33
Registrado em: Qua Mar 10, 2010 8:14 am

Re: Customizar relatório já existente

Mensagempor RicoTr » Dom Mai 16, 2010 10:50 am

É isso mesmo. Analisei e debugei, e acho que o melhor que devo fazer é mesmo como vc. sugeriu: copiar a ReplenhishReport e tirar a opção de relatório, ou seja, ele vai apenas fazer o processo, e depois eu chamo apenas o relatório manualmente. Fica mais fácil e prático e do jeito que o usuario quer, porque tudo isto é porque o cara quer "perfumaria", mas já que ele quer a gente faz. O probelam é que perdi muito tempo e esforço para isto, mas por outro lado aprendi mais importantes e coisas sobre o Adempiere. Obrigado a todos pela ajuda...
Ricardo

catia.alessandra
Mensagens: 95
Registrado em: Seg Jan 03, 2011 12:54 pm
Localização: Ijui, RS
Contato:

Re: Customizar relatório já existente

Mensagempor catia.alessandra » Sáb Mar 12, 2011 10:54 am

Vou reabrir o tópico. Estou mais ou menos na mesma questão.
Tenho esta tela que criei conforme anexo. Nela, posso selecionar uma ou várias expedições. E quando eu clicar no botão ok, ela vai imprimir essas expedições.
Eu criei o relatório no jasper e adicionei no "relatórios e processos". Só que como parâmetro, tenho que passar o DocumentNo da Nota Fiscal (LBR_NotaFiscal); mas não posso usar como parâmetro na aba parâmetros, pois podem ser várias, ou seja, teria que usar um array. No eclipse eu poderia usar algo como isso:

Código: Selecionar todos

   1. JRDataSource vetor = new JRBeanArrayDataSource(listaBoleto.toArray()); 
   2. Map < String, Object > parametros = new HashMap < String, Object > (); 
   3.   
   4. parametros.put("numGuia", numGuia); 
   5. parametros.put("pvEmissor", pvEmissor); 
   6. parametros.put("dataEmissao", dataEmissao); 
   7. parametros.put("dataValidade", dataValidade); 
   8. parametros.put("controle", controle); 
   9. parametros.put("nis", nis); 
  10. parametros.put("tpSegurado", tpSegurado); 
  11. parametros.put("nomeSegurado", nomeSegurado); 
  12. parametros.put("dataNascimento", dataNascimento); 
  13. parametros.put("nomeMae", nomeMae); 
  14. parametros.put("nuRequerimento", requerimento); 
  15.   
  16. JasperPrint jasperPrint = JasperFillManager.fillReport( seu jasper aqui, parametros, vetor ); 


mas e no Adempiere? e No iReport?
Ou tem outro jeito de fazer??
Desde já agradeço :D

P.S. Conseguiram entender meu caso?
Última edição por catia.alessandra em Ter Mar 15, 2011 10:15 am, editado 1 vez no total.
--
Cátia Alessandra Feistler
-------------------------------------------------------
E-mail: catia.alessandra@gmail.com
MSN: catia.alessandra.f@hotmail.com

mgrigioni
Mensagens: 483
Registrado em: Sex Jan 05, 2007 3:08 pm
Localização: Jacareí/SP

Re: Customizar relatório já existente

Mensagempor mgrigioni » Seg Mar 14, 2011 2:06 pm

no seu formulário vc faz um processo que salva o ID das notas fiscais em uma tabela temporária, e dai no seu jasper vc faz um select dos ids desta tabela...


Voltar para “Desenvolvimento - Java”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante