Olá!
Onde eu baixo a tabela ?
Só lá no site de olho no imposto ? Não quis fazer o cadastro...
Parece que toda ora muda tem uma que mal começou e já vai acabar.
Saudações,
Itamar M. Lins Jr.
Moderador: Moderadores
/*
Compilar usando: hbmk2 IBPTax.Prg -lxhb
*/
#include "inkey.ch"
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT_DEFAULT
FuncTion Main( versaotb, uf, nTipoTabela )
Local cMsg
Local nCursor
Local nPointer := 0
Local nLinha := MaxRow()/2
Local nEol, cConteudo, cLinha
Local nRegistro, cBuffer, nLenArq, nLido
Local cEol := Chr( 13 ) + Chr( 10 )
Local aEstr := {;
{"codigo" ,"N", 9, 0},;
{"ex" ,"N", 3, 0},;
{"tabela" ,"N", 1, 0},;
{"descricao" ,"C", 255, 0},;
{"aliqnac" ,"N", 5, 2},;
{"aliqimp" ,"N", 5, 2},;
{"aliqest" ,"N", 5, 2},;
{"aliqmun" ,"N", 5, 2},;
{"vigenciai" ,"D", 8, 0},;
{"vigencian" ,"D", 8, 0},;
{"chave" ,"C", 6, 0},;
{"versao" ,"C", 6, 0},;
{"fonte" ,"C", 4, 0},;
{"totalnac" ,"N", 5, 2},;
{"totalimp" ,"N", 5, 2};
}
Local siglas := "AC.AL.AP.AM.BA.CE.DF.ES.GO.MA.MT.MS.MG.PA.PB.PR.PE.PI.RJ.RN.RS.RO.RR.SC.SP.SE.TO"
Request DBFCDX
RddRegister('DBFCDX',1)
RddSetDefault('DBFCDX')
Request OrdKeyNo
Request OrdKeyCount
SET CENTURY ON
SET DATE BRIT
Private cCampo
default versaotb := "17.1.B", uf := "SP", nTipoTabela := 1
if (versaotb=nil .or. uf=nil .or. nTipoTabela=nil)
Alert( "Digite tbIBPTSP.exe 17.1.B SP 1" )
quit
endif
if !File( "TabelaIBPTax"+uf+versaotb+".csv" )
Alert( "Arquivo TabelaIBPTax"+uf+versaotb+".csv NÆo encontrado!" + CRLF + CRLF + ;
"Digite tbIBPTSP.exe 17.1.B SP 1" )
quit
endif
nCursor := SetCursor( 0 )
Private cArquivoDBF := "IBPT.DBF" // nome do arquivo .DBF a ser gerado
DBCreate( cArquivoDBF, aEstr )
Use ( cArquivoDBF ) Shared New
Private cArquivoCSV := "TabelaIBPTax"+uf+versaotb+".csv"
Private nHandle := FOpen( cArquivoCSV, 2 )
nRegistro := 0
cBuffer := Space( 1200 ) // se houver linha maior aumente o 1200
nLenArq := FSeek( nHandle, nPointer, 2 ) // pega tamanho arquivo
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer noinicio
nLido := FRead( nHandle , @cBuffer, 1200 )
nEol := AT( cEol, cBuffer )
nPointer += nEol + 1 // vamos ignorar a linha de nomes de campo
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer na segunda linha
nTotCampos := 13 // total de campos menos os campos totalnac e totalimp
do While nEol > 0
aCampos := {}
nLido := FRead( nHandle , @cBuffer, 1200 )
nEol := AT( cEol, cBuffer )
If nEol > 0
cLinha := Left( cBuffer, nEol - 1 ) + ";"
For x=1 To nTotCampos
cConteudo:=SubSt( cLinha, 0, At( ";", cLinha ) )
cLinha:= StrTran( cLinha, cConteudo, Nil, 1, 1 ) // remove apenas esta sequencia
cConteudo:=Left( cConteudo, Len( cConteudo ) - 1 ) // tira o ";" do final
AaDd( aCampos, cConteudo )
Next
If (nTipoTabela=1) .Or. (nTipoTabela=2 .And. aCampos[3]="0") .Or. (nTipoTabela=3 .And. aCampos[3]="1")
Append Blank // cria o registro vazio no dbf
For x=1 To nTotCampos
cCampo := Field( x )
cConteudo := aCampos[x]
If ValType( &cCampo. ) = "C"
If x = 4
cConteudo := SubStr( cConteudo,2)
cConteudo := Left( cConteudo, Len( Upper(CConteudo) )-1 )
Endif
cConteudo := RemoverAcentos( cConteudo, .t. )
EndIf
If ValType( &cCampo. ) = "N"
cConteudo := Val( cConteudo )
ElseIf ValType( &cCampo. ) = "D"
cConteudo := CToD( cConteudo )
Else
//cConteudo := Hb_AnsiToOem( cConteudo ) // Harbour 3.0
//cConteudo := Win_AnsiToOem( cConteudo ) // Harbour 3.2 ou superior
EndIf
Replace &cCampo. With cConteudo // salva todos campo
Next
Replace totalnac With aliqnac+aliqest+aliqmun // salva total aliquota nacional
Replace totalimp With aliqimp+aliqest+aliqmun // salva total aliquota importados
EndIf
EndIf
nPointer += nEol + 1 // incrementa o pointer
If nPointer >= nLenArq // se fim de arquivo,
Exit // fim...
Else // se nao,
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer
EndIf
EndDo
If nTipoTabela = 1
cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NCM e NBS;;"
cMsg += "NCM = Nomenclatura Comum do Mercosul ;"
cMsg += "NBS = Nomenclatura Brasileira de Servi‡os"
ElseIf nTipoTabela = 2
cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NCM;;"
cMsg += "NCM = Nomenclatura Comum do Mercosul"
ElseIf nTipoTabela = 3
cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NBS;;"
cMsg += "NBS = Nomenclatura Brasileira de Servi‡os"
EndIf
Alert( cMsg ) // versÆo 3.0
SetCursor( nCursor )
Return Nil
********************************************************************************
/*
* Remover os acentos do texto recebido
* 30/03/2017 - 07:38:54
*/
FUNCTION RemoverAcentos(cTexto,lUpper)
//Hb_Default( @lUpper, .f. )
cTexto := AnsiToOem( cTexto ) // Win_AnsiToOem( cTexto )
// acento agudo
cTexto := StrTran( cTexto, "á", "a" )
cTexto := StrTran( cTexto, "é", "e" )
cTexto := StrTran( cTexto, "í", "i" )
cTexto := StrTran( cTexto, "ó", "o" )
cTexto := StrTran( cTexto, "ú", "u" )
cTexto := StrTran( cTexto, "Á", "A" )
cTexto := StrTran( cTexto, "É", "E" )
cTexto := StrTran( cTexto, "Í", "I" )
cTexto := StrTran( cTexto, "Ó", "O" )
cTexto := StrTran( cTexto, "Ú", "U" )
cTexto := StrTran( cTexto, " ", "a" )
cTexto := StrTran( cTexto, "‚", "a" )
cTexto := StrTran( cTexto, "¡", "a" )
cTexto := StrTran( cTexto, "¢", "a" )
cTexto := StrTran( cTexto, "£", "a" )
cTexto := StrTran( cTexto, "µ", "A" )
cTexto := StrTran( cTexto, "", "E" )
cTexto := StrTran( cTexto, "Ö", "I" )
cTexto := StrTran( cTexto, "à", "O" )
cTexto := StrTran( cTexto, "é", "U" )
// acento circunflexo
cTexto := StrTran( cTexto, "â", "a" )
cTexto := StrTran( cTexto, "ê", "e" )
cTexto := StrTran( cTexto, "î", "i" )
cTexto := StrTran( cTexto, "ô", "o" )
cTexto := StrTran( cTexto, "û", "u" )
cTexto := StrTran( cTexto, "Â", "A" )
cTexto := StrTran( cTexto, "Ê", "E" )
cTexto := StrTran( cTexto, "Î", "I" )
cTexto := StrTran( cTexto, "Ô", "O" )
cTexto := StrTran( cTexto, "Û", "U" )
cTexto := StrTran( cTexto, "¶", "A" )
cTexto := StrTran( cTexto, "â", "O" )
cTexto := StrTran( cTexto, "ƒ", "a" )
cTexto := StrTran( cTexto, "“", "o" )
// til
cTexto := StrTran( cTexto, "ã", "a" )
cTexto := StrTran( cTexto, "õ", "o" )
cTexto := StrTran( cTexto, "Ã", "A" )
cTexto := StrTran( cTexto, "Õ", "O" )
cTexto := StrTran( cTexto, "Ç", "A" )
cTexto := StrTran( cTexto, "å", "O" )
cTexto := StrTran( cTexto, "Æ", "a" )
cTexto := StrTran( cTexto, "ä", "o" )
// ce-cedilha
cTexto := StrTran( cTexto, "ç", "c" )
cTexto := StrTran( cTexto, "Ç", "C" )
cTexto := StrTran( cTexto, "€", "C" )
cTexto := StrTran( cTexto, "‡", "c" )
// trema
cTexto := StrTran( cTexto, "ü", "u" )
cTexto := StrTran( cTexto, "Ü", "U" )
// crase
cTexto := StrTran( cTexto, "à", "a" )
cTexto := StrTran( cTexto, "è", "e" )
cTexto := StrTran( cTexto, "ì", "i" )
cTexto := StrTran( cTexto, "ò", "o" )
cTexto := StrTran( cTexto, "ù", "u" )
cTexto := StrTran( cTexto, "À", "A" )
cTexto := StrTran( cTexto, "È", "E" )
cTexto := StrTran( cTexto, "Ì", "I" )
cTexto := StrTran( cTexto, "Ò", "O" )
cTexto := StrTran( cTexto, "Ù", "U" )
cTexto := StrTran( cTexto, "¶", "A" )
cTexto := StrTran( cTexto, "â", "O" )
cTexto := StrTran( cTexto, "ƒ", "a" )
cTexto := StrTran( cTexto, "“", "o" )
If lUpper
cTexto := Upper(cTexto)
EndIf
Return cTexto
Retornar para Legislação Fiscal e Tributária
Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes