Login Registre-se
Ajuda NIVEL HARD com geração do Danfe [RESOLVIDO]  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 449
Offline

Boa tarde pessoal, a dúvida que tenho pode ser um problema para muita gente e podemos resolver juntos...
sabendo que APENAS para o imposto icms, temos muitas situações de CST que podem ocorrer, como

TNFe.InfNFe.Det.Imposto.ICMS.ICMS00;
TNFe.InfNFe.Det.Imposto.ICMS.ICMS10;
TNFe.InfNFe.Det.Imposto.ICMS.ICMS20;
TNFe.InfNFe.Det.Imposto.ICMS.ICMS30;
TNFe.InfNFe.Det.Imposto.ICMS.ICMS40;
.
.
.
e por ai vai ....

Quero tornar a minha ferramenta realmente profissional, ou seja, gerar um Danfe a partir de um xml processado que tenho guardado na base de dados....
pegar este xml, transformar em um objecto com o jaxb eu ja faço, porem empaquei nessa situação dos cst... onde pode retornar qualquer tipo de icms,
ou seja, OBJETOS DIFERENTES... e não faço a minima ideia de como poderia decidir qual objeto pegar... não sei se este tipo de problema tem um
"nome específico" para que eu possa realizar uma busca mais refinada na net, mas não encontro nenhum tipo de solução nem por onde começar...

Alguém?

Esta mensagem foi editada 2 vezes. Última atualização foi em 31/10/2014 09:40:42


Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
lucianohdr

JavaC Membro
[Avatar]

Membro desde: 26/12/2012 16:34:43
Mensagens: 42
Localização: Francisco Beltrão - Paraná
Offline

Olá Tiago, já tentou buscar algum arquivo de relatório já pronto?

No nosso caso aqui, estamos usando Ireport (.jasper),
achei um modelo pronto na internet, e eu simplesmente faço isso:


No nosso caso foi uma mão na roda
Espero ter ajudado, abraço.
 Nome do arquivo Danfe41140719634986000180550010000000311000000057.pdf [Disk] Download
 Descrição Exemplo de danfe gerado apartir do jasper
 Tamanho 464 Kbytes
 Baixado:  216 vez(es)


lucianohdr é legal. Mas Luciano fica bem melhor
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 449
Offline

Então amigão, primeiramente agradeço por ter respondido o tópico...

Eu já tenho todos os relatórios prontos, assim como ja postei vários no fórum pro pessoal ter como exemplo
caso coubesse à necessidade de alguém, porém eu resolvi talvez "reinventar" a roda, ou seja, antes eu buscava
as informações do banco, campo a campo e montava o jasper... agora eu passei a salvar no banco tambem o
xml na NFe, e gostaria de pegar os campos dele para popular o danfe... lembrando que minha ideia é pegar o xml,
tranformar com o jaxb para um objeto e então popular o Danfe... talvez eu esteja fazendo dois passos quando
na verdade deveria ser um só... apenas pegar o xml e JÁ popular o danfe... bom nao sei, aceito sujestões.

Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
lucianohdr

JavaC Membro
[Avatar]

Membro desde: 26/12/2012 16:34:43
Mensagens: 42
Localização: Francisco Beltrão - Paraná
Offline

Bom dia Tiago, então acho que entendi o que vc quer.

Nós aqui não usamos nada do banco de dados, a gente só manda o JRXmlDataSource com os dados do arquivo xml
e ele se vira sozinho.
Esse tipo de relatório usa xPath (que é uma espécie de sql pra arquivo xml) pra acessar os dados do xml, diferente de acessar os dados de um banco de dados,
ou de uma série de objetos.

eu já disponibilizo aqui os relatórios, ai vc olhando eles vc mesmo vai perceber como é fácil

abraços

lucianohdr é legal. Mas Luciano fica bem melhor
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 449
Offline

lucianohdr, acredito que você diz ser tão simples a forma como faz utilizando o JRXmlDataSource pois a NFe que vocês desenvolveram atende somente às necessidades da empresa em que atuam, estou certo ou errado?

Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
lucianohdr

JavaC Membro
[Avatar]

Membro desde: 26/12/2012 16:34:43
Mensagens: 42
Localização: Francisco Beltrão - Paraná
Offline

Sim Tiago, eu entendo o que vc quer dizer. Nosso sistema atende um tipo específico de empresa.
Mas no que diz respeito a danfe, não faz diferença, pois o processo que difere de uma empresa pra outra
já foi feito na hora da geração do xml, ou seja, não ha a necessidade de se fazer esse mesmo processo
na hora de exibir os dados do xml. Por isso, que essa abordagem de usar o arquivo xml como base para a danfe
é uma boa ideia.

------- EDITADO ---------
Mas caso esses arquivos de relatório não atendam algum tipo de empresa, como por exemplo, alguma do simples nacional,
é facil de se editar, é só ter um conhecimento básico de xPath.
Eu mesmo precisei alterar algumas coisas, como criar uma forma dinamica de associar a logo da empresa na danfe, e as informações complementares.

