Ler arquivo da prefeitura SP
Enviado: 09 Ago 2015 20:09
Fiz isso para um possível uso e acabei não usando.
Fica aí pra quem precisar.
Só colocar nome de variável nas colunas que for usar.
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