Login Registre-se
gerar xml na parte de imposto 3.10 [RESOLVIDO]  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline


cara meu problema esta nessa linha quando vai adicionar tanto para icms, pis e cofins ele da erro java.lang.NullPointerException
minha classe não possui erro nenhum mas na hora de gerar xml tenho try cach nesse bloco ele da erro java.lang.NullPointerException e nao cria as tag de impostos

det.getImposto().getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoICMS(icms));
tiagoberga

Moderador
[Avatar]

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

É um tanto quanto complicado te ajudar sem saber como está o funcionamento da sua classe. Se puder, peço que poste sua classe aqui para analisarmos

Esta mensagem foi editada 1 vez. Última atualização foi em 12/11/2014 08:46: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]
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

Ate achei q era minha classe tambem entao resolvi pegar outra aqui no forum para fazer teste e tive mesmo problema segue classe de teste.



package br.inf.portalfiscal.nfe.xsd;



import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import br.inf.portalfiscal.nfe.xsd.envinfe.ObjectFactory;
import br.inf.portalfiscal.nfe.xsd.envinfe.TEnderEmi;
import br.inf.portalfiscal.nfe.xsd.envinfe.TEndereco;
import br.inf.portalfiscal.nfe.xsd.envinfe.TEnviNFe;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Dest;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.COFINS;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.COFINS.COFINSNT;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.ICMS;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.ICMS.ICMSSN500;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.PIS;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Imposto.PIS.PISNT;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Det.Prod;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Emit;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Ide;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.InfAdic;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Total;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Total.ICMSTot;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Transp;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Transp.Transporta;
import br.inf.portalfiscal.nfe.xsd.envinfe.TNFe.InfNFe.Transp.Vol;
import br.inf.portalfiscal.nfe.xsd.envinfe.TUf;
import br.inf.portalfiscal.nfe.xsd.envinfe.TUfEmi;

