Nfe - Nota Fiscal Eletronica

Pessoal estou com uma dúvida sobre a tag indTot dos produtos…
No manual diz "0 se não compõe o total do valor da nfe e 1 se compõe o total"
A dúvida é…
se eu adiconar 1 no indTot de um ítem , o valor da nota será o valor do ítem? isto é…que o ítem representa o valor total da nota;;;;

ou se somar todos os ítens que tiverem a tag 1 terá que dar automaticamente o valor da nfe?

Alguem conseguiu consultar o cadastro versao layout 2.0 (CadConsultaCadastro2) através do webservice do RS ? Se sim, como fez, o que ferramenta usou, axis ? Não estou conseguindo…

Ok, finalmente consegui, estava pasando o formato da msg errada. Segue a forma correta caso alguem tenha o mesmo problema…

              "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            + "<ns1:nfeDadosMsg xmlns:ns1=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">"
            + "<ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">"
            + "<infCons>"
            + "<xServ>CONS-CAD</xServ>"
            + "<UF>RS</UF>"
            + "<CNPJ>xxxxxxxxxxxxxx</CNPJ>"
            + "</infCons>"
            + "</ConsCad>"
            + "</ns1:nfeDadosMsg>";

[quote=guilherme_ha]Estranho, fiz pelo wizard e tbm deu certo…
olha so como fiz:

        String[] aUrl = {"homologacao.sefaz.mt.gov.br","/nfews/NfeStatusServico2"};
        String sUf = "51"; // MT ok

       /* conecao segura */
            
            NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://" + aUrl[0] + aUrl[1]);
            
            NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE();
            NfeCabecMsg param = new NfeCabecMsg();
            
            param.setCUF(sUf);
            param.setVersaoDados("2.00");
            nfeCabecMsg1.setNfeCabecMsg(param);
             
            OMElement ome = AXIOMUtil.stringToOM(
            		"&lt;consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\"&gt;" + 
                    "   &lt;tpAmb&gt;2&lt;/tpAmb&gt;" +
                    "   &lt;cUF&gt;" + sUf + "&lt;/cUF&gt;" +
                    "   &lt;xServ&gt;STATUS&lt;/xServ&gt;" +
                    "&lt;/consStatServ&gt;");  
           
            NfeDadosMsg nf2 = new NfeDadosMsg();
            nf2.setExtraElement(ome);
            
            NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1);
            System.out.println("Resposta : \n" + resp.getExtraElement().toString()); 

Tente isso… abraco[/quote]
Olá, como estou completamente perdido nessa etapa de verificar o status do serviço na homologação, usei seu código como exemplo, veja como ficou o meu e veja a exceção que recebo, se puder me apontar alguma coisa que estou fazendo errado, por favor eu ficaria muito agradecido.

[code] NFe.setPropriedadesCertificado();
String cUF = “35”; // SP
String tipoAmbiente = “1”; //1=homologacao, 2=producao
String versao = “2.00”;
String nfeDadosMsg = “”
+ “<nfeDadosMsg>”
+ " <consStatServ versao=""+versao+"" xmlns=“http://www.portalfiscal.inf.br/nfe">"
+ " <tpAmb>”+tipoAmbiente+"</tpAmb>"
+ " <cUF>"+cUF+"</cUF>"
+ " <xServ>STATUS</xServ>"
+ " </consStatServ>"
+ “</nfeDadosMsg>”;

    NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx");

    NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE();
    NfeCabecMsg param = new NfeCabecMsg();

    param.setCUF(cUF);
    param.setVersaoDados(versao);
    nfeCabecMsg1.setNfeCabecMsg(param);

    OMElement ome = AXIOMUtil.stringToOM(nfeDadosMsg);

    NfeDadosMsg nf2 = new NfeDadosMsg();
    nf2.setExtraElement(ome);

    NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1);
    System.out.println("Retorno : \n" + resp.getExtraElement().toString());

[/code]

Exceção que dá naquela linha para imprimir:

org.apache.axis2.AxisFault: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.webservices.status2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:174) at emissor.lib.NFe.statusServico(NFe.java:84)

[quote=zoren][quote=fafb]galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??

NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
[/quote]

Eu utilizo o Axis2 para gerar as classes, funciona normal, mas o nome da segunda e da terceira estão estranhos[/quote]
Eu também uso o Axis2, já tou ficando maluco com tantos nomes de classes diferentes, cada um que vejo está diferente do outro, e isso só o de status do serviço, quais são suas classes?
Teria um exemplo de código para verificar o status do serviço?

Obrigado.

Olá

Não sei se ajuda, mas foi lançado recentemente um livro sobre NF-e
http://www.lcm.com.br/index.php?Escolha=20&Livro=L00894

Esse trem dá trabalho mesmo!:smiley:

