Deixo minha pequena contribuição, para utilizar JaxB.
Ainda estou no inicio do projeto, mas vejo muitos gerando as classes e o XML na mão.
- Baixe os arquivos xsd. Eu joguei na pasta schemas
- Gerar as classe: xjc ./schemas/nfe_v2.00.xsd (aqui vai gerar as classe para a Nota, vale o mesmo para as outras classes)
- Editar a classe TNFe, procurar a linha public class TNFe {, e deixar com a seguinte anotação:
@XmlRootElement(name = “NFe”)
public class TNFe {
Abaixo está a classe que uso para gerar a nota, isso me garante que terei as tags corretas.
O objeto nfeDados, gerado pelo meu sistema, está populado com os dados para preencher a nota.
imports ...
public class GerarNfeComJaxb {
private ApoioNfe apoioNfe = new ApoioNfe();
private static Session session = HibernateUtil.getSession();
private NfeDados nfeDados; // Aqui estão os dados para preenchimento da Nfe
private String workDir;
private JAXBContext jaxbContext;
private Marshaller mainMarshaller;
private ObjectFactory mainFactory;
public String iniciar(NfeDados nfeDados, String workDir){
this.nfeDados = nfeDados;
this.workDir = workDir;
return processar();
}
private String processar(){
String arquivo= "";
try {
this.jaxbContext = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
this.mainMarshaller = jaxbContext.createMarshaller();
this.mainFactory = new ObjectFactory();
final javax.xml.bind.Marshaller m = mainMarshaller;
ObjectFactory factory = mainFactory;
TNFe nfe = factory.createTNFe();
InfNFe inf = factory.createTNFeInfNFe();
Ide ide = factory.createTNFeInfNFeIde();
Emit emit = factory.createTNFeInfNFeEmit();
nfe.setInfNFe(inf);
inf.setIde(ide);
inf.setEmit(emit);
inf.setVersao(nfeDados.getVersao());
inf.setId( nfeDados.getChave());
identificacaoNfe(factory, nfe);
emitente(factory, nfe);
destinatario(factory, nfe);
localEntraga(factory, nfe);
produtos(factory, nfe);
valorTotal(factory, nfe);
transporte(factory, nfe);
cobranca(factory, nfe);
informacoesAdicionais(factory, nfe);
arquivo = workDir + nfe.getInfNFe().getId() + "-nfe.xml";
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(nfe, new File(arquivo));
} catch (JAXBException e) {
System.out.println("Erro JAXBException: "+e.getMessage());
}
return arquivo;
}
// ------------------------------------------------------------------------------------------------------
private void identificacaoNfe(ObjectFactory factory, TNFe nfe){
Ide ide = nfe.getInfNFe().getIde();
ide.setCUF(this.nfeDados.getEmitente().getCidade().getUf().getCodIbge().toString());
ide.setCNF(this.apoioNfe.zeroFill(this.nfeDados.getCnf().toString(), 8));
ide.setNatOp(this.apoioNfe.limitarTamanho(this.nfeDados.getNatOp(), 60));
ide.setIndPag(this.nfeDados.getIndPag().toString());
ide.setMod(this.nfeDados.getModelo().toString());
ide.setSerie(this.nfeDados.getSerieNota().toString());
ide.setNNF(this.nfeDados.getNnf().toString());
ide.setDEmi(this.apoioNfe.toXMLDate(this.nfeDados.getDemi()));
ide.setDSaiEnt(this.apoioNfe.toXMLDate(this.nfeDados.getDsaiEnt()));
ide.setHSaiEnt(this.apoioNfe.toXMLHora(this.nfeDados.getDsaiEnt()));
ide.setTpNF(this.nfeDados.getTpNf().toString());
ide.setCMunFG(this.nfeDados.getCmunFg().toString());
// Notas referenciadas
notasReferenciadas();
ide.setTpImp(this.nfeDados.getTpImp().toString());
ide.setTpEmis(this.nfeDados.getTpEmis().toString());
ide.setCDV(this.nfeDados.getCdv().toString());
ide.setTpAmb(this.nfeDados.getTpAmb().toString());
ide.setFinNFe(this.nfeDados.getFinNfe().toString());
ide.setProcEmi(this.nfeDados.getProcEmi().toString());
ide.setVerProc(this.nfeDados.getVerProc());
}
private String notasReferenciadas(){
// ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. precisa continuar
return "";
}
private void emitente(ObjectFactory factory, TNFe nfe){
Emit emit = nfe.getInfNFe().getEmit();
emit.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getCnpj()), 14));
emit.setXNome(this.nfeDados.getEmitente().getNome());
if (!this.nfeDados.getEmitente().getFantasia().equals(""))
emit.setXFant(this.nfeDados.getEmitente().getFantasia());
// Endereço do emitente
TEnderEmi end = factory.createTEnderEmi();
emit.setEnderEmit(end);
end.setXLgr(this.nfeDados.getEmitente().getEndereco());
end.setNro(this.nfeDados.getEmitente().getNumero());
if (!this.nfeDados.getEmitente().getComplemento().equals(""))
end.setXCpl(this.nfeDados.getEmitente().getComplemento());
end.setXBairro(this.nfeDados.getEmitente().getBairro());
end.setCMun(this.apoioNfe.zeroFill(this.nfeDados.getEmitente().getCidade().getCodIbge().toString(), 7));
end.setXMun(this.nfeDados.getEmitente().getCidade().getNome());
end.setUF(TUfEmi.fromValue(this.nfeDados.getEmitente().getCidade().getUf().getAbreviatura()));
end.setCEP(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getCep()), 8));
end.setCPais(this.apoioNfe.zeroFill(this.nfeDados.getEmitente().getCidade().getUf().getPais().getCodIbge().toString(), 4));
end.setXPais(this.nfeDados.getEmitente().getCidade().getUf().getPais().getNome());
end.setFone(this.apoioNfe.semParentese(this.nfeDados.getEmitente().getTelefone()));
emit.setIE(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getIe()));
ConfiguracoesDao configuracoesDao = new ConfiguracoesDao(session);
emit.setCRT(configuracoesDao.getParametro("NFE_CRT"));
}
private void destinatario(ObjectFactory factory, TNFe nfe){
Dest dest = factory.createTNFeInfNFeDest();
nfe.getInfNFe().setDest(dest);
if (this.nfeDados.getDestinatario().getCnpj() == null){
dest.setCNPJ("");
}else{
if (this.nfeDados.getDestinatario().isPessoa_fisica())
dest.setCPF(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getCnpj()), 11));
else
dest.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getCnpj()), 14));
}
dest.setXNome(this.apoioNfe.limitarTamanho(this.nfeDados.getDestinatario().getNome(), 60));
// Endereço do destinatario
PessoaEndereco endereco = getEnderecoPessoa(this.nfeDados.getDestinatario().getId());
TEndereco end = factory.createTEndereco();
dest.setEnderDest(end);
end.setXLgr(endereco.getEndereco());
end.setNro(endereco.getNumero());
if (endereco.getComplemento() != null && (!endereco.getComplemento().equals("")) && (!endereco.getComplemento().equals("null")))
end.setXCpl(endereco.getComplemento());
end.setXBairro(endereco.getBairro());
end.setCMun(this.apoioNfe.zeroFill(endereco.getCidade().getCodIbge().toString(), 7));
end.setXMun(endereco.getCidade().getNome());
end.setUF(TUf.fromValue(endereco.getCidade().getUf().getAbreviatura()));
end.setCEP(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(endereco.getCep()), 8));
end.setCPais(this.apoioNfe.zeroFill(endereco.getCidade().getUf().getPais().getCodIbge().toString(), 4));
end.setXPais(endereco.getCidade().getUf().getPais().getNome());
PessoaContatoDao pessoaContatoDao = new PessoaContatoDao(session);
PessoaContato pessoaContato = pessoaContatoDao.procura(this.nfeDados.getDestinatario().getId());
end.setFone(this.apoioNfe.semParentese(pessoaContato.getTelefone()));
dest.setIE(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getIe()));
}
//Falta concluir
private void localEntraga(ObjectFactory factory, TNFe nfe) {
}
// Conferir com o contador as caracteristicas dos impostos
private void produtos(ObjectFactory factory, TNFe nfe) {
NfeDetalheDao nfeDetalheDao = new NfeDetalheDao(session);
List<NfeDetalhe> itens = nfeDetalheDao.getNfeItens(this.nfeDados.getId());
Integer sequencia = 0;
for (NfeDetalhe nfeItem : itens) {
Det det = factory.createTNFeInfNFeDet();
nfe.getInfNFe().getDet().add(det);
sequencia = sequencia + 1;
Prod prod = factory.createTNFeInfNFeDetProd();
det.setProd(prod);
det.setNItem(sequencia.toString());
prod.setCProd(nfeItem.getCprod());
prod.setCEAN("");
prod.setXProd(nfeItem.getXprod());
prod.setNCM(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeItem.getNcm()), 8));
prod.setEXTIPI(nfeItem.getExTipi());
prod.setCFOP(nfeItem.getCfop().toString());
prod.setUCom(nfeItem.getUcom());
prod.setQCom(this.apoioNfe.toQtde(nfeItem.getQcom(), 4));
prod.setVUnCom(this.apoioNfe.toQtde(nfeItem.getVunCom(), 4));
prod.setVProd(this.apoioNfe.toQtde(nfeItem.getVprod(), 2));
prod.setCEANTrib("");
prod.setUTrib(nfeItem.getUtrib());
prod.setQTrib(this.apoioNfe.toQtde(nfeItem.getQtrib(), 4));
prod.setVUnTrib(this.apoioNfe.toQtde(nfeItem.getVunTrib(), 4));
if (nfeItem.getVfrete() > 0)
prod.setVFrete(this.apoioNfe.toQtde(nfeItem.getVfrete(), 2));
if (nfeItem.getVseg() > 0)
prod.setVSeg(this.apoioNfe.toQtde(nfeItem.getVseg(), 2));
if (nfeItem.getVdesc() > 0)
prod.setVDesc(this.apoioNfe.toQtde(nfeItem.getVdesc(), 2));
if (nfeItem.getVoutro() > 0)
prod.setVOutro(this.apoioNfe.toQtde(nfeItem.getVoutro(), 2));
prod.setIndTot(nfeItem.getIndTot());
if (!nfeItem.getNdi().equals("")){
DI di = factory.createTNFeInfNFeDetProdDI();
prod.getDI().add(di);
di.setNDI(nfeItem.getNdi());
di.setDDI(this.apoioNfe.toXMLDate(nfeItem.getDdi()));
di.setXLocDesemb(nfeItem.getXlocDesemb());
di.setUFDesemb(TUfEmi.fromValue(nfeItem.getUfDesemb()));
di.setDDesemb(this.apoioNfe.toXMLDate(nfeItem.getDdesemb()));
di.setCExportador(nfeItem.getCexportador());
}
Imposto imposto = factory.createTNFeInfNFeDetImposto();
det.setImposto(imposto);
ICMS icmsTag = factory.createTNFeInfNFeDetImpostoICMS();
imposto.setICMS(icmsTag);
int crt = -1;
try {
crt = this.nfeDados.getEmit_crt();
} catch (Exception e) { }
NfeIcmsDao nfeIcmsDao = new NfeIcmsDao(session);
NfeIcms nfeIcms = nfeIcmsDao.procura(nfeItem.getId());
if (crt > 1){
int cst = nfeIcms.getCst();
if (cst == 40 || cst == 41 || cst == 50){
ICMS40 icms = factory.createTNFeInfNFeDetImpostoICMSICMS40();
icmsTag.setICMS40(popularIcms40(nfeIcms, icms));
}
if (cst == 0){
ICMS00 icms = factory.createTNFeInfNFeDetImpostoICMSICMS00();
icmsTag.setICMS00(popularIcms00(nfeIcms, icms));
}
if (cst == 10){
ICMS10 icms = factory.createTNFeInfNFeDetImpostoICMSICMS10();
icmsTag.setICMS10(popularIcms10(nfeIcms, icms));
}
if (cst == 20){
ICMS20 icms = factory.createTNFeInfNFeDetImpostoICMSICMS20();
icmsTag.setICMS20(popularIcms20(nfeIcms, icms));
}
if (cst == 30){
ICMS30 icms = factory.createTNFeInfNFeDetImpostoICMSICMS30();
icmsTag.setICMS30(popularIcms30(nfeIcms, icms));
}
if (cst == 40 || cst == 41 || cst == 50){
ICMS40 icms = factory.createTNFeInfNFeDetImpostoICMSICMS40();
icmsTag.setICMS40(popularIcms40(nfeIcms, icms));
}
if (cst == 51){
ICMS51 icms = factory.createTNFeInfNFeDetImpostoICMSICMS51();
icmsTag.setICMS51(popularIcms51(nfeIcms, icms));
}
if (cst == 60){
ICMS60 icms = factory.createTNFeInfNFeDetImpostoICMSICMS60();
icmsTag.setICMS60(popularIcms60(nfeIcms, icms));
}
if (cst == 70){
ICMS70 icms = factory.createTNFeInfNFeDetImpostoICMSICMS70();
icmsTag.setICMS70(popularIcms70(nfeIcms, icms));
}
if (cst == 90){
ICMS90 icms = factory.createTNFeInfNFeDetImpostoICMSICMS90();
icmsTag.setICMS90(popularIcms90(nfeIcms, icms));
}
}else{
if (crt == 1){ //Simples Nacional
int csosn = nfeIcms.getCsosn();
if (csosn == 101){
ICMSSN101 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN101();
icmsTag.setICMSSN101(popularCsosn101(nfeIcms, icms));
}
if (csosn == 102 || csosn == 103 || csosn == 300 || csosn == 400){
ICMSSN102 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN102();
icmsTag.setICMSSN102(popularCsosn102(nfeIcms, icms));
}
if (csosn == 201){
ICMSSN201 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN201();
icmsTag.setICMSSN201(popularCsosn201(nfeIcms, icms));
}
if (csosn == 202){
ICMSSN202 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN202();
icmsTag.setICMSSN202(popularCsosn202(nfeIcms, icms));
}
if (csosn == 500){
ICMSSN500 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN500();
icmsTag.setICMSSN500(popularCsosn500(nfeIcms, icms));
}
if (csosn == 900){
ICMSSN900 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN900();
icmsTag.setICMSSN900(popularCsosn900(nfeIcms, icms));
}
}
}
IPI ipi = factory.createTNFeInfNFeDetImpostoIPI();
impostoIpi(nfeItem, ipi, factory, imposto);
II ii = factory.createTNFeInfNFeDetImpostoII();
impostoImportacao(nfeItem, ii, imposto);
PIS pis = factory.createTNFeInfNFeDetImpostoPIS();
impostoPis(nfeItem, pis, factory, imposto);
PISST pisSt = factory.createTNFeInfNFeDetImpostoPISST();
impostoPisSt(nfeItem, pisSt, factory, imposto);
COFINS cofins = factory.createTNFeInfNFeDetImpostoCOFINS();
impostoCofins(nfeItem, cofins, factory, imposto);
COFINSST cofinsSt = factory.createTNFeInfNFeDetImpostoCOFINSST();
impostoCofinsSt(nfeItem, cofinsSt, factory, imposto);
ISSQN issQn = factory.createTNFeInfNFeDetImpostoISSQN();
impostoIssQn(nfeItem, issQn, factory, imposto);
}
}
private ICMS00 popularIcms00(NfeIcms nfeIcms, ICMS00 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC());
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
return icms;
}
private ICMS10 popularIcms10(NfeIcms nfeIcms, ICMS10 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC());
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
return icms;
}
private ICMS20 popularIcms20(NfeIcms nfeIcms, ICMS20 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC());
icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
return icms;
}
private ICMS30 popularIcms30(NfeIcms nfeIcms, ICMS30 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
return icms;
}
private ICMS40 popularIcms40(NfeIcms nfeIcms, ICMS40 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
icms.setMotDesICMS(String.valueOf(nfeIcms.getMotDeslIcms()));
return icms;
}
private ICMS51 popularIcms51(NfeIcms nfeIcms, ICMS51 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC().toString());
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
return icms;
}
private ICMS60 popularIcms60(NfeIcms nfeIcms, ICMS60 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setVBCSTRet(this.apoioNfe.toQtde(nfeIcms.getVbCstRet(), 2));
icms.setVICMSSTRet(this.apoioNfe.toQtde(nfeIcms.getVicmsStRet(), 2));
return icms;
}
private ICMS70 popularIcms70(NfeIcms nfeIcms, ICMS70 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC());
icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
return icms;
}
private ICMS90 popularIcms90(NfeIcms nfeIcms, ICMS90 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCST(String.valueOf(nfeIcms.getCst()));
icms.setModBC(nfeIcms.getModBC());
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
return icms;
}
private ICMSSN101 popularCsosn101(NfeIcms nfeIcms, ICMSSN101 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
return icms;
}
private ICMSSN102 popularCsosn102(NfeIcms nfeIcms, ICMSSN102 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
return icms;
}
private ICMSSN201 popularCsosn201(NfeIcms nfeIcms, ICMSSN201 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
return icms;
}
private ICMSSN202 popularCsosn202(NfeIcms nfeIcms, ICMSSN202 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
return icms;
}
private ICMSSN500 popularCsosn500(NfeIcms nfeIcms, ICMSSN500 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
icms.setVBCSTRet(this.apoioNfe.toQtde(nfeIcms.getVbCstRet(), 2));
icms.setVICMSSTRet(this.apoioNfe.toQtde(nfeIcms.getVicmsStRet(), 2));
return icms;
}
private ICMSSN900 popularCsosn900(NfeIcms nfeIcms, ICMSSN900 icms) {
icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
icms.setModBC(String.valueOf(nfeIcms.getModBC()));
icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
icms.setModBCST(nfeIcms.getModBCst().toString());
icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
return icms;
}
// ------------------------------------------------------------------------------------
private void impostoIpi(NfeDetalhe detItem, IPI ipi, ObjectFactory factory, Imposto imposto){
try {
NfeIpiDao nfeIpiDao = new NfeIpiDao(session);
NfeIpi nfeIpi = nfeIpiDao.procura(detItem.getId());
if (nfeIpi.getClEnq() != null)
ipi.setClEnq(String.valueOf(nfeIpi.getClEnq()));
if (nfeIpi.getCnpjProd() != null)
ipi.setCNPJProd(String.valueOf(nfeIpi.getCnpjProd()));
if (nfeIpi.getCselo() != null)
ipi.setCSelo(String.valueOf(nfeIpi.getCselo()));
if (nfeIpi.getQselo() != null)
ipi.setQSelo(String.valueOf(nfeIpi.getQselo()));
ipi.setCEnq(String.valueOf(nfeIpi.getCenq()));
int cst = nfeIpi.getCst();
if (cst == 0 || cst == 49 || cst == 50 || cst == 99){
IPITrib ipiTrib = factory.createTNFeInfNFeDetImpostoIPIIPITrib();
ipi.setIPITrib(ipiTrib);
ipiTrib.setCST(this.apoioNfe.zeroFill(nfeIpi.getCst().toString(), 2));
if (nfeIpi.getVbc() > 0){
ipiTrib.setVBC(this.apoioNfe.toQtde(nfeIpi.getVbc(), 2));
ipiTrib.setPIPI(this.apoioNfe.toQtde(nfeIpi.getPipi(), 2));
}else{
if (nfeIpi.getQunid() > 0){
ipiTrib.setQUnid(this.apoioNfe.toQtde(nfeIpi.getQunid(), 4));
ipiTrib.setVUnid(this.apoioNfe.toQtde(nfeIpi.getVunid(), 4));
}
}
ipiTrib.setVIPI(this.apoioNfe.toQtde(nfeIpi.getVipi(), 2));
}else{
if (cst == 01 || cst == 02 || cst == 03 || cst == 04 || cst == 51 || cst == 52 || cst == 53 || cst == 54 || cst == 55){
IPINT ipiNt = factory.createTNFeInfNFeDetImpostoIPIIPINT();
ipi.setIPINT(ipiNt);
ipiNt.setCST(this.apoioNfe.zeroFill(nfeIpi.getCst().toString(), 2));
}
}
imposto.setIPI(ipi);
} catch (Exception e) {
}
}
private void impostoImportacao(NfeDetalhe detItem, II ii, Imposto imposto){
try {
NfeImpostoImportDao nfeImpostoImportDao = new NfeImpostoImportDao(session);
NfeImpostoImport nfeII = nfeImpostoImportDao.procura(detItem.getId());
ii.setVBC(this.apoioNfe.toQtde(nfeII.getVbc(), 2));
ii.setVDespAdu(this.apoioNfe.toQtde(nfeII.getVdespAdu(), 2));
ii.setVII(this.apoioNfe.toQtde(nfeII.getVii(), 2));
ii.setVIOF(this.apoioNfe.toQtde(nfeII.getViof(), 2));
imposto.setII(ii);
} catch (Exception e) { }
}
private void impostoPis(NfeDetalhe detItem, PIS pis, ObjectFactory factory, Imposto imposto){
try {
NfePisDao nfePisDao = new NfePisDao(session);
NfePis nfePis = nfePisDao.procura(detItem.getId());
int cst = nfePis.getCst();
if (cst == 01 || cst == 02){
PISAliq pisAliq = factory.createTNFeInfNFeDetImpostoPISPISAliq();
pis.setPISAliq(pisAliq);
pisAliq.setCST(nfePis.getCst().toString());
pisAliq.setVBC(this.apoioNfe.toQtde(nfePis.getVbc(), 2));
pisAliq.setPPIS(this.apoioNfe.toQtde(nfePis.getPpis(), 2));
pisAliq.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
}
if (cst == 03){
PISQtde pisQtde = factory.createTNFeInfNFeDetImpostoPISPISQtde();
pis.setPISQtde(pisQtde);
pisQtde.setCST(nfePis.getCst().toString());
pisQtde.setQBCProd(this.apoioNfe.toQtde(nfePis.getQbcProd(), 4));
pisQtde.setVAliqProd(this.apoioNfe.toQtde(nfePis.getValiqProd(), 4));
pisQtde.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
}
if (cst == 4 || cst == 6 || cst == 7 || cst == 8 || cst == 9){
PISNT pisNt = factory.createTNFeInfNFeDetImpostoPISPISNT();
pis.setPISNT(pisNt);
pisNt.setCST(nfePis.getCst().toString());
}
if (cst == 99){
PISOutr pisOutr = factory.createTNFeInfNFeDetImpostoPISPISOutr();
pis.setPISOutr(pisOutr);
pisOutr.setCST(nfePis.getCst().toString());
pisOutr.setVBC(this.apoioNfe.toQtde(nfePis.getVbc(), 2));
pisOutr.setPPIS(this.apoioNfe.toQtde(nfePis.getPpis(), 2));
pisOutr.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
}
imposto.setPIS(pis);
} catch (Exception e) { }
}
private void impostoPisSt(NfeDetalhe detItem, PISST pisSt, ObjectFactory factory, Imposto imposto){
try {
NfePisStDao nfePisStDao = new NfePisStDao(session);
NfePisSt nfePisSt = nfePisStDao.procura(detItem.getId());
pisSt.setVBC(this.apoioNfe.toQtde(nfePisSt.getVbc(), 2));
pisSt.setPPIS(this.apoioNfe.toQtde(nfePisSt.getPpis(), 2));
pisSt.setVPIS(this.apoioNfe.toQtde(nfePisSt.getVpis(), 2));
imposto.setPISST(pisSt);
} catch (Exception e) { }
}
private void impostoCofins(NfeDetalhe detItem, COFINS cofins, ObjectFactory factory, Imposto imposto){
try {
NfeCofinsDao nfeCofinsDao = new NfeCofinsDao(session);
NfeCofins nfeCofins = nfeCofinsDao.procura(detItem.getId());
int cst = nfeCofins.getCst();
if (cst == 01 || cst == 02){
COFINSAliq cofinsAliq = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSAliq();
cofins.setCOFINSAliq(cofinsAliq);
cofinsAliq.setCST(nfeCofins.getCst().toString());
cofinsAliq.setVBC(this.apoioNfe.toQtde(nfeCofins.getVbc(), 2));
cofinsAliq.setPCOFINS(this.apoioNfe.toQtde(nfeCofins.getPcofins(), 2));
cofinsAliq.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
}
if (cst == 03){
COFINSQtde cofinsQtde = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSQtde();
cofins.setCOFINSQtde(cofinsQtde);
cofinsQtde.setCST(nfeCofins.getCst().toString());
cofinsQtde.setQBCProd(this.apoioNfe.toQtde(nfeCofins.getQbcProd(), 4));
cofinsQtde.setVAliqProd(this.apoioNfe.toQtde(nfeCofins.getValiqProd(), 4));
cofinsQtde.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
}
if (cst == 4 || cst == 6 || cst == 7 || cst == 8 || cst == 9){
COFINSNT cofinsNt = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSNT();
cofins.setCOFINSNT(cofinsNt);
cofinsNt.setCST(nfeCofins.getCst().toString());
}
if (cst == 99){
COFINSOutr cofinsOutr = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSOutr();
cofins.setCOFINSOutr(cofinsOutr);
cofinsOutr.setCST(nfeCofins.getCst().toString());
cofinsOutr.setVBC(this.apoioNfe.toQtde(nfeCofins.getVbc(), 2));
cofinsOutr.setPCOFINS(this.apoioNfe.toQtde(nfeCofins.getPcofins(), 2));
cofinsOutr.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
}
imposto.setCOFINS(cofins);
} catch (Exception e) {}
}
private void impostoCofinsSt(NfeDetalhe detItem, COFINSST cofinsSt, ObjectFactory factory, Imposto imposto){
try {
NfeCofinsStDao nfeCofinsStDao = new NfeCofinsStDao(session);
NfeCofinsSt nfeCofinsSt = nfeCofinsStDao.procura(detItem.getId());
cofinsSt.setVBC(this.apoioNfe.toQtde(nfeCofinsSt.getVbc(), 2));
cofinsSt.setPCOFINS(this.apoioNfe.toQtde(nfeCofinsSt.getPcofins(), 2));
cofinsSt.setQBCProd(this.apoioNfe.toQtde(nfeCofinsSt.getQbcProd(), 4));
cofinsSt.setVAliqProd(this.apoioNfe.toQtde(nfeCofinsSt.getValiqProd(), 4));
cofinsSt.setVCOFINS(this.apoioNfe.toQtde(nfeCofinsSt.getVcofins(), 2));
imposto.setCOFINSST(cofinsSt);
} catch (Exception e) {}
}
private void impostoIssQn(NfeDetalhe detItem, ISSQN issQn, ObjectFactory factory, Imposto imposto){
try {
NfeIssQnDao nfeIssQnDao = new NfeIssQnDao(session);
NfeIssQn nfeIssQn = nfeIssQnDao.procura(detItem.getId());
issQn.setVBC(this.apoioNfe.toQtde(nfeIssQn.getVbc(), 2));
issQn.setVAliq(this.apoioNfe.toQtde(nfeIssQn.getValiq(), 2));
issQn.setVISSQN(this.apoioNfe.toQtde(nfeIssQn.getVissQn(), 2));
issQn.setCMunFG(this.nfeDados.getEmitente().getCidade().getCodIbge().toString());
issQn.setCListServ(nfeIssQn.getClistServ());
issQn.setCSitTrib(nfeIssQn.getCsitTrib());
imposto.setISSQN(issQn);
} catch (Exception e) {}
}
private void valorTotal(ObjectFactory factory, TNFe nfe){
Total total = factory.createTNFeInfNFeTotal();
nfe.getInfNFe().setTotal(total);
ICMSTot icmsTot = factory.createTNFeInfNFeTotalICMSTot();
total.setICMSTot(icmsTot);
icmsTot.setVBC(this.apoioNfe.toQtde(nfeDados.getVbc(), 2));
icmsTot.setVICMS(this.apoioNfe.toQtde(nfeDados.getVicms(), 2));
icmsTot.setVBCST(this.apoioNfe.toQtde(nfeDados.getVbCst(), 2));
icmsTot.setVST(this.apoioNfe.toQtde(nfeDados.getVst(), 2));
icmsTot.setVProd(this.apoioNfe.toQtde(nfeDados.getVprod(), 2));
icmsTot.setVFrete(this.apoioNfe.toQtde(nfeDados.getVfrete(), 2));
icmsTot.setVSeg(this.apoioNfe.toQtde(nfeDados.getVseg(), 2));
icmsTot.setVDesc(this.apoioNfe.toQtde(nfeDados.getVdesc(), 2));
icmsTot.setVII(this.apoioNfe.toQtde(nfeDados.getVii(), 2));
icmsTot.setVIPI(this.apoioNfe.toQtde(nfeDados.getVipi(), 2));
icmsTot.setVPIS(this.apoioNfe.toQtde(nfeDados.getVpis(), 2));
icmsTot.setVCOFINS(this.apoioNfe.toQtde(nfeDados.getVcofins(), 2));
icmsTot.setVOutro(this.apoioNfe.toQtde(nfeDados.getVoutro(), 2));
icmsTot.setVNF(this.apoioNfe.toQtde(nfeDados.getVnf(), 2));
// if (issTot.getVBC() != null || issTot.getVCOFINS() != null ||
// issTot.getVISS() != null || issTot.getVPIS() != null ||
// issTot.getVPIS() != null)
// total.setISSQNtot(issTot);
}
private void transporte(ObjectFactory factory, TNFe nfe){
NfeTransporteDao nfeTransporteDao = new NfeTransporteDao(session);
NfeTransporte nfeTransporte = nfeTransporteDao.procura(this.nfeDados.getId());
Transp transp = factory.createTNFeInfNFeTransp();
nfe.getInfNFe().setTransp(transp);
Transporta transporta = factory.createTNFeInfNFeTranspTransporta();
RetTransp retTransp = factory.createTNFeInfNFeTranspRetTransp();
TVeiculo veiculo = factory.createTVeiculo();
transp.setModFrete(nfeTransporte.getModFrete().toString());
if (nfeTransporte.getCfop() != null || nfeTransporte.getCmunFg() != null || nfeTransporte.getVicmsRet() != 0) {
retTransp.setVServ(this.apoioNfe.toQtde(nfeTransporte.getVserv(), 2));
retTransp.setVBCRet(this.apoioNfe.toQtde(nfeTransporte.getVbcRet(), 2));
retTransp.setPICMSRet(this.apoioNfe.toQtde(nfeTransporte.getPicmsRet(), 2));
retTransp.setVICMSRet(this.apoioNfe.toQtde(nfeTransporte.getVicmsRet(), 2));
retTransp.setCFOP(nfeTransporte.getCfop().toString());
retTransp.setCMunFG(nfeTransporte.getCmunFg());
transp.setRetTransp(retTransp);
}
PessoaEndereco endereco = null;
if (nfeTransporte.getTransportadora() != null){
if (nfeTransporte.getTransportadora().isPessoa_fisica()){
transporta.setCPF(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeTransporte.getTransportadora().getCnpj()), 11));
}else{
transporta.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeTransporte.getTransportadora().getCnpj()), 14));
}
transporta.setXNome(nfeTransporte.getTransportadora().getNome());
transporta.setIE(nfeTransporte.getTransportadora().getIe());
endereco = getEnderecoPessoa(nfeTransporte.getTransportadora().getId());
transporta.setXEnder(endereco.getEndereco());
transporta.setXMun(endereco.getCidade().getNome());
transporta.setUF(TUf.valueOf(endereco.getCidade().getUf().getAbreviatura()));
if (nfeTransporte.getTransportadora().getNome() != null || nfeTransporte.getTransportadora().getCnpj() != null) {
transp.setTransporta(transporta);
}
}
veiculo.setPlaca(nfeTransporte.getPlaca());
if (endereco != null)
veiculo.setUF(TUf.valueOf(endereco.getCidade().getUf().getAbreviatura()));
veiculo.setRNTC(nfeTransporte.getRntc());
if (nfeTransporte.getPlaca() != null || nfeTransporte.getRntc() != null) {
transp.setVeicTransp(veiculo);
}
}
private void cobranca(ObjectFactory factory, TNFe nfe){
NfeFaturaDao nfeFaturaDao = new NfeFaturaDao(session);
NfeFatura cobranca = nfeFaturaDao.procura(this.nfeDados.getId());
Cobr cobr = factory.createTNFeInfNFeCobr();
nfe.getInfNFe().setCobr(cobr);
Fat fat = factory.createTNFeInfNFeCobrFat();
cobr.setFat(fat);
fat.setNFat(cobranca.getNfat());
fat.setVOrig(this.apoioNfe.toQtde(cobranca.getVorig(), 2));
fat.setVDesc(this.apoioNfe.toQtde(cobranca.getVdesc(), 2));
fat.setVLiq(this.apoioNfe.toQtde(cobranca.getVliq(), 2));
NfeDuplicataDao nfeDuplicataDao = new NfeDuplicataDao(session);
List<NfeDuplicata> nfeDuplicatas = nfeDuplicataDao.getDuplicatas(cobranca.getId());
for (NfeDuplicata nfeDuplicata : nfeDuplicatas) {
Dup dup = factory.createTNFeInfNFeCobrDup();
dup.setNDup(nfeDuplicata.getNdup());
dup.setDVenc(this.apoioNfe.toXMLDate(nfeDuplicata.getDvenc()));
dup.setVDup(this.apoioNfe.toQtde(nfeDuplicata.getVdup(), 2));
cobr.getDup().add(dup);
}
}
private void informacoesAdicionais(ObjectFactory factory, TNFe nfe){
InfAdic adic = factory.createTNFeInfNFeInfAdic();
if (nfeDados.getInfAdFisco() != null){
String xTexto = nfeDados.getInfAdFisco();
adic.setInfAdFisco(xTexto);
}
if (nfeDados.getInfCpl() != null){
String xTexto = nfeDados.getInfCpl();
adic.setInfCpl(xTexto);
}
if (nfeDados.getInfCpl() != null || nfeDados.getInfCpl() != null) {
nfe.getInfNFe().setInfAdic(adic);
}
NfeInfAdicionaisDao nfeInfAdicionaisDao = new NfeInfAdicionaisDao(session);
List<NfeInfAdicionais> informacoes = nfeInfAdicionaisDao.getNfeInformacoes(this.nfeDados.getId());
for (NfeInfAdicionais nfeInfAdicionais : informacoes) {
ObsCont obscont = factory.createTNFeInfNFeInfAdicObsCont();
obscont.setXCampo(nfeInfAdicionais.getXcampo());
String xtexto = nfeInfAdicionais.getXtexto();
obscont.setXTexto(xtexto);
if (adic != null) {
List<ObsCont> list = adic.getObsCont();
if (list != null) {
list.add(obscont);
}
}
}
}
// ------------------------------------------------------------------------------------
private PessoaEndereco getEnderecoPessoa(Long idPessoa){
PessoaEndereco endPrincipal = null;
PessoaEnderecoDao pessoaEnderecoDao = new PessoaEnderecoDao(session);
List<PessoaEndereco> enderecos = pessoaEnderecoDao.buscaEnderecos(idPessoa);
for (PessoaEndereco end : enderecos) {
if (end.getTpEndereco() == 0)
endPrincipal = end;
}
return endPrincipal;
}
}
Detalhe: na hora de assinar, retire o atributo xmlns:ns2
doc.getDocumentElement().removeAttribute("xmlns:ns2");