FONTE NFE VB.NET
Citação::
Foxman, fiz uma rotina que verifica o retorno depois do envio.
Se retornar como [Ô]Em Processamento[Ô], eu mando consultar novamente. Fica num Loop até que me retorne como autorizada ou rejeitada.
Barros eu vou ter q implementar uma função parecida, no momento eu aumentei o timeout do servidor para 15 segundos(até por recomendação da receita) .
Agora eu devo estar fazendo algum processamento errado(fora de sequencia) pois estava tendo muita rejeição de duplicidade.
Alguém teria a sequencia exata de todo o processo ????
GERA XML
ASSINA XML
VALIDA XML
ENVIA XML
RECEBE O RETORNO DO ENVIO
RECEBE O RETORNO DO PROCESSAMENTO
MONTA O NOVO XML COM O PROTNFE
IMPRIME DANFE
ENVIA XML AO CLIENTE.
To esquecendo de algo ????
OU a sequencia está errada ????
Seguindo orientecao do Foxman, encerrei o topico que abri no forum, e tou refazendo minha pergunta aki.
Antes de mais nada, quero informar que os valores eu estou usando sao ficticios, que poderiam ser outros. Portanto nao eh necessario nenhum comentario, apenas gostaria de uma solucao, se possivel.
Valor total dos produtos= 140,00
Valor dos descontos = 70,00
Valor total da nota= 70,00
Primeiro item: Vr Unitario=30,00 - Qtde =3,00 - Vr Total = 90,00
Desconto: 30,00*50% =15,00
Segundo item: Vr Unitario=50,00 - Qtde =1,00 - Vr Total = 50,00
Desconto: 50,00*50% =25,00
A soma dos descontos sera: 40,00 - mais o desconto eh pra ser 70,00
Se eu der este desconto no valor total
ficara assim:
Primeiro item: Vr Unitario=30,00 - Qtde =3,00 - Vr Total = 90,00
Desconto: 90,00*50% =45,00
Segundo item: Vr Unitario=50,00 - Qtde =1,00 - Vr Total = 50,00
Desconto: 50,00*50% =25,00
A soma dos descontos sera: 70,00 - mais soh que o desconto do primeiro item fica maior que o valor unitario.
E a base do ICMS como seria?
Deu pra entender?
Isto eh porque a partir da versao 2.0 do xml o desconto serah rateado nos itens, como a maioria dos clientes aplica o desconto no total da nota, fica esta confusao na minha cabeca.
Agradeco pela ajuda...
Com relação aos valores fictÃcios td bem, agora com relação ao calculo...vamos ver se esclarecemos uma coisa.
VALOR TOTAL DOS PRODUTOS = 140,00
VALOR TOTAL DOS DESCONTOS = 70,00
Até ae td bem.
Agora vejamos o seguinte :
PRIMEIRO ITEM :
VLR UNITARIO = 30,00 QTDE = 3 VLR TOTAL = 90,00
Das duas uma :
Ou você dá o desconto no valor unitário do item e multiplica (NESTE CASO POR 3) pela quantidade de intens.
Ou você multiplica o valor unitário pela quantidade e da o desconto sobre o total do item.
E sendo assim o correto seria :
30,00 X 3Unidades = (90,00 - 50%) = 45,00
OU
30,00 - 50% = 15,00 X 3 = 45,00
Sendo diferente do valor calculado (15,00)
Para o segundo ITEM A MESMA COISA.
50,00 x 1unidade = (50,00 - 50%) = 25,00
OU
50,00 - 50 % = (25,00 * 1 ) = 25,00
Então temos :
45,00 + 25,00 = 70,00
o Valor do seu desconto.
A questão da base de calculo temos os seguintes aspéctos :
Se o desconto for dado sob condição (futura e incerta, ex.: Se pagar até o dia .... receberá um desconto de 5%) não integra a base de calculo. (Ver art. 37, § 1º, inciso I, itens 1 a 3 do Decreto nº 45.490/00 - RICMS/SP)
Mas isso é bom ser discutido aqui pois existe muitas variantes.
VALOR TOTAL DOS PRODUTOS = 140,00
VALOR TOTAL DOS DESCONTOS = 70,00
Até ae td bem.
Agora vejamos o seguinte :
PRIMEIRO ITEM :
VLR UNITARIO = 30,00 QTDE = 3 VLR TOTAL = 90,00
Das duas uma :
Ou você dá o desconto no valor unitário do item e multiplica (NESTE CASO POR 3) pela quantidade de intens.
Ou você multiplica o valor unitário pela quantidade e da o desconto sobre o total do item.
E sendo assim o correto seria :
30,00 X 3Unidades = (90,00 - 50%) = 45,00
OU
30,00 - 50% = 15,00 X 3 = 45,00
Sendo diferente do valor calculado (15,00)
Para o segundo ITEM A MESMA COISA.
50,00 x 1unidade = (50,00 - 50%) = 25,00
OU
50,00 - 50 % = (25,00 * 1 ) = 25,00
Então temos :
45,00 + 25,00 = 70,00
o Valor do seu desconto.
A questão da base de calculo temos os seguintes aspéctos :
Se o desconto for dado sob condição (futura e incerta, ex.: Se pagar até o dia .... receberá um desconto de 5%) não integra a base de calculo. (Ver art. 37, § 1º, inciso I, itens 1 a 3 do Decreto nº 45.490/00 - RICMS/SP)
Mas isso é bom ser discutido aqui pois existe muitas variantes.
Tudo bem, foi um vacilo meu neste exemplo, eh que a nota que eu tenho aki tem mais de 10 itens, vou rever os calculos com ela.
Agora quanto ao desconto do meu exemplo, vc diz que no primeiro item o valor do desconto eh de 45,00.
Entao na tag <vDesc> do produto eu coloco este valor? lembrando que o valor unitario eh 30,00.
O total do desconto na NFe sera a soma de <vDesc> de todos os itens, eh isso mesmo?
A questão desconto varia de empresa para empresa....
No meu caso os descontos não são dados na nota.
Mas pela lógica o valor da tab <vDesc> somado deverá ser igual ao valor total de desconto da nota.
No meu caso os descontos não são dados na nota.
Mas pela lógica o valor da tab <vDesc> somado deverá ser igual ao valor total de desconto da nota.
Ola, ainda estou usando o exemplo da pagina 25,
consegui gerar o xml 2.0 e assinar, passei o xml pelo sefaz do RS e deu tudo certo, quando vou enviar, ele passa pelo certificado e me retorna que [Ô]{http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2}nfeDadosMsg was not recognized[Ô] e fala que não existe serviço wsdl. Logo em seguida da (Falha no cabeçalho erro no Schema) Alguem saberia me ajudar, por favor ?
consegui gerar o xml 2.0 e assinar, passei o xml pelo sefaz do RS e deu tudo certo, quando vou enviar, ele passa pelo certificado e me retorna que [Ô]{http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2}nfeDadosMsg was not recognized[Ô] e fala que não existe serviço wsdl. Logo em seguida da (Falha no cabeçalho erro no Schema) Alguem saberia me ajudar, por favor ?
Ja resolvi o problema da falha no cabeçalho, mais ainda não consigo enviar,
ALGUEM ???
ALGUEM ???
posta sua função de envio pra min ver!
Opa, valeu Duhhh...
acabei de conseguir enviar... estou usando a versão da pagina 25...
O problema agora é na consulta que ocorre logo após o envio
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)
E me retorna [Ô]Fault occurred while processing[Ô]
acontece ai
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As NfeRetRecepcao2
Dim cab As New nfeCabecMsg
[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = 31
cab.versaoDados = [Ô]2.00[Ô]
[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New NfeRetRecepcao2()
[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab
[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000
[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)
[ô]DEFINE PROTOCOLO USADO NA CONEXÃO
wsMsg.SoapVersion = SoapProtocolVersion.Soap12
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeRetRecepcao2(dados)
acabei de conseguir enviar... estou usando a versão da pagina 25...
O problema agora é na consulta que ocorre logo após o envio
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)
E me retorna [Ô]Fault occurred while processing[Ô]
acontece ai
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As NfeRetRecepcao2
Dim cab As New nfeCabecMsg
[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = 31
cab.versaoDados = [Ô]2.00[Ô]
[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New NfeRetRecepcao2()
[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab
[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000
[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)
[ô]DEFINE PROTOCOLO USADO NA CONEXÃO
wsMsg.SoapVersion = SoapProtocolVersion.Soap12
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?><consReciNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.00[Ô][Ô]><tpAmb>1</tpAmb><nRec>[Ô] & NAutorizacao & [Ô]</nRec></consReciNFe>[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeRetRecepcao2(dados)
Faça seu login para responder