/**
* Geração do XML da NF-e (Versão 2.00).
*
* @author Copyright (c) 2012 Maciel Gonçalves
*
* Este programa é software livre, você pode redistribuí-lo e ou modificá-lo
* sob os termos da Licença Pública Geral GNU como publicada pela Free
* Software Foundation, tanto a versão 2 da Licença, ou (a seu critério)
* qualquer versão posterior.
*
* http://www.gnu.org/licenses/gpl.txt
*
*/
public class GeraXML_teste {

public static void main(String[] args) {
try {
TNFe nFe = new TNFe();
InfNFe infNFe = new InfNFe();

infNFe.setId("NFe42110403452234000145550010000000281765232800");
infNFe.setVersao("2.00");

infNFe.setIde(dadosDeIdentificacao());
infNFe.setEmit(dadosDoEmitente());
infNFe.setDest(dadosDoDestinatario());

infNFe.getDet().add(dadosDoProduto());

infNFe.setTotal(totaisDaNFe());
infNFe.setTransp(dadosDoTransporte());
infNFe.setInfAdic(informacoesAdicionais());

nFe.setInfNFe(infNFe);

TEnviNFe enviNFe = new TEnviNFe();
enviNFe.setVersao("2.00");
enviNFe.setIdLote("0000001");
enviNFe.getNFe().add(nFe);

info("XML EnviNF-e: " + strValueOf(enviNFe));
} catch (Exception e) {
error(e.toString());
}
}

/**
* B - Identificação da Nota Fiscal eletrônica
* @return
*/
private static Ide dadosDeIdentificacao() {
Ide ide = new Ide();
ide.setCUF("42");
ide.setCNF("76523280");
ide.setNatOp("5102");
ide.setIndPag("0");
ide.setMod("55");
ide.setSerie("1");
ide.setNNF("101");
//ide.setDEmi("2011-04-16");
//ide.setDSaiEnt("2011-04-16");
//ide.setHSaiEnt("15:03:56");
ide.setTpNF("1");
ide.setCMunFG("4202800");
ide.setTpImp("2");
ide.setTpEmis("1");
ide.setCDV("0");
ide.setTpAmb("2");
ide.setFinNFe("1");
ide.setProcEmi("0");
ide.setVerProc("3.0");
return ide;
}

/**
* C - Identificação do Emitente da Nota Fiscal eletrônica
* @return
*/
private static Emit dadosDoEmitente() {
Emit emit = new Emit();
emit.setCNPJ("99999999000191");
emit.setXNome("NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
emit.setXFant("JavaC");

TEnderEmi enderEmit = new TEnderEmi();
enderEmit.setXLgr("AV. www.javac.com.br");
enderEmit.setNro("677");
enderEmit.setXBairro("WEB");
enderEmit.setCMun("4202800");
enderEmit.setXMun("Java");
enderEmit.setUF(TUfEmi.valueOf("SC"));
enderEmit.setCEP("88750000");
enderEmit.setCPais("1058");
enderEmit.setXPais("Brasil");
enderEmit.setFone("4812121212");
emit.setEnderEmit(enderEmit);

emit.setIE("111111111");
emit.setCRT("1");
return emit;
}

/**
* E - Identificação do Destinatário da Nota Fiscal eletrônica
* @return
*/
private static Dest dadosDoDestinatario() {
Dest dest = new Dest();
dest.setCNPJ("12345123000133");
dest.setXNome("Comunidade JavaC");

TEndereco enderDest = new TEndereco();
enderDest.setXLgr("Rua: Membros JavaC");
enderDest.setNro("10");
enderDest.setXBairro("WEB");
enderDest.setCMun("4202800");
enderDest.setXMun("Java");
enderDest.setUF(TUf.valueOf("SC"));
enderDest.setCEP("88750000");
enderDest.setCPais("1058");
enderDest.setXPais("Brasil");
enderDest.setFone("4845454545");
dest.setEnderDest(enderDest);

dest.setIE("464646464");
dest.setEmail("forum@javac.com.br");
return dest;
}

/**
* H - Detalhamento de Produtos e Serviços da NF-e
* I - Produtos e Serviços da NF-e
* M - Tributos incidentes no Produto ou Serviço
* V - Informações adicionais
* @return
*/
private static Det dadosDoProduto() {
TNFe.InfNFe.Det det = new TNFe.InfNFe.Det();
det.setNItem("1");

/**
* Dados do Produro
*/
Prod prod = new Prod();
prod.setCProd("2");
prod.setCEAN("");
prod.setXProd("Exemplo geracao XML JAXB");
prod.setNCM("99");
prod.setCFOP("5102");
prod.setUCom("UND");
prod.setQCom("2.0000");
prod.setVUnCom("90.0000");
prod.setVProd("180.00");
prod.setUTrib("UND");
prod.setQTrib("2.0000");
prod.setCEANTrib("");
prod.setVUnTrib("90.0000");
prod.setIndTot("1");
det.setProd(prod);

/**
* Impostos da NF-e
*/
//Imposto imposto = new Imposto();

try {


TNFe.InfNFe.Det.Imposto.ICMS icms = new TNFe.InfNFe.Det.Imposto.ICMS();
icms.setICMSSN102(new TNFe.InfNFe.Det.Imposto.ICMS.ICMSSN102());
icms.getICMSSN102().setCSOSN("102");
icms.getICMSSN102().setOrig("0");

TNFe.InfNFe.Det.Imposto.PIS pis = new TNFe.InfNFe.Det.Imposto.PIS();
pis.setPISNT(new TNFe.InfNFe.Det.Imposto.PIS.PISNT());
pis.getPISNT().setCST("01");

TNFe.InfNFe.Det.Imposto.COFINS cofins = new TNFe.InfNFe.Det.Imposto.COFINS();
cofins.setCOFINSNT(new TNFe.InfNFe.Det.Imposto.COFINS.COFINSNT());
cofins.getCOFINSNT().setCST("01");

det.getImposto().getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoICMS(icms));
det.getImposto().getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoPIS(pis));
det.getImposto().getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoCOFINS(cofins));



} catch (Exception e) {

e.printStackTrace();


}




/**
* Informações adicionais do Produto.
*/
det.setInfAdProd("Nota Fiscal Eletronica de Exemplo");

return det;
}

/**
* W - Valores Totais da NF-e
* @return
*/
private static Total totaisDaNFe() {
Total total = new Total();

ICMSTot icmstot = new ICMSTot();
icmstot.setVBC("0.00");
icmstot.setVICMS("0.00");
icmstot.setVBCST("0.00");
icmstot.setVST("0.00");
icmstot.setVProd("180.00");
icmstot.setVFrete("0.00");
icmstot.setVSeg("0.00");
icmstot.setVDesc("0.00");
icmstot.setVII("0.00");
icmstot.setVIPI("0.00");
icmstot.setVPIS("0.00");
icmstot.setVCOFINS("0.00");
icmstot.setVOutro("0.00");
icmstot.setVNF("180.00");
total.setICMSTot(icmstot);

return total;
}

/**
* X - Informações do Transporte da NF-e
* @return
*/
private static Transp dadosDoTransporte() {
Transp transp = new Transp();
transp.setModFrete("0");

/**
* Dados da Transportadora.
*/
Transporta transporta = new Transporta();
transporta.setCNPJ("34523233000123");
transporta.setXNome("JavaC - Java Communuty");
transporta.setIE("121212121");
transporta.setXEnder("AV. www.javac.com.br");
transporta.setXMun("Java");
transporta.setUF(TUf.valueOf("SC"));
transp.setTransporta(transporta);

/**
* Dados de Volumes.
*/
Vol vol = new Vol();
vol.setQVol("0");
vol.setNVol("0");
vol.setPesoL("0.000");
vol.setPesoB("0.000");
transp.getVol().add(vol);

return transp;
}

/**
* Z - Informações Adicionais da NF-e
* @return
*/
private static InfAdic informacoesAdicionais() {
InfAdic infAdic = new InfAdic();
infAdic.setInfCpl("Informacoes Adicionais da NF-e.");
return infAdic;
}

/**
* Método que Converte o Objeto em String.
* @param consStatServ
* @return
* @throws JAXBException
*/
private static String strValueOf(TEnviNFe enviNFe) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(TEnviNFe.class);
Marshaller marshaller = context.createMarshaller();
JAXBElement<TEnviNFe> element = new ObjectFactory().createEnviNFe((enviNFe));
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

StringWriter sw = new StringWriter();
marshaller.marshal(element, sw);

String xml = sw.toString();
xml = xml.replaceAll("xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" ", "");
xml = xml.replaceAll("<NFe>", "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">");

return xml;
}

/**
* Log ERROR.
* @param error
*/
private static void error(String error) {
System.out.println("| ERROR: " + error);
}

/**
* Log INFO.
* @param info
*/
private static void info(String info) {
System.out.println("| INFO: " + info);
}

}
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline


Caro tiagoberga resolvi utilizar o esquema aqui do forum
não estou mais usando o esquema PL_008e.

Foi rodar a geraxml tive retorno diferente

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef
The attribute required is undefined for the annotation type XmlElementRef

at br.inf.portalfiscal.nfe.xsd.envinfe.TNFe$InfNFe$Det$Imposto$ICMS.<init>(TNFe.java:11109)
at br.inf.portalfiscal.nfe.xsd.GeraXML_teste.dadosDoProduto(GeraXML_teste.java:202)
at br.inf.portalfiscal.nfe.xsd.GeraXML_teste.main(GeraXML_teste.java:61)

entao acessei a classe TNFe.java

estou com erro nessa linha
@XmlElementRef(name = "COFINS", namespace = "http://www.portalfiscal.inf.br/nfe", type = JAXBElement.class, required = false),


The attribute required is undefined for the annotation type XmlElementRef

alguma luz? qual esquema você esta utilizando?
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

tiagoberga

voce pode me passar treixo da sua classe que voce seta os impostos?

setCSOSN,setOrig etc..
tiagoberga

Moderador
[Avatar]

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

Até posso te passar uma ideia de como estou fazendo, mas primeiro você precisa entende o conceito de Design Pattern : Chain of Responsibility


primeiro entenda como funciona, se ja souber ótimo