Se vc cheguar a usar os arquivos que mandei, algumas alterações vão precisar ser feitas, como o caminho da logo da empresa por exemplo.
Mas se vc olhar o código que passei antes, fica facil notar aonde isso é feito. (linha 9)

Para abrir esses arquivos, vc vai precisar do ireport
segue link:
http://sourceforge.net/projects/ireport/

Qualquer dúvida só perguntar
abraço
 Nome do arquivo ireport danfe.rar [Disk] Download
 Descrição Arquivos de relatorio - Danfe
 Tamanho 18 Kbytes
 Baixado:  209 vez(es)

Esta mensagem foi editada 1 vez. Última atualização foi em 28/10/2014 14:39:37


lucianohdr é legal. Mas Luciano fica bem melhor
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 449
Offline

Desculpe a demora para responder lucianohdr, baixei os seus arquivos e entendi o seu layout, cada campo retornando de acordo com a leitura do XPath
como o icms por ex: impost/ICMS/*/CST tudo beleza, porém vou citar um exemplo de uma informações que não entendi e que talvez seja o X da questão
para sanar minha dúvida em relação a este post:

det.imposto.ICMS.ICMSXX.CST, este XX do icms, o próprio XPath identifica que pode haver mais de uma situação de ICMS quando você determinou .../ICMS/*
e retorna dessa maneira ICMSXX, ou isso você fez manualmente de alguma forma?

Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
lucianohdr

JavaC Membro
[Avatar]

Membro desde: 26/12/2012 16:34:43
Mensagens: 42
Localização: Francisco Beltrão - Paraná
Offline

Boa noite Tiago.

Exatamente, eu ia comentar isso mas acabei esquecendo.
O nome do campo "det.imposto.ICMS.ICMSXX.CST", se eu não estiver enganado,
nao influencia no valor que vai aparecer no relatório.
O que conta mesmo é o "imposto/ICMS/*/CST" (que é a sintaxe do xPath) que esta declarado la no campo "Description"
quando vc clica em det.imposto.ICMS.ICMSXX.CST la em Fields.
Eu sei que parece estranho afinal "description" era pra ser comente uma descrição,
mas o jasper usa essa informação pra pegar os dados do xml.

E sim, essa parte veio com o relatório, eu não mexi nisso.
Um detalhe importante, é que esse relatório não vai funcionar com empresas do Simples nacional, porque
empresas desse tipo nao usam esse campo CST, e sim um tal de CSOSN. Mas isso é facil de contornar,
criando um operador ternario no relatorio. Verificando se o valor de det.imposto.ICMS.ICMSXX.CST esta vazio.

Mais uma coisa, use uma versão anterior do Ireport:
http://sourceforge.net/projects/ireport/files/iReport/iReport-5.0.0/

Porque senão vai começar a bugar o relatório a medida que vc for fazendo o build com as tuas alterações. Caso venha a usar isso.


lucianohdr é legal. Mas Luciano fica bem melhor
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 449
Offline

lucianohdr consegui entender perfeitamente todo o funcionamento do seu relatório, como resgatar os valores do xml
utilizando o XPath tudo certinho maravilha!
Consegui entender a ideia do imposto/ICMS/*/CST numa boa esta tudo lindo! hahaha. Na verdade não utilizei exatamente
o seu arquivo jasper, como eu ja tinha tudo criado, apenas gerei um fork dos meus próprios dados e renomeei os fields
para resgatarem os valores agora a partir do xml.
Os sub-relatórios deu um pouco de trabalho entender como pegar os valores mas também deu certo. Ainda utilizo a versão 4.8
do ireport, e como não utilizei os seus arquivos nao tive problema nenhum...
Ja ta tudo beleza! montei um método main rapidinho só pra gerar pdf e ver como ficava, agora só me resta substituir o xml
"default" que ituilizei pelos que tenho salvo no banco, e acredito que ja esta tudo certo ...

Conclusão* Antes eu utilizava de ClassesModel populadas com informações vindas do banco, para então gerar um relatório,
utilizando deste meio, o XPath, ficou muito mais simples e mais profissional, além de eu perceber melhora na performance
e na eliminação de todas as classes model


valeu! MUITO OBRIGADO lucianohdr... post [RESOLVIDO]

Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
lucianohdr

JavaC Membro
[Avatar]

Membro desde: 26/12/2012 16:34:43
Mensagens: 42
Localização: Francisco Beltrão - Paraná
Offline

Opa, fico feliz que tenha ajudado.
Infelizmente não achei mais o link de onde terei esse modelo pra dar o devido crédito,
já faz um tempinho que procurei por isso na internet

Mas enfim, que bom que esta tudo resolvido.
qualquer duvida só perguntar
Abraço

lucianohdr é legal. Mas Luciano fica bem melhor
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team