Fica aí pra quem precisar.
Só colocar nome de variável nas colunas que for usar.
Código: Selecionar todos
// Leitura do Layout 1
#include "inkey.ch"
PROCEDURE PTESPREF
LeRetornoPrefeitura( "nfse_1.csv" )
RETURN
FUNCTION LeRetornoPrefeitura( cFile )
LOCAL mNFTipo, mNFNumero, mNFDataHora
LOCAL mNFDatCan, mNFValorServicos, mNFValorDeducoes
LOCAL mNFAliquota, mNFISSDevido, mNFISSCredito, mNFISSRetido
LOCAL mTomCnpj, mTomNome, mTomEndTipo, mTomEndLogradouro
LOCAL mTomEndNumero, mTomEndComplemento, mTomEndBairro, mTomEndCidade, mTomEndUF, mTomEndCep, mDescServico
LOCAL oFile, cTxt
oFile := TFileRead():New( cFile )
oFile:Open()
DO WHILE oFile:MoreToRead()
cTxt := oFile:ReadLine()
mNFTipo := PegaBloco( @cTxt, ";" ) // Tipo de Registro 2
mNFNumero := PegaBloco( @cTxt, ";" ) // Nº NFS-e 385
mNFDataHora := PegaBloco( @cTxt, ";" ) // Data Hora NFE 08/05/2015 12:29:37
PegaBloco( @cTxt, ";" ) // Código de Verificação da NFS-e G4E84SXK
PegaBloco( @cTxt, ";" ) // Tipo de RPS RPS
PegaBloco( @cTxt, ";" ) // Série do RPS A
PegaBloco( @cTxt, ";" ) // Número do RPS 385
PegaBloco( @cTxt, ";" ) // Data de Emissão do RPS 08/05/2015
PegaBloco( @cTxt, ";" ) // Inscrição Municipal do Prestador (com formatação)
PegaBloco( @cTxt, ";" ) // Indicador de CPF/CNPJ do Prestador 2
PegaBloco( @cTxt, ";" ) // CPF/CNPJ do Prestador (com formatação)
PegaBloco( @cTxt, ";" ) // Razão Social do Prestador
PegaBloco( @cTxt, ";" ) // Tipo do Endereço do Prestador (R, AV, etc)
PegaBloco( @cTxt, ";" ) // Endereço do Prestador
PegaBloco( @cTxt, ";" ) // Número do Endereço do Prestador (com zeros)
PegaBloco( @cTxt, ";" ) // Complemento do Endereço do Prestador
PegaBloco( @cTxt, ";" ) // Bairro do Prestador
PegaBloco( @cTxt, ";" ) // Cidade do Prestador
PegaBloco( @cTxt, ";" ) // UF do Prestador
PegaBloco( @cTxt, ";" ) // CEP do Prestador (00000-000)
PegaBloco( @cTxt, ";" ) // Email do Prestador
PegaBloco( @cTxt, ";" ) // Situação da Nota Fiscal Opção Pelo Simples 4
PegaBloco( @cTxt, ";" ) // Opção pelo Simples
mNFDatCan := PegaBloco( @cTxt, ";" ) // Data de Cancelamento T
PegaBloco( @cTxt, ";" ) // Nº da Guia
PegaBloco( @cTxt, ";" ) // Data de Quitação da Guia Vinculada a Nota Fiscal
mNFValorServicos := PegaBloco( @cTxt, ";" ) // Valor dos Serviços (0.000,00)
mNFValorDeducoes := PegaBloco( @cTxt, ";" ) // Valor das Deduções (0,00)
PegaBloco( @cTxt, ";" ) // Código do Serviço Prestado na Nota Fiscal 2682
mNFAliquota := PegaBloco( @cTxt, ";" ) // Alíquota (0,00)
mNFISSDevido := PegaBloco( @cTxt, ";" ) // ISS devido (0,00)
mNFISSCredito := PegaBloco( @cTxt, ";" ) // Valor do Crédito (0,00)
mNFISSRetido := PegaBloco( @cTxt, ";" ) // ISS Retido N
PegaBloco( @cTxt, ";" ) // Indicador de CPF/CNPJ do Tomador 2
mTomCnpj := PegaBloco( @cTxt, ";" ) // CPF/CNPJ do Tomador (com formatação)
PegaBloco( @cTxt, ";" ) // Inscrição Municipal do Tomador (com formatação)
PegaBloco( @cTxt, ";" ) // Inscrição Estadual do Tomador
mTomNome := PegaBloco( @cTxt, ";" ) // Razão Social do Tomador
mTomEndTipo := PegaBloco( @cTxt, ";" ) // Tipo do Endereço do Tomador (R, AV, etc)
mTomEndLogradouro := PegaBloco( @cTxt, ";" ) // Endereço do Tomador
mTomEndNumero := PegaBloco( @cTxt, ";" ) // Número do Endereço do Tomador (com zeros)
mTomEndComplemento := PegaBloco( @cTxt, ";" ) // Complemento do Endereço do Tomador
mTomEndBairro := PegaBloco( @cTxt, ";" ) // Bairro do Tomador
mTomEndCidade := PegaBloco( @cTxt, ";" ) // Cidade do Tomador
mTomEndUF := PegaBloco( @cTxt, ";" ) // UF do Tomador
mTomEndCep := PegaBloco( @cTxt, ";" ) // CEP do Tomador (00000-000)
PegaBloco( @cTxt, ";" ) // Email do Tomador
mDescServico := PegaBloco( @cTxt, ";" ) // Discriminação dos Serviços
// Vamos ao que interessa
IF mNFTipo != "2"
LOOP
ENDIF
Cls()
@ 0, 0 SAY ""
@ Row() + 1, 0 SAY "Nota:" + mNFNumero
@ Row() + 1, 0 SAY "Emissão:" + mNFDataHora
@ Row() + 1, 0 SAY "Cancelamento:" + mNFDatCan
@ Row() + 1, 0 SAY "CNPJ:" + mTomCnpj
@ Row() + 1, 0 SAY "Nome:" + mTomNome
@ Row() + 1, 0 SAY "Endereço:" + mTomEndTipo + " " + mTomEndLogradouro + " " + mTomEndNumero + " " + mTomEndComplemento
@ Row() + 1, 0 SAY "Bairro:" + mTomEndBairro
@ Row() + 1, 0 SAY "Cidade:" + mTomEndCidade
@ Row() + 1, 0 SAY "UF:" + mTomEndUF
@ Row() + 1, 0 SAY "CEP:" + mTomEndCep
@ Row() + 1, 0 SAY "Valor:" + mNFValorServicos
@ Row() + 1, 0 SAY "Deduções:" + mNFValorDeducoes
@ Row() + 1, 0 SAY "Alíquota:" + mNFAliquota
@ Row() + 1, 0 SAY "ISS Devido:" + mNFISSDevido
@ Row() + 1, 0 SAY "ISS Crédito:" + mNFISSCredito
@ Row() + 1, 0 SAY "ISS Retido:" + mNFISSRetido
@ Row() + 1, 0 SAY "DescServico:" + mDescServico
Mensagem( "<ESC> abandona, outra tecla continua" )
IF Inkey(0) == K_ESC
EXIT
ENDIF
ENDDO
oFile:Close()
RETURN NIL
STATIC FUNCTION PegaBloco( cTxt, cSeparador )
LOCAL cBloco
cBloco := Substr( cTxt, 1, At( cSeparador, cTxt + cSeparador ) - 1 )
cTxt := Substr( cTxt, At( cSeparador, cTxt + cSeparador ) + 1 )
RETURN cBloco