Fala galera, há muito tempo eu desenvolvi o projeto da NFe aqui na empresa onde trabalho, recebi muita ajuda aqui do GUJ e ajudei muita gente também.

Agora infelizmente eu tive que voltar pra esse projeto para adapta-lo a versão 2 da NFe. E agora eu estou precisando da ajuda aqui do pessoal.

Já fiz as comunicações com WEB-Service e estão tudo ok (usando o AXIS 2), meu problema é o seguinte:

  • Nosso sistema é WEB e trabalha com um grupo de empresas logo precisamos configuar o certificado do cliente de forma dinamica não da pra usar o System.properies.
    na versão 1 do XML eu utilizava uma classe chamada: org.apache.axis.client.SSLClientAxisEngineConfig

mais ou menos assim:

axisConfig.setKeyStoreType("PKCS12");
		axisConfig.setKeyStore("****");
		axisConfig.setKeyStorePassword("***");

e agora no Axis 2 alguem ja utilizou isso, eu andei dando uma fuçada na classe ConfigurationContext que se passa no construtor dos Stubs mas não consegui.

Alguem pode me ajudar?

A minha ultima cartada que eu não queria dar pq vai ficar muito gambiarra seria trocar o properties do sistema através do método System.setProperties(props); para um que obtivesse os valores da Session do servidor.

Obrigado…

[quote=javer][quote=zoren][quote=fafb]galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??

NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
[/quote]

Eu utilizo o Axis2 para gerar as classes, funciona normal, mas o nome da segunda e da terceira estão estranhos[/quote]
Eu também uso o Axis2, já tou ficando maluco com tantos nomes de classes diferentes, cada um que vejo está diferente do outro, e isso só o de status do serviço, quais são suas classes?
Teria um exemplo de código para verificar o status do serviço?

Obrigado.[/quote]

segue um exemplo…

    ConfiguraKeystore.setPropertySefaz("C:\\CertificadosHomologacao\\exportado\\");//configura os certificados
    br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub stub = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub();
br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg7= null;
			// TODO : Fill in the nfeDadosMsg7 here
			
			String nfeDadosMsg =  
				"<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">" +
				"<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
	    		"<tpAmb>2</tpAmb>" +
	    		"<cUF>42</cUF>" +
	    		"<xServ>STATUS</xServ>" +
	    		"</consStatServ>" +
	    		"</nfeDadosMsg>";
			
			 XMLInputFactory inputFactory = XMLInputFactory.newInstance();
			
			Factory factory = new Factory();
			
			nfeDadosMsg7 = factory.parse(inputFactory.createXMLStreamReader(new StringReader(nfeDadosMsg)));
			
			
//			br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsg8 = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE();
			System.out.println("aqui 1");
			NfeCabecMsgE nfeCabecMsg8 = new NfeCabecMsgE();
			System.out.println("aqui 2");
			// TODO : Fill in the nfeCabecMsg8 here
			NfeCabecMsg cabec = new NfeCabecMsg();
			cabec.setCUF("42");
			cabec.setVersaoDados("2.00");
			nfeCabecMsg8.setNfeCabecMsg(cabec);
			
			NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg7, nfeCabecMsg8);
			System.out.println(result.localExtraElement);

só para constar, eu gerei as classes usando o Axis2 com o wizard do eclipse…
segue os imports

[code]
import java.io.StringReader;

import javax.xml.stream.XMLInputFactory;

import br.ConfiguraKeystore;
import br.com.mili.nfe.wssvrs2.iface.IWSStatusServico2NFe;
import br.com.mili.nfe.wssvrs2.ws.WSStatusServicoNFe2;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsg;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeStatusServicoNF2Result;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg.Factory;[/code]

[quote=roassunca]Resolvido: o problema estava na consulta do recibo da NFe, e não no envio.
Estava gerando o XML da consulta com ConsReciNFe (c em maiúsculo - bobeira).
E não estava conseguindo consultar pela chave de acesso no site da Sefaz-SP pois recebi como resposta: “Rejeição: Total do Produto / Serviço difere do somatório dos itens”.[/quote]
Olá, como foi que resolveu esse problema dos somatórios?

Estou fazendo um teste simples com apenas uma nota fiscal (homologação), com apenas um produto/serviço e está me retornando isso, não sei mais o que fazer, já conferi todos as tags e valores, onde pode ser essa somatória?

[code]Codigo retorno recibo…: 104
Versao leiaute SEFAZ…: 2.00
Tipo de ambiente recibo.: 2
Versao aplicativo SEFAZ.: SP_NFE_PL_006e
Numero recibo consultado: 351000021585236
Status da resposta…: Lote processado
UF que atendeu a chamada: 35
Codigo da Mensagem…: null
Mensagem…: null

