FONTE NFE VB.NET
Pessoal estou ralando bastante aqui para terminar este projeto, acho que todos já terminaram rsrsrs pois poucos tem passado por aqui... bom aos poucos estou conseguindo me virar, terminei hoje meu DANFE com o FastReport.NET, se alguém tiver interesse posso postar o arquivo aqui no fórum.
Com relação a minha pergunta acima, se alguém puder me ajudar, eu não consegui resolver o problema más contornei editando o arquivo depois de validado e removendo a tag no braço, más ficou deselegante se alguém puder ajudar fico agradecido.
Abraço a todos.
Com relação a minha pergunta acima, se alguém puder me ajudar, eu não consegui resolver o problema más contornei editando o arquivo depois de validado e removendo a tag no braço, más ficou deselegante se alguém puder ajudar fico agradecido.
Abraço a todos.
Pessoal uma dúvida, com o ceriticado digital eCPF é possivel consumir o webservice da sefaz, para somente validar o status da NFe?
Vanto de uma olhada nesta função no seu projeto. Se estiver diferente disso troque por esta. Outra coisa porque não quis usar a impressão de DANFE pelo printer conforme o projeto?
[ô]FUNÇÃO QUE POR RECURSIVIDADE PREENCHE ESCREVE OS DADOS DO XML
Private Sub objetoParaXML(ByVal xmlWriter As XmlWriter, ByVal objeto As Object, ByVal ignorarDeclaracaoElemento As Boolean)
If objeto Is Nothing Then
Exit Sub
End If
Dim tipoObjeto As Type
tipoObjeto = objeto.[GetType]()
Dim propriedades As PropertyInfo()
propriedades = tipoObjeto.GetProperties()
[ô]VERIFICA SE é UM CAMPO DO TIPO LIST
[ô]SE FOR ADICIONA NOVO ELEMENTE
If Not ignorarDeclaracaoElemento And tipoObjeto.Name <> [Ô]List'1[Ô] Then
xmlWriter.WriteStartElement(tipoObjeto.Name)
End If
[ô]SE FORM UMA LISTA CHAMA FUNÇÃO NOVAMENTE PARA PREENCHER ELEMENTOS DA LISTA
If tipoObjeto.Name = [Ô]List'1[Ô] Then
If objeto.ToString.Contains([Ô]dup[Ô]) Then
For Each Ddup As dup In objeto
objetoParaXML(xmlWriter, Ddup, False)
Continue For
Next
ElseIf objeto.ToString.Contains([Ô]med[Ô]) Then
For Each Dmed As med In objeto
objetoParaXML(xmlWriter, Dmed, False)
Continue For
Next
Else
For Each DNFref As NFref In objeto
objetoParaXML(xmlWriter, DNFref, False)
Continue For
Next
End If
Exit Sub
End If
[ô]VERIFICA CAMPOS E ADICIONA TAGS E ELEMENTOS XML
For Each propriedade As PropertyInfo In propriedades
If funcoesNfe.novaTag(propriedade) AndAlso Not (propriedade.GetValue(objeto, Nothing) Is Nothing) Then
[ô]VERIFICA é UMA LISTA DE NOTAS REFERENCIADAS
[ô]SE FOR VERIFICA Sé é NOTA PAPEL OU NOTA ELETRONICA
If propriedade.Name = [Ô]RefNF[Ô] AndAlso objeto.refNFE <> [Ô][Ô] Then
Else
objetoParaXML(xmlWriter, propriedade.GetValue(objeto, Nothing), False)
Continue For
End If
End If
Dim obj As Object() = propriedade.GetCustomAttributes(False)
funcoesNfe.gravarElemento(xmlWriter, propriedade.Name, propriedade.GetValue(objeto, Nothing), obj)
Next
If Not ignorarDeclaracaoElemento Then
xmlWriter.WriteEndElement()
End If
End Sub
Olá Daniel, conferi a função que vc mensionou e está igualzinho ao meu projeto, não sei se vc leu o meu tópico anterior, más este problema só ocorre quando eu utilizo referência à Cupons Fiscais, eu postei tb a classe que criei e as alterações que fiz no projeto em tópicos anteriores se quiser dar uma olhada.
Com relação ao Danfe, preferi fazer no FastReport.NET pois todos os meus relatórios são nele e os usuários já estão acostumados, ele já tem todos os recursos que preciso (salvar em PDF, enviar e-mail etc.), não sei se vc conhece más depois que comecei a usar, adeus crystal report, ele é infinitamente melhor, pra vc ter uma idéia fiz o DANFE em retrato nele com menos de 1 dia, é claro lendo do meu banco de dados, do XML vou fazer depois más é tranquilo.
Com relação aos problemas que mencionei, se tiver alguma novidade me avise...
Abraço.
Com relação ao Danfe, preferi fazer no FastReport.NET pois todos os meus relatórios são nele e os usuários já estão acostumados, ele já tem todos os recursos que preciso (salvar em PDF, enviar e-mail etc.), não sei se vc conhece más depois que comecei a usar, adeus crystal report, ele é infinitamente melhor, pra vc ter uma idéia fiz o DANFE em retrato nele com menos de 1 dia, é claro lendo do meu banco de dados, do XML vou fazer depois más é tranquilo.
Com relação aos problemas que mencionei, se tiver alguma novidade me avise...
Abraço.
Olá,
Estou enviando meu xml para o webservice e quando faço a consulta de retorno ele me vem o erro [Ô]215 - Rejeição: Falha no schema XML ;Verifica Schema XML da Ãrea de Dados[Ô]. Sendo que o Xml esta valido.
Estou enviando meu xml para o webservice e quando faço a consulta de retorno ele me vem o erro [Ô]215 - Rejeição: Falha no schema XML ;Verifica Schema XML da Ãrea de Dados[Ô]. Sendo que o Xml esta valido.
Olá a todos, gostaria de parabenizar o pessoal que está contribuindo com o projeto, acabei de baixá-lo, ainda é o da página 69 ? Pois é, pra mim funcionou de boa, estou aqui testando, gostaria de mais informações sobre como transformá-lo em DLL pra uso tanto no vb 6 quanto em visual foxpro 9. Obrigado!
Galera, tudo bom?
Sou novo aqui no Fórum, e já trago algumas dúvidas ^^
Tenho algumas NFe do PR no formato XML, e preciso importar para o programa Prosoft, já tenho até o Layout do programa por aqui, mas ainda não entendi a parte de XML. só preciso descobrir como ler essas notas no vb.net, o restante já tenho como fazer!
abraço a todos vocês!
Sou novo aqui no Fórum, e já trago algumas dúvidas ^^
Tenho algumas NFe do PR no formato XML, e preciso importar para o programa Prosoft, já tenho até o Layout do programa por aqui, mas ainda não entendi a parte de XML. só preciso descobrir como ler essas notas no vb.net, o restante já tenho como fazer!
abraço a todos vocês!
Bom dia
Estou implementando a rotina DPEC no meu sistema
esta dando erro de SCHEMA XML,vou pesquisando pra ver se consigo arrumar e post aqui...meu projeto está pronto, qualquer duvida e ajuda é só pedirem
e para quem quer me ajudar a realizar a DPEC:
ta dando erro de SCHEMA XML:
utilizo VB6 no meu ERP e VB.NET para as funções de envio
VB 6:
VB.NET
Estou implementando a rotina DPEC no meu sistema
esta dando erro de SCHEMA XML,vou pesquisando pra ver se consigo arrumar e post aqui...meu projeto está pronto, qualquer duvida e ajuda é só pedirem
e para quem quer me ajudar a realizar a DPEC:
ta dando erro de SCHEMA XML:
utilizo VB6 no meu ERP e VB.NET para as funções de envio
VB 6:
Public Function GeraDPEC(CGCOrigem As String, NumNota As String, Serie As String) As Boolean
Dim Fso As New FileSystemObject
Dim ArqIni As TextStream
Dim URL As String
Dim BuscaUF As New ADODB.Recordset
Dim rsGravaDPEC As New ADODB.Recordset
On Error GoTo GeraDPEC_Error
Xml = [Ô][Ô]
If Trim(CGCOrigem) = [Ô][Ô] Then
GeraDPEC = False
Exit Function
End If
wArquivoWS = App.Path & [Ô]\NFE\webservices.xml[Ô]
If Not (Fso.FileExists(wArquivoWS)) Then
MsgBox [Ô]Arquivo webservices.xml dos Web Services não encontrado. Verifique.[Ô], vbCritical, [Ô]Atenção[Ô]
GeraDPEC = False
Exit Function
End If
IdentAmbiente = Left(BuscaGenerico(w_NumLoja, [Ô]IdentAmb[Ô]), 1)
If IdentAmbiente = [Ô][Ô] Then
MsgBox [Ô]Configuração no Toolkit de identificação do ambiente da nota fiscal eletrônica não difinido. Verifique e tente novamente.[Ô], vbInformation, [Ô]Atenção[Ô]
GeraDPEC = False
Exit Function
End If
Set rsBuscaUF = w_Conn.Execute([Ô]select Estado from Pessoas where cgccpf = [ô][Ô] & CNPJDestinatario & [Ô][ô][Ô])
LoadMensagem [Ô]Gerando DPEC. Aguarde...[Ô]
Xml = [Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô] ?>[Ô]
Xml = Xml & [Ô]<envDPEC xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]1.01[Ô][Ô]>[Ô]
Xml = Xml & [Ô]<infDPEC Id=[Ô][Ô]DPEC[Ô] & CGCOrigem & [Ô][Ô][Ô]>[Ô]
Xml = Xml & [Ô]<ideDec>[Ô]
Xml = Xml & [Ô]<cUF>[Ô] & wCodUFEmitente & [Ô]</cUF>[Ô]
Xml = Xml & [Ô]<tpAmb>[Ô] & IdentAmbiente & [Ô]</tpAmb>[Ô]
Xml = Xml & [Ô]<verProc>[Ô] & App.major & App.minor & [Ô]</verProc>[Ô]
Xml = Xml & [Ô]<CNPJ>[Ô] & CGCOrigem & [Ô]</CNPJ>[Ô]
Xml = Xml & [Ô]<IE>[Ô] & IE & [Ô]</IE>[Ô]
Xml = Xml & [Ô]</ideDec>[Ô]
Xml = Xml & [Ô]<resNFe>[Ô]
Xml = Xml & [Ô]<chNFe>[Ô] & Replace(ChaveAcesso, [Ô]NFe[Ô], [Ô][Ô]) & [Ô]</chNFe>[Ô]
If Len(CNPJDestinatario) = [Ô]14[Ô] Then
Xml = Xml & [Ô]<CNPJ>[Ô] & CNPJDestinatario & [Ô]</CNPJ>[Ô]
Else
Xml = Xml & [Ô]<CPF>[Ô] & CNPJDestinatario & [Ô]</CPF>[Ô]
End If
If Not rsBuscaUF.EOF Then
Xml = Xml & [Ô]<UF>[Ô] & rsBuscaUF([Ô]Estado[Ô]) & [Ô]</UF>[Ô]
Else
MsgBox [Ô]Estado do destinátario não definido.[Ô], vbInformation
GeraDPEC = False
Exit Function
End If
Xml = Xml & [Ô]<vNF>[Ô] & Format(FrmNotaFiscal.TxtTotNota, [Ô]0.00[Ô]) & [Ô]</vNF>[Ô]
Xml = Xml & [Ô]<vICMS>[Ô] & Format(VlrICMSTot, [Ô]0.00[Ô]) & [Ô]</vICMS>[Ô]
Xml = Xml & [Ô]<vST>[Ô] & Format(VlrICMSSTTot, [Ô]0.00[Ô]) & [Ô]</vST>[Ô]
Xml = Xml & [Ô]</resNFe>[Ô]
Xml = Xml & [Ô]</infDPEC>[Ô]
Xml = Xml & [Ô]</envDPEC>[Ô]
wArquivoXML = App.Path & [Ô]\DPEC[Ô] & CGCOrigem & [Ô].xml[Ô]
GravaArquivoXML
[ô]Tempo para gravação do arquivo
Sleep 1000
FrmMensagem.Refresh
If Not Signature([Ô]infDPEC[Ô]) Then
GeraDPEC = False
Exit Function
End If
[ô]Tempo para gravação do arquivo
Sleep 1000
FrmMensagem.Refresh
URL = URL_WS([Ô]DPEC[Ô])
If Not ClsNFe.GeraDPEC(wArquivoXML, URL) Then
GeraDPEC = False
Exit Function
End If
With rsGravaDPEC
.Open [Ô]Select * from NotaFiscalEletronicaDPEC WHERE NumLoja = [ô][Ô] & w_NumLoja & [Ô][ô] and CGCOrigem = [ô][Ô] & CGCOrigem & [Ô][ô] and NumNota = [ô][Ô] & NumNota & [Ô][ô] and Serie = [ô][Ô] & Serie & [Ô][ô][Ô], w_Conn, adOpenDynamic, adLockOptimistic, adCmdText
If .EOF Then
.AddNew
End If
.Fields([Ô]Numloja[Ô]) = w_NumLoja
.Fields([Ô]CGCOrigem[Ô]) = CGCOrigem
.Fields([Ô]NumNota[Ô]) = NumNota
.Fields([Ô]Serie[Ô]) = Serie
.Fields([Ô]IdDPEC[Ô]) = ClsNFe.id
.Fields([Ô]DataEmiss[Ô]) = Now
.Fields([Ô]ChaveAcesso[Ô]) = ChaveAcesso
.Fields([Ô]Versao[Ô]) = [Ô]1.01[Ô]
.Fields([Ô]Ambiente[Ô]) = ClsNFe.tpAmb
.Fields([Ô]verAplic[Ô]) = ClsNFe.verAplic
.Fields([Ô]cStat[Ô]) = ClsNFe.cStat
.Fields([Ô]xMotivo[Ô]) = ClsNFe.xMotivo
.Fields([Ô]nRegDPEC[Ô]) = ClsNFe.nProt
.Fields([Ô]dhRegDPEC[Ô]) = Replace(ClsNFe.dhRecbto, [Ô]T[Ô], [Ô][Ô])
.Fields([Ô]Justificativa[Ô]) = Justificativa
Update_HDR rsGravaDPEC, [Ô]GeraDPEC[Ô]
.Update
.Close
End With
GeraDPEC = True
Exit Function
VB.NET
Public Function GeraDPEC(ByVal Arquivo As String, ByVal URL_WS As String) As Boolean
Try
If IsNothing(Certificado) Then
If Not SelecionaCertificado() Then
Return False
Exit Function
End If
End If
document.PreserveWhitespace = False
document.Load(Arquivo)
Dim cabecalho As New wsNFeRecepcaoDPEC.sceCabecMsg
cabecalho.versaoDados = [Ô]1.01[Ô]
Dim DPEC As New wsNFeRecepcaoDPEC.SCERecepcaoRFB
DPEC.Url = URL_WS
DPEC.sceCabecMsgValue = cabecalho
DPEC.Timeout = 100000
DPEC.ClientCertificates.Add(Certificado)
DPEC.SoapVersion = Web.Services.Protocols.SoapProtocolVersion.Soap12
retorno = DPEC.sceRecepcaoDPEC(document)
For Each outerNode As XmlNode In retorno
If (outerNode.Name = [Ô]infDPEC[Ô]) Then wId = outerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText
For Each InnerNode As XmlNode In outerNode.ChildNodes
If (outerNode.Name = [Ô]tpAmb[Ô] Or InnerNode.Name = [Ô]tpAmb[Ô]) Then wTpAmb = InnerNode.InnerText
If (outerNode.Name = [Ô]verAplic[Ô] Or InnerNode.Name = [Ô]verAplic[Ô]) Then wVerAplic = InnerNode.InnerText
If (outerNode.Name = [Ô]nRec[Ô] Or InnerNode.Name = [Ô]nRec[Ô]) Then wNRec = InnerNode.InnerText
If (outerNode.Name = [Ô]cStat[Ô] Or InnerNode.Name = [Ô]cStat[Ô]) Then wCStat = InnerNode.InnerText
If (outerNode.Name = [Ô]xMotivo[Ô] Or InnerNode.Name = [Ô]xMotivo[Ô]) Then wXMotivo = InnerNode.InnerText
If (outerNode.Name = [Ô]nRegDPEC[Ô] Or InnerNode.Name = [Ô]nRegDPEC[Ô]) Then wNProt = InnerNode.InnerText
If (outerNode.Name = [Ô]dhRegDPEC[Ô] Or InnerNode.Name = [Ô]dhRegDPEC[Ô]) Then wDhRecbto = InnerNode.InnerText
Next
Next
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
um erro bem basico na hora de gerar a XML
os pontos nos valores da nota, icms e substributária devem ser substituidos por PONTO, invés de VIRGULA ( bem básico)
se alguem quiser gerar DPEC, pode pegar o que eu fiz, está correto, só realizar essa correção e estará emitindo corretamente....
os pontos nos valores da nota, icms e substributária devem ser substituidos por PONTO, invés de VIRGULA ( bem básico)
se alguem quiser gerar DPEC, pode pegar o que eu fiz, está correto, só realizar essa correção e estará emitindo corretamente....
Faça seu login para responder