Fiz uma rotina para importar dados da planilha disponibilizada pelo governo da cClassTrib.
Ocorre que o campo LC Redação não é passado para variável e sempre o valor de NIL.
Ao tentar salvar no banco de dados apresenta erro.
Irei postar a rotina, caso alguém possa ajudar agradeço antecipadamente.
Código: Selecionar todos
/---------------------------------------------------------------------------------------------------------------------------------
// Importar Tabela cClassTrib
//
STATIC FUNCTION IMPORTARTABELA()
LOCAL cCaminho, CNomeArquivo
LOCAL cCST, cDescricaoCST, cCClassTrib, cNomecClassTrib, cDescricao, cLcRedacao, cLC21425, cTipoDeAliquota, npRedIBS, npRedCBS, cind_RedutorBC, cind_CredPres, cindMono, cindMonoReten, cindMonoRet, cindMonoDif, cCredito_para, cdIniVig, cdFimVig, dDataAtualizacao
cCaminho:="d:\DadosPDL\RT"
cNomeArquivo="cClassTrib.xlsx"
IF !FILE(cCaminho+"\"+cNomeArquivo)
MENSAGEM("Atenção, arquivo cClassTrib.xlxs NÃO encontrado da pasta "+cCaminho,8)
retu
end
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open( cCaminho+"\"+cNomeArquivo )
oExcel:Visible := .F.
oSheet := oExcel:Get( "ActiveSheet" )
oSheet:Cells( 1, 1 ):Select()
nLin:=2 // Pula o cabeçalho
do while !EMPTY(oSheet:Cells( nLin, 1 ):Value)
// Caso a célula 1 estiver vazia, irá sair automaticamente do lastro.
cCST = oSheet:Cells( nLin, 1 ):Value // Código de Situação Tributária do IBS e da CBS
cDescricaoCST = oSheet:Cells( nLin, 2 ):Value // Significado do Código de Situação Tributária do IBS e da CBS;
cCClassTrib = oSheet:Cells( nLin, 3 ):Value // Tributária do IBS e da CBS, sendo os três primeiros dígitos idênticos ao CST-IBS/CBS
cNomecClassTrib = oSheet:Cells( nLin, 4 ):Value // Nome reduzido para apresentação da Classificação Tributária
cDescricao = oSheet:Cells( nLin, 5 ):Value // Condição a que se refere a Classificação Tributária do IBS e da CBS
cLcRedacao = oSheet:Cells( nLin, 6 ):Value // Redação do artigo da LC 214/2025 onde a situação a que se refere a Classificação Tributária do IBS e da CBS está prevista
cLC21425 = oSheet:Cells( nLin, 7 ):Value // Texto e regulamento da Lei Complementar 214/2025 onde a condição a que se refere a Classificação Tributária do IBS e da CBS está prevista
cTipoDeAliquota = oSheet:Cells( nLin, 8 ):Value // Define o tipo de alíquota aplicável, conforme disposto na Lei Complementar nº 214/2025. (Padrao / Fixa / Sem aliquota / Uniforme Nacional / Uniforme Setorial)
npRedIBS = oSheet:Cells( nLin, 9 ):Value // Percentual de redução da alíquota do IBS associado ao código informado em cClassTrib.
npRedCBS = oSheet:Cells( nLin, 10 ):Value // Percentual de redução da alíquota da CBS correspondente ao cClassTrib.
cind_RedutorBC = oSheet:Cells( nLin, 11 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cind_CredPres = oSheet:Cells( nLin, 12 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cindMono = oSheet:Cells( nLin, 13 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cindMonoReten = oSheet:Cells( nLin, 14 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cindMonoRet = oSheet:Cells( nLin, 15 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cindMonoDif = oSheet:Cells( nLin, 16 ):Value // Indicadores que estabelecem a exigência, permissão ou vedação de preenchimento de campos no respectivo Documento Fiscal Eletrônico (DFe), conforme especificado em Nota Técnica. São eles: ind_RedutorBC, ind_gTribRegular, ind_CredPres, indMono, indMonoReten, indMonoRet, indMonoDif
cCredito_para = oSheet:Cells( nLin, 17 ):Value // Irei extrair o campo mas não irei salvar no banco do dados
cdIniVig = oSheet:Cells( nLin, 18 ):Value // Irei extrair o campo mas não irei salvar no banco do dados
cdFimVig = oSheet:Cells( nLin, 19 ):Value // Irei extrair o campo mas não irei salvar no banco do dados
dDataAtualizacao = oSheet:Cells( nLin, 20 ):Value // Data da última atualização do cClassTrib
? cCST
? hb_ANSIToOEM(cDescricaoCST)
? cClassTrib
? hb_ANSIToOEM(cNomecClassTrib)
? hb_ANSIToOEM(cDescricao)
? hb_ANSIToOEM(cLcRedacao)
? hb_ANSIToOEM(cLC21425)
? hb_ANSIToOEM(cTipoDeAliquota)
? npRedIBS
? npRedCBS
inkey(0)
sele AL_CCLAS
DBSETORDER(1)
if !DBSEEK(ALLTRIM(cClassTrib))
ADDREC(10)
repl cClassTrib with RETIRARACENTOS(ALLTRIM(cCClassTrib))
else
RECLOCK(10)
end
repl CST with ALLTRIM(cCST)
repl DescricaoC with RETIRARACENTOS(ALLTRIM(cDescricaoCST))
repl NomecClass with RETIRARACENTOS(ALLTRIM(cNomecClassTrib))
repl Descricao with RETIRARACENTOS(ALLTRIM(cDescricao))
repl LCRedacao with cLcRedacao // RETIRARACENTOS(ALLTRIM(cLcRedacao))
repl TipodeAliq with RETIRARACENTOS(ALLTRIM(cTipodeAliquota))
repl pRedIBS with npRedIBS
repl pRedCBS with npRedCBS
repl ind_Reduto with cind_RedutorBC
repl ind_CredPr with cind_CredPres
repl indMono with cindMono
repl indMonoRet with cindMonoReten
repl indMonoRet with cindMonoRet
repl indMonoDif with cindMonoDif
repl DataAtuali with dDataAtualizacao
DBCOMMIT()
DBUNLOCK()
nLin++
End
oExcel:ActiveWorkbook:Close()
retu
Não é permitido anexar a planilha no formato .xlxs, entretanto pode ser baixada no link
https://dfe-portal.svrs.rs.gov.br/Cff/C ... Tributaria
Saudações,
Júlio.