ID…: null
Tipo de ambiente…: 2
Versao aplicativo…: SP_NFE_PL_006e
Chave de acesso…: 35100902767116000186550010000266861020711469
Data/hora recebimento.: 2010-09-23T07:11:48
Numero do protocolo…: null
Codigo do status…: 564
Resposta…: Rejeição: Total do Produto / Serviço difere do somatório dos itens
[/code]

desculpe incomodar vocês, procurei muito e não achei.

alguém já viu ou sabe onde posso encontrar uma solução para consultar um NFe pelo site

https://www.nfe.fazenda.gov.br/PORTAL/FormularioDePesquisa.aspx?tipoconsulta=completa

digitando apenas a chave de acesso ?

abraço até mais

[quote=ruviano]Ok, finalmente consegui, estava pasando o formato da msg errada. Segue a forma correta caso alguem tenha o mesmo problema…

              "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            + "<ns1:nfeDadosMsg xmlns:ns1=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">"
            + "<ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">"
            + "<infCons>"
            + "<xServ>CONS-CAD</xServ>"
            + "<UF>RS</UF>"
            + "<CNPJ>xxxxxxxxxxxxxx</CNPJ>"
            + "</infCons>"
            + "</ConsCad>"
            + "</ns1:nfeDadosMsg>";[/quote]

Será que alguém teria, por favor, [color=darkblue]um exemplo de como consultar o cadastro do emitente[/color]? (as classes do webservice).

Peguei o WSDL e gerei as classes mas parece que não estão corretas (fora do padrão dos demais webservices), estou querendo consultar o cadastro na UF de SP, a classe CadConsultaCadastro2Stub que gerou para mim (com Axis2) não tem a …Result, tem uma classe chamada ConsultaCadastro2Result_type0, não achei quase nada na net sobre isso.

Minha última etapa na homologação, já tava comemorando e agora não consigo passar disso.

Estou com outro problema seríssimo, tenho 2 certificados A3 em tokens, com um acesso todos os serviços normalmente, já com o segundo está me retornando uma maldita de uma Exception que não consigo resolver, no Axis2:

org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.ws.h.status.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:173) at emissor.lib.NFe.getStatusServico(NFe.java:457) at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:154)

Alguma alma bondosa poderia me ajudar a resolver isso?

Será algum problema no certificado?

[quote=javer]Estou com outro problema seríssimo, tenho 2 certificados A3 em tokens, com um acesso todos os serviços normalmente, já com o segundo está me retornando uma maldita de uma Exception que não consigo resolver, no Axis2:

org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.ws.h.status.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:173) at emissor.lib.NFe.getStatusServico(NFe.java:457) at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:154)

Alguma alma bondosa poderia me ajudar a resolver isso?

Será algum problema no certificado?[/quote]

O segundo token deve estar sem a cadeia certificadora ou até tem, mas errada.
Já tive casos em que a cadeia que constava no token não correspondia ao certificado do cliente.

Alencar

Caramba, e o que eu devo fazer?

Verifique quem (AC) emitiu o certificado do cliente, tipo CAIXAPJ, ACNOTORIAL, etc…
Importe o certificado do emitente no token, assim como todos os certificados da cadeia,
até chegar na Raiz Brasileira v1.

Pronto.

Alencar

Obrigado por tentar ajudar.

Já liguei no suporte da Certisign e fizeram um teste no site da prefeitura de SP e o certificado foi aceito.

O que tá me matando é que tenho dois, o outro (que utiliza a mesma forma de acessar o serviço) funciona e o outro não.

A pessoa da Certisign disse que se a raíz estivesse errada no site da prefeitura de SP não ia funcionar, me disse também que o token só pode ser gravado uma vez, ou seja, não tem como reinicializar e importar raíz.

Eu utilizo o programa eToken PKI Client para ver as propriedades dos certificados, segue imagens que retirei do certificado que está me dando problemas.

Infelizmente a imagem do certificado tockprint nao veio.
Por favor, vamos resolver isso por email para não tumultuar a lista, visto ser um caso particular seu.

Me envie uma msg em pvt.

Alencar

Ok, amigo muito obrigado.

Me desculpe mas não vejo onde clicar para te mandar uma mensagem em pvt. Não tem link no seu login.

Verifique quem (AC) emitiu o certificado do cliente, tipo CAIXAPJ, ACNOTORIAL, etc…
Importe o certificado do emitente no token, assim como todos os certificados da cadeia,
até chegar na Raiz Brasileira v1.

Pronto.

Alencar[/quote]

Respondendo para a lista para registro e consultas futuras:

Quem emitiu o certificado da Tockprint foi a AC Certisign Multipla G3.
Mas a cadeia certificadora que consta no token é:

AC Certisign RFB G3
AC Secretaria da Rece…
Autoridade Certi…

Entendeu? O certificado AC Certisign Multipla G3 não consta na cadeia.
Importe o certificado no token, clicando com o botao direito em cima de Certificados AC.

Alencar