ou seja, meus impostos eu trabalho desta forma, criei classes com o mesmo nome dos impostos, ICMS00, ICMS10... ICMSSN101, ICMSSN102...etc
o que eu faço utilizando o Chain of Responsibility, é utilizar de uma interface implementada em todas estas classes, onde a propria classe de imposto
verifica através do CST ou CSO qual o imposto correto, caso nao for, chama um próximo imposto, vou dar um exemplo abaixo apenas para entender:















De um retorno caso surja alguma duvida

Esta mensagem foi editada 4 vezes. Última atualização foi em 14/11/2014 10:16:35


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]
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

legal obrigado pelo retorno antes de tentar implementar vou dar uma olha em Chain of Responsibility...de qualquer forma obrigado.
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

segue exemplo que fiz para gerar parte do imposto funcionou legal!

Imposto imposto = new Imposto();

ICMS icms = new ICMS();
TNFe.InfNFe.Det.Imposto.ICMS.ICMSSN102 icmssn102 = new TNFe.InfNFe.Det.Imposto.ICMS.ICMSSN102();
icmssn102.setCSOSN("102");
icmssn102.setOrig("0");
icms.setICMSSN102(icmssn102);
imposto.getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoICMS(icms));

det.setImposto(imposto);
tiagoberga

Moderador
[Avatar]

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

boa! Conseguiu entender o Chain of Responsibility?

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]
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

+ ou - mas como eu ja tinha toda uma estrutura do 2.0 preferi optar por essa mesmo se não teria q mudar tudo!

muito trabalho rs
rodrigomarcelo

JavaC Membro
[Avatar]

Membro desde: 02/06/2013 17:45:55
Mensagens: 9
Offline

Senhores, desculpe entrar no meio da conversa...

Através deste post consegui entender e implementar o Imposto, tinha as mesmas dúvidas do amigo helton.a.marinho.

Só não estou conseguindo extrair os dados de imposto da classe...

No módulo de entrada de estoque, o usuário seleciona a opção de NF-E, e faz o upload do XML da nf-e da compra que ele fez, que geralmente ele recebeu por e-mail. Então eu uso o JAXB Unmarshaller, para transformar este XML em um objeto TNFe. Em seguida, recupero as informações que preciso pelos getters da classe normalmente. Mas o imposto retorna uma lista, List<JAXBElement> pra ser mais exato.

Como extrair esses dados? Já chegaram neste ponto?
[Email]
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

me passa a parte que voce seta o improsto pra eu dar uma olhada rodrigomarcelo
rodrigomarcelo

JavaC Membro
[Avatar]

Membro desde: 02/06/2013 17:45:55
Mensagens: 9
Offline

helton.a.marinho wrote:me passa a parte que voce seta o improsto pra eu dar uma olhada rodrigomarcelo


Por enquanto fiz apenas testes, segui inclusive o que vc comentou ali em cima:



A questão não está em setar, mas em recuperar nos gets... Já precisou fazer isso?
[Email]
helton.a.marinho

JavaC Membro

Membro desde: 06/09/2011 15:38:29
Mensagens: 191
Offline

desculpe tinha entendido que nao estava conseguindo setar!

mas tente dessa forma!


TNFe.InfNFe.Det.Imposto.ICMS icms = new TNFe.InfNFe.Det.Imposto.ICMS();
icms.setICMSSN102(new TNFe.InfNFe.Det.Imposto.ICMS.ICMSSN102());
icms.getICMSSN102().setCSOSN(it.getIcmsICMSSN102CSOSN());
icms.getICMSSN102().setOrig(it.getIcmsICMSSN102Orig());

det.getImposto().getContent().add(new ObjectFactory().createTNFeInfNFeDetImpostoICMS(icms));
tiagoberga

Moderador
[Avatar]

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

Acho que entendi o que rodrigomarcelo quis dizer. Seria algo assim:





o que resulta em erro, pois não retorna mais "ICMS". Rodrigo, eu não tenho uma solução para
você pois enfrente o mesmo problema e acabei por deixar de lado por enquanto. Não existe
solução ainda no fórum sobre isso, então deixemos este tópico como o pre-cursor desta solução
e vamos a partir de agora descobrir juntos ou criar uma solução

Esta mensagem foi editada 2 vezes. Última atualização foi em 14/11/2014 15:46:20


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]
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team