Segue mais um exemplo de como pode ser feito para gerar o XML da Nota Fiscal Eletrônica - NFe direto pelo Access.
Não sei se essa é a melhor técnica, mas funciona e é possível!
Testado na Versão 3.10 hoje 23/02/2018
Link do Vídeo: youtu.be/8yuRmp8bVAs
Link Download Externo: dropbox.com/s/trjvjzu3dinuee9/Gera%20XML%20NFe.rar
Não sei se essa é a melhor técnica, mas funciona e é possível!
Testado na Versão 3.10 hoje 23/02/2018
Link do Vídeo: youtu.be/8yuRmp8bVAs
Link Download Externo: dropbox.com/s/trjvjzu3dinuee9/Gera%20XML%20NFe.rar
- Código:
Private Sub ExportaVendaAtual_Click()
'-------------------------------------------------------'
' Criado por Fabio Paes em 31/05/2016 '
' Para o Maximo access '
' Livre para o Uso, mas Preserve a Autoria '
' Testado e validado XML dia 23/02/2018 '
'-------------------------------------------------------'
'Falta alguns campos, mas sao simples de incluirem...
'XML gerado e validado 23/02/2017 no site da receita. ver 3.10
'A MAIORIA DOS CAMPOS ESTÃO COM VALORES FIXO, DEVEM SER COLOCADO OS VALORES DOS CAMPOS.
Dim strArquivo As String
Dim DB As Database
Dim varXml As String
Dim rs As DAO.Recordset ' Dados tbVendas
Dim rs1 As DAO.Recordset ' Dados tbVendasDet
strArquivo = Application.CurrentProject.Path & "\Venda_" & Me.CodVenda & ".xml" 'Caminho e nome do Arquivo
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("SELECT TbVendas.CodCli, TbCadCli.NomeCliente,TbCadCli.Endereco, TbCadCli.CNPJ, TbCadCli.RG, TbVendas.CodVenda, TbVendas.DataVenda, " & _
"TbVendas.FormaPgto, TbVendas.Dt_1Parcela,TbVendas.TotalPago, TbVendas.QtdeParcelas FROM TbCadCli INNER JOIN TbVendas ON TbCadCli.CodCli = TbVendas.CodCli WHERE CodVenda = " & Me.CodVenda & " ORDER BY TbVendas.CodVenda")
Open strArquivo For Output As #1 'Abre o arquivo para iniciar a escrita
'------------------------Cabeçalho do XML------------------------'
varXml = "<?xml version=" & """1.0""" & " encoding=""UTF-8""?>"
varXml = varXml & "<nfeProc versao=" & """3.10""" & " xmlns=" & """http://www.portalfiscal.inf.br/nfe""" & ">"
varXml = varXml & "<NFe xmlns=""" & "http://www.portalfiscal.inf.br/nfe""" & ">"
varXml = varXml & "<infNFe versao=" & """3.10""" & " Id=" & """NFe" & Me.ChaveNFe & """" & ">"
varXml = varXml & "<ide>"
varXml = varXml & "<cUF>52</cUF>"
varXml = varXml & "<cNF>" & Mid(Me.ChaveNFe, 35, & "</cNF>" 'Pega a partir do 35 caracter(8 digitos) da chave NFe
varXml = varXml & "<natOp>VENDA DE MERCADORIA</natOp>"
varXml = varXml & "<indPag>2</indPag>"
varXml = varXml & "<mod>55</mod>"
varXml = varXml & "<serie>5</serie>" 'Serie NFe
varXml = varXml & "<nNF>" & rs("CodVenda") & "</nNF>" 'Numero NFe
varXml = varXml & "<dhEmi>" & Format(rs("DataVenda"), "yyyy-mm-dd") & "T17:19:00-02:00" & "</dhEmi>"
varXml = varXml & "<dhSaiEnt>" & Format(rs("DataVenda"), "yyyy-mm-dd") & "T17:19:00-02:00" & "</dhSaiEnt>"
varXml = varXml & "<tpNF>1</tpNF>"
varXml = varXml & "<idDest>3</idDest>"
varXml = varXml & "<cMunFG>5220454</cMunFG>"
varXml = varXml & "<tpImp>1</tpImp>"
varXml = varXml & "<tpEmis>1</tpEmis>"
varXml = varXml & "<cDV>7</cDV>"
varXml = varXml & "<tpAmb>1</tpAmb>"
varXml = varXml & "<finNFe>1</finNFe>"
varXml = varXml & "<indFinal>0</indFinal>"
varXml = varXml & "<indPres>9</indPres>"
varXml = varXml & "<procEmi>0</procEmi>"
varXml = varXml & "<verProc>6.0</verProc>"
varXml = varXml & "</ide>"
varXml = varXml & "<emit>"
varXml = varXml & "<CNPJ>33000167002155</CNPJ>"
varXml = varXml & "<xNome>PETROLEO BRASILEIRO S.A</xNome>"
varXml = varXml & "<xFant>GECOM - Sen Canedo</xFant>"
varXml = varXml & "<enderEmit>"
varXml = varXml & "<xLgr>Estrada Municipal SEN 001</xLgr>"
varXml = varXml & "<nro>S/N</nro>"
varXml = varXml & "<xBairro>Zona Industrial</xBairro>"
varXml = varXml & "<cMun>5220454</cMun>"
varXml = varXml & "<xMun>SENADOR CANEDO</xMun>"
varXml = varXml & "<UF>GO</UF>"
varXml = varXml & "<CEP>75250000</CEP>"
varXml = varXml & "<cPais>1058</cPais>"
varXml = varXml & "<xPais>Brasil</xPais>"
varXml = varXml & "</enderEmit>"
varXml = varXml & "<IE>102347239</IE>"
varXml = varXml & "<CRT>3</CRT>"
varXml = varXml & "</emit>"
varXml = varXml & "<dest>"
varXml = varXml & "<idEstrangeiro/>"
varXml = varXml & "<xNome>" & rs("NomeCliente") & "</xNome>"
varXml = varXml & "<enderDest>"
varXml = varXml & "<xLgr>CALLE BUENO No</xLgr>"
varXml = varXml & "<nro>185</nro>"
varXml = varXml & "<xCpl>CASSILLA POSTAL 401</xCpl>"
varXml = varXml & "<xBairro>S/B</xBairro>"
varXml = varXml & "<cMun>9999999</cMun>"
varXml = varXml & "<xMun>EXTERIOR</xMun>"
varXml = varXml & "<UF>EX</UF>"
varXml = varXml & "<cPais>0973</cPais>"
varXml = varXml & "<xPais>Bolivia</xPais>"
varXml = varXml & "</enderDest>"
varXml = varXml & "<indIEDest>9</indIEDest>"
varXml = varXml & "</dest>"
Set rs1 = DB.OpenRecordset("SELECT TbVendasDet.Produto, TbCadProd.Descricao, TbVendasDet.ValorUnit, " & _
"TbVendasDet.Quantidade FROM TbCadProd INNER JOIN TbVendasDet ON TbCadProd.CodProd = TbVendasDet.Produto WHERE CodVenda = " & rs!CodVenda & " ")
i = 1
Do While Not rs1.EOF 'Loop para gravar os dados da tbVendasDet (os produtos e afins)
varXml = varXml & "<det nItem=" & """" & i & """" & ">"
varXml = varXml & "<prod>"
varXml = varXml & "<cProd>" & rs1("Produto") & "</cProd>"
varXml = varXml & "<cEAN>0886112385989</cEAN>"
varXml = varXml & "<xProd>" & rs1("Descricao") & "</xProd>"
varXml = varXml & "<NCM>84719014</NCM>"
varXml = varXml & "<CFOP>5102</CFOP>"
varXml = varXml & "<uCom>UND</uCom>"
varXml = varXml & "<qCom>" & Replace(Format(rs1("Quantidade"), "#0.0000"), ",", ".") & "</qCom>"
varXml = varXml & "<vUnCom>" & Replace(Format(rs1("ValorUnit"), "#0.0000000000"), ",", ".") & "</vUnCom>"
varXml = varXml & "<vProd>" & Replace(Format(rs1("ValorUnit") * rs1("Quantidade"), "#0.00"), ",", ".") & "</vProd>"
varXml = varXml & "<cEANTrib>0886112385989</cEANTrib>"
varXml = varXml & "<uTrib>UND</uTrib>"
varXml = varXml & "<qTrib>1.0000</qTrib>"
varXml = varXml & "<vUnTrib>" & Replace(Format(rs1("ValorUnit"), "#0.0000000000"), ",", ".") & "</vUnTrib>"
varXml = varXml & "<indTot>1</indTot>"
varXml = varXml & "</prod>"
'-------------------impostos FALTA COLOCAR IMPOSTOS...-----------------'
varXml = varXml & "<imposto>"
varXml = varXml & "<ICMS>"
varXml = varXml & "<ICMS20>"
varXml = varXml & "<orig>7</orig>"
varXml = varXml & "<CST>20</CST>"
varXml = varXml & "<modBC>3</modBC>"
varXml = varXml & "<pRedBC>41.1800</pRedBC>"
varXml = varXml & "<vBC>156.48</vBC>"
varXml = varXml & "<pICMS>17.0000</pICMS>"
varXml = varXml & "<vICMS>26.60</vICMS>"
varXml = varXml & "</ICMS20>"
varXml = varXml & "</ICMS>"
varXml = varXml & "<IPI>"
varXml = varXml & "<cEnq>999</cEnq>"
varXml = varXml & "<IPINT>"
varXml = varXml & "<CST>53</CST>"
varXml = varXml & "</IPINT>"
varXml = varXml & "</IPI>"
varXml = varXml & "<PIS>"
varXml = varXml & "<PISAliq>"
varXml = varXml & "<CST>01</CST>"
varXml = varXml & "<vBC>379.98</vBC>"
varXml = varXml & "<pPIS>1.6500</pPIS>"
varXml = varXml & "<vPIS>6.27</vPIS>"
varXml = varXml & "</PISAliq>"
varXml = varXml & "</PIS>"
varXml = varXml & "<COFINS>"
varXml = varXml & "<COFINSAliq>"
varXml = varXml & "<CST>01</CST>"
varXml = varXml & "<vBC>379.98</vBC>"
varXml = varXml & "<pCOFINS>7.6000</pCOFINS>"
varXml = varXml & "<vCOFINS>28.88</vCOFINS>"
varXml = varXml & "</COFINSAliq>"
varXml = varXml & "</COFINS>"
varXml = varXml & "</imposto>"
varXml = varXml & "</det>"
'----------------AQUI E O FIM DOS DADOS DO PRODUTOS, TUDO DEVE SER ADD A CIMA---------------'
i = i + 1
rs1.MoveNext
Loop
'Totais da NFe
varXml = varXml & "<total>"
varXml = varXml & "<ICMSTot>"
varXml = varXml & "<vBC>0.00</vBC>"
varXml = varXml & "<vICMS>0.00</vICMS>"
varXml = varXml & "<vICMSDeson>0.00</vICMSDeson>"
varXml = varXml & "<vBCST>0.00</vBCST>"
varXml = varXml & "<vST>0.00</vST>"
varXml = varXml & "<vProd>" & Replace(Format(Me.txtTotalBNF, "#0.00"), ",", ".") & "</vProd>"
varXml = varXml & "<vFrete>0.00</vFrete>"
varXml = varXml & "<vSeg>0.00</vSeg>"
varXml = varXml & "<vDesc>" & Replace(Format(Nz(Me.txtDescontos, 0), "#0.00"), ",", ".") & "</vDesc>"
varXml = varXml & "<vII>0.00</vII>"
varXml = varXml & "<vIPI>0.00</vIPI>"
varXml = varXml & "<vPIS>0.00</vPIS>"
varXml = varXml & "<vCOFINS>0.00</vCOFINS>"
varXml = varXml & "<vOutro>0.00</vOutro>"
varXml = varXml & "<vNF>" & Replace(Format(Me.txtTotalNF, "#0.00"), ",", ".") & "</vNF>"
varXml = varXml & "</ICMSTot>"
varXml = varXml & "</total>"
'-----------------------Dados Básicos do Transportador-----------------'
varXml = varXml & "<transp>"
varXml = varXml & "<modFrete>0</modFrete>"
varXml = varXml & "<transporta>"
varXml = varXml & "<xNome>NOME DA TRANSPORTADORA</xNome>"
varXml = varXml & "</transporta>"
varXml = varXml & "<vol>"
varXml = varXml & "<qVol>1</qVol>"
varXml = varXml & "<pesoL>0.410</pesoL>"
varXml = varXml & "<pesoB>0.410</pesoB>"
varXml = varXml & "</vol>"
varXml = varXml & "</transp>"
'-----------------------FALTA OS DADOS Da COBRAÇA se houver-----------------'
'-----------------------FALTA as Informaçoes Adicionais... <infAdic>-----------------'
'-----------------------FALTA OS DADOS DA EXPORTAÇÃO se FOR O CASO-----------------'
varXml = varXml & "</infNFe>"
'-----------------------FALTA OS DADOS DA ASSINATURA DO XML <Signature Xmlns=...-----------------'
varXml = varXml & "</NFe>"
varXml = varXml & "<protNFe versao=" & """3.10""" & ">"
varXml = varXml & "<infProt>"
varXml = varXml & "<tpAmb>1</tpAmb>"
varXml = varXml & "<verAplic>6.0</verAplic>"
varXml = varXml & "<chNFe>" & Me.ChaveNFe & "</chNFe>" 'A chave da NFe
varXml = varXml & "<dhRecbto>2017-02-03T18:23:20-02:00</dhRecbto>"
varXml = varXml & "<nProt>152170667241354</nProt>"
varXml = varXml & "<digVal>2qhZfVTlC2Tqz+RWdhXnbnJT0V4=</digVal>"
varXml = varXml & "<cStat>100</cStat>"
varXml = varXml & "<xMotivo>Autorizado o uso da NF-e</xMotivo>"
varXml = varXml & "</infProt>"
varXml = varXml & "</protNFe>"
varXml = varXml & "</nfeProc>"
'Essa e a ultima linha do xml... tudo a cima daqui!
'-----------------------------------------------------------------------------------'
Print #1, varXml
'Fecha as conexoes
rs.Close
rs1.Close
DB.Close
Close #1
MsgBox "A venda " & Me.CodVenda & " Foi exportada para o Aquivo: " & vbNewLine & strArquivo, vbInformation, ""
End Sub
- Anexos
- Gera XML NFe.zip
- 23/02/2018 19:49
- Você não tem permissão para fazer download dos arquivos anexados.
- (77 Kb) Baixado 496 vez(es)