FONTE NFE VB.NET
Citação::
Olá amigos
Programo em VB6 (eu sei, ninguém usa mais) e estou passado meus sistemas para o vb.net.
Eu quero agradecer a ajuda de todos aqui, pois sempre que me surge um problema, acabo encontrando uma luz por aqui.
E o agradecimento é sincero, porque como trabalho sozinha, muitas vezes me vejo perdida.
Muito obrigada.
Programar em VB6 é privilégio e honra para poucos. Há muitos sistemas desenvolvidos em vb6 e sustentam muitos desenvolvedores. Migrar sistemas de uma linguagem para outra é uma tarefa muito, muito dispendiosa. Então migra-se na medida do possÃvel e/ou da necessidade. Estaremos todos sempre prontos para nos ajudar mutuamente.
Obrigado!
Citação::
Era bom vc primeiro estudar sobre como consumir webservices, depois vc pode tentar baixar o wsdl e converter em classes e aprender como funciona serialização... a partir dai vc pode pegar uns xml de exemplo e olhar o manual da sefaz pra emitir nf-e alem de incluir as outras funções como o webservice de Eventos para um eventual cancelamento da NF-e ou até mesmo uma carta de correção... Ou vc pode pegar o projeto da NF-e e começar a fuçar nele, quando começei a mexer eu apanhei bastante mas depois que entendi a logica que o projeto foi desenvolvido eu consigo dar manutenção e alteração normalmente inclusive quando houve as trocas dos webservices para a versao 3.10
Então. O problema é começar a entender a lógica do NFE.
Tipo achei um artigo no site da marcoratti. Eu criei um uma especie de replica do NFE gratuito, porém mais simples para eu colocar em pratica o artigo do site marcoratti
Com ele, eu fiz o seguinte código
Try
Dim writer As New XmlTextWriter([Ô]NF-e.xml[Ô], Nothing)
[ô]inicia o documento xml
writer.WriteStartDocument()
[ô]escreve o elmento raiz
writer.WriteStartElement([Ô]nfeProc[Ô])
writer.WriteAttributeString([Ô]versao[Ô], [Ô]3.10[Ô])
writer.WriteAttributeString([Ô]xmlns[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
writer.WriteStartElement([Ô]NFe[Ô])
writer.WriteAttributeString([Ô]xmlns[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
writer.WriteStartElement([Ô]infNFe[Ô])
writer.WriteAttributeString([Ô]ID[Ô], [Ô]Código gerado pela NFe[Ô])
writer.WriteAttributeString([Ô]versao[Ô], [Ô]3.10[Ô])
writer.WriteStartElement([Ô]ide[Ô])
[ô]Escreve os sub-elementos
writer.WriteElementString([Ô]cUF[Ô], [Ô]35[Ô])
writer.WriteElementString([Ô]cNF[Ô], [Ô]seminformação[Ô])
writer.WriteElementString([Ô]natOP[Ô], [Ô]Venda[Ô])
writer.WriteElementString([Ô]indPag[Ô], [Ô]0[Ô])
writer.WriteElementString([Ô]mod[Ô], [Ô]55[Ô])
writer.WriteElementString([Ô]serie[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]nNF[Ô], [Ô]1887[Ô])
writer.WriteElementString([Ô]nhEmi[Ô], [Ô]2016-10-19[Ô])
writer.WriteElementString([Ô]tpNF[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]idDest[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]cMunFG[Ô], [Ô]3530607[Ô])
writer.WriteElementString([Ô]tpImp[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]tpEmis[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]cDV[Ô], [Ô]8[Ô])
writer.WriteElementString([Ô]tAmb[Ô], [Ô]1[Ô])
writer.WriteElementString([Ô]finNFe[Ô], [Ô]4[Ô])
writer.WriteElementString([Ô]indFinal[Ô], [Ô]0[Ô])
writer.WriteElementString([Ô]indPres[Ô], [Ô]0[Ô])
writer.WriteElementString([Ô]procEmi[Ô], [Ô]3[Ô])
writer.WriteElementString([Ô]verProc[Ô], [Ô]3.10.61[Ô])
[ô] encerra o elemento raiz
writer.WriteEndElement()
[ô]Escreve o XML para o arquivo e fecha o objeto escritor
writer.Close()
MsgBox([Ô]Arquivo XML gerado com sucesso.[Ô])
Catch ex As Exception
MsgBox(ex.Message)
End Try, e tive a seguinte xml
<?xml version=[Ô]1.0[Ô] ?>
- <nfeProc versao=[Ô]3.10[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <NFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <infNFe ID=[Ô]Código gerado pela NFe[Ô] versao=[Ô]3.10[Ô]>
- <ide>
<cUF>35</cUF>
<cNF>seminformação</cNF>
<natOP>Venda</natOP>
<indPag>0</indPag>
<mod>55</mod>
<serie>1</serie>
<nNF>1887</nNF>
<nhEmi>2016-10-19</nhEmi>
<tpNF>1</tpNF>
<idDest>1</idDest>
<cMunFG>3530607</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>8</cDV>
<tAmb>1</tAmb>
<finNFe>4</finNFe>
<indFinal>0</indFinal>
<indPres>0</indPres>
<procEmi>3</procEmi>
<verProc>3.10.61</verProc>
</ide>
</infNFe>
</NFe>
</nfeProc>
Fiz mais ou menos como saiu a xml emitida pela própria sefaz. Porém ainda to perdido. é esse o caminho?
baixei o projeto da NFE nesse tópico, só que ainda não consigo compreender.
estou achando que é para fazer isso
escrever em xml - estou tentando fazer igual ao modelo xml da propria nfe
(porém tem alguns campos na NF que eu não sei de onde tirar, tipo código de cidade)
Seria essa um jeito de fazer?
Obrigado
http://www.nfe.fazenda.gov.br/portal/informe.aspx?ehCTG=false#407
fiquei perdidinho
estou tentando pela primeira Vez fazer uma nota de importação
Mais esta dando erro ao adicionar a ADI ao XML
estou tentando carregando as informações assim
If Vnfe.infNFE.Ide.natOp = [Ô]Importação[Ô] Then
Detalhamento.Prod.Di = New DI
Detalhamento.Prod.Di.nDI = Trim(DR([Ô]ndi[Ô]).ToString)
Detalhamento.Prod.Di.dDI = Trim(DR([Ô]ddi[Ô]).ToString)
Detalhamento.Prod.Di.xLocDesemb = Trim(DR([Ô]xlocdesemb[Ô]).ToString)
Detalhamento.Prod.Di.dDesemb = Trim(DR([Ô]ddesemb[Ô]).ToString)
Detalhamento.Prod.Di.UFDesemb = Trim(DR([Ô]ufdesemb[Ô]).ToString)
Detalhamento.Prod.Di.tpViaTransp = Trim(DR([Ô]tpviatransp[Ô]).ToString)
Detalhamento.Prod.Di.CNPJ = RemoveCaracterEspecial(Trim(DR([Ô]cnpj[Ô]).ToString), True)
Detalhamento.Prod.Di.UFTerceiro = Trim(DR([Ô]ufterceiro[Ô]).ToString)
Detalhamento.Prod.Di.cExportador = Trim(DR([Ô]cexportador[Ô]).ToString)
Detalhamento.Prod.Di.tpIntermedio = Trim(DR([Ô]TPINTERMEEDIARIO[Ô]).ToString)
Static sadi As New adi
sadi.nAdicao = Trim(DR([Ô]nadicao[Ô]).ToString)
sadi.cFabricante = Trim(DR([Ô]cfabricacao[Ô]).ToString)
sadi.nSeqAdic = Trim(DR([Ô]nseqad[Ô]).ToString)
sadi.nDraw = Trim(DR([Ô]ndraw[Ô]).ToString)
Detalhamento.Prod.Di.Adi.Add(sadi)
End If
o erro acontece ao tentar montar o XML (erro Não e possÃvel Converter um Objeto do tipo ADI no tipo NFref)
Public Function GerarXML() As XmlDocument
Dim configXML As New XmlWriterSettings()
configXML.Indent = True
configXML.IndentChars = [Ô][Ô]
configXML.NewLineOnAttributes = False
configXML.OmitXmlDeclaration = False
Dim xmlSaida As Stream = New MemoryStream()
Dim oXmlGravar As XmlWriter = XmlWriter.Create(xmlSaida, configXML)
oXmlGravar.WriteStartDocument()
oXmlGravar.WriteStartElement([Ô]NFe[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
[ô]abre nfe
oXmlGravar.WriteStartElement([Ô]infNFe[Ô])
oXmlGravar.WriteAttributeString([Ô]versao[Ô], versao.ToString())
oXmlGravar.WriteAttributeString([Ô]Id[Ô], [Ô]NFe[Ô] & Id.ToString())
Dim tipoObjeto As Type
tipoObjeto = infNFE.Ide.[GetType]()
Dim propriedades As PropertyInfo()
propriedades = tipoObjeto.GetProperties()
objetoParaXML(oXmlGravar, infNFE.Ide, False)
objetoParaXML(oXmlGravar, infNFE.Emit, False)
objetoParaXML(oXmlGravar, infNFE.Dest, False)
For Each detalhe As det In infNFE.Det
oXmlGravar.WriteStartElement([Ô]det[Ô])
oXmlGravar.WriteAttributeString([Ô]nItem[Ô], detalhe.nItem.ToString())
objetoParaXML(oXmlGravar, detalhe.Prod, False) [ô] erro acontece nesta linha
mais eu não estou referenciando nenhuma NFe, esse erro só acontece quando tento adicionar a DI e ADI ao XML
alguma dica de como resolver esse erro?
Citação::
SANKARVA,
abaixo segue exemplo de xml de pedido de inutilizacao.
Obrigado por se interessar, mas isso é apenas o layout do xml, precisava mesmo era da rotina de consumo e retorno.
Mas batendo cabeça eu consegui, pegando por base o projeto aqui do Daniel, estou disponibilizando para a galera a rotina mastigadinha.
São 3 Classes, duas já existe no projeto(ValidarXML e NfeInutilizacao2), outra eu criei(Inutilizacao).
é só adaptar a cada caso.
Detalhe, falta gerar o recibo assinado na pasta, vou desenvolver.
Abraço.
Opa, não consegui fazer a Inutilização com o Código Postado, vc teria o exemplo de Validação e Assinatura da Inutilização ?
autemp@hotmail.com
Citação::
Pessoal é possivel usar o campo de Substituição Tributaria, IPI e ICMS em NF-e (Devolução) emitidas pelo simples nacional? Estou quase entrando em guerra com um cliente que esta dizendo que o fornecedor dele diz q é possivel e obrigatorio... geralmente quando tem esses campos eu peço para colocar o valor no campo Outras Despesas e informar no campo Informações Complementares destacando nas observações
Obrigado
Olá Leandro
Até onde eu se, você está certo. Quando a empresa é optante do simples, se informar o Icms ou IcmsST, a Sefaz não valida.
Eu tive esse problema com uma nota de importação, e a solução encontrada foi coloca o valor no corpo da nota como observação.