Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 22 de Janeiro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
222 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Registro 11 - Dados complementares do informante
Publicado por ActiveDelphi : Sexta, Agosto 03, 2007 - 05:51 GMT-3 (2022 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Victory Fernandes Seguiremos estudando cada registro individualmente, de acordo com o layout geral proposto no artigo anterior sobre o Registro 10. Sendo assim, o segundo registro a ser estudado é o Registro 11 que contém dados complementares do informante e é um dos registros mais simples de serem tratados.

O Registro 11
O Registro 11 é obrigatório, deve ser sempre o segundo registro do arquivo magnético e contém informações complementares sobre o informante, tais como telefone e pessoa responsável para contato.
Cada arquivo magnético deve conter apenas 1 (um) Registro 11, e a sua formatação deve ser feita de acordo com a Tabela 01.

O Registro 11 e o seu Sistema Gerencial
Até agora abordamos o Registro 11 apenas do ponto de vista teórico, conforme apresentado na documentação oficial dos convênios que regulamentam o Sintegra. Mas como implementar tudo isso na prática? O que o Registro 11 representa para o meu aplicativo gerencial?
A tela mostrada na Figura 01 é uma tela de Cadastro do Informante do Sintegra, apresentada inicialmente no artigo sobre o Registro 10, que mantém um perfil do usuário quanto ao Sintegra e salva em uma tabela do banco de dados as informações dos campos Contato, Telefone, Logradouro, CEP, Nº, Complemento e Bairro do Registro 11. Estas informações são informações que não mudarão a cada geração do arquivo magnético, sendo quase que constantes durante todo período de utilização do programa gerencial por parte do seu cliente.
 

Figura 01: Tela de Cadastro de Informante

A tela da Figura 01 contém mais informações do que as necessárias no Registro 11. Estas são informações relativas a outros registros do Sintegra, que já foram ou serão abordadas em detalhes nos artigos seguintes. Apenas os campos da Figura 01 indicados pelas setas vermelhas fazem parte das informações do Registro 11.

O Registro 11 e o Banco de Dados
Segue abaixo uma proposta de estrutura da tabela de “Informante” para armazenar as informações relativas ao Registro 11 e alteradas através da tela de Cadastro do Informante do Sintegra mostrada na Figura 01. Utilizamos a mesma estrutura da tabela proposta no artigo sobre o Registro 10, e adicionamos os campos relativos ao Registro 11, que estão ressaltados em negrito.
É muito importante que no momento do cadastro das informações do Registro 11, seja feita a validação dos campos de Telefone, Cep, Complemento e Nº, antes que os mesmos sejam salvos definitivamente no banco de dados. Caso contrário, poderão surgir erros durante a geração ou validação do arquivo magnético.
 

  CREATE TABLE "INFORMANTE"
  (
    "COD_INFORMANTE" INTEGER NOT NULL,
    "CNPJ" VARCHAR(14),
    "INSC_EST" VARCHAR(14),
    "NOME_CONTRIBUINTE" VARCHAR(35),
    "MUNICIPIO" VARCHAR(30),
    "UF" CHAR(2),
    "FAX" VARCHAR(10),
    "LOGRADOURO" VARCHAR(34),
    "NUMERO" INTEGER,
    "COMPLEMENTO" VARCHAR(22),
    "BAIRRO" VARCHAR(15),
    "CEP" INTEGER,
    "CONTATO" VARCHAR(28),
    "TELEFONE" INTEGER,
  PRIMARY KEY ("COD_INFORMANTE")
  );

O Registro 11 e a Sintegra32dll.dll
A declaração da função Registro 11 na Sintegra32dll.dll é mostrada abaixo:


Function Registro11(Logradouro, Nro, Complemento, Bairro, CEP, Nome_Contato, Telefone: ShortString): ShortString; ; stdcall; external 'SIntegra32Dll.DLL';

 

Na declaração mostrada acima vemos que a função Registro 11 da Sintegra32dll.dll contém uma variável do tipo ShortString para cada campo do Registro 11 mostrado na Tabela 01.
A função mostrada tem retorno do tipo ShortString, que pode assumir dois tipos de valores: valores em caso de haver erro nos parâmetros de entrada, e valores em caso de não haver erro nos parâmetros de entrada.

Os valores de retorno da função em caso de erro são:
• '-0 Função Inicia_Sintegra não chamada'
• '-1 CEP Inválido :: ' + Cep
• '-2 Complemento ou Número Inválido :: Pelo menos 1 dos campos deve ser preenchido';

Caso não haja erro nos parâmetros de entrada da função, o retorno será uma variável do tipo ShortString contendo o Registro 11 devidamente formatado conforme o padrão da Tabela 01 exemplificado abaixo:


Tipo + Logradouro + Nro + Complemento + Bairro + CEP + Nome_Contato + Telefone
 

Gerando o Registro 11 com a Sintegra32dll.dll
Como já foi visto, o processo de geração dos registros em geral passa por basicamente 3 etapas, que são descritas a seguir:
Primeiramente devemos selecionar os registros do banco de dados que serão utilizados para a geração do registro, como mostrado abaixo.
Neste caso, o sistema prevê que só pode ser cadastrado um único registro na tabela INFORMANTE, que contém as informações mostradas na Figura 01. Logo não há problemas quanto à questão do comando “Select *“ estar sendo executado sem restrição de número de registros retornados, e o fato de que cada arquivo magnético deve conter apenar 1 (um) Registro 11.
 

  //Registro11 - Dados complementares do informante
  function TSIntegra_ListFrm.sRegistro11(var Err_Msg: string): boolean;
  var
    TempStr: string;
  begin
    //Executa a seleção dos registros no banco de dados
    if not QrySintegra_Info.Active then
    begin
      with QrySintegra_Info do
      begin
        Close;
        UnPrepare;
        SQL.Clear;
        SQL.Add('SELECT * FROM informante');
        Prepare;
        Open;
      end;
    end;
  ...

Em segundo lugar, deve ser feita a passagem dos parâmetros para a Sintegra32dll.dll, informando para cada parâmetro, o campo respectivo do banco de dados, como mostrado abaixo.

  ...
  TempStr := Registro11(QrySintegra_Info.Fields.FieldByName('logradouro').AsString,   //Logradouro
  QrySintegra_Info.Fields.FieldByName('nro').AsString, //Número
  QrySintegra_Info.Fields.FieldByName('complemento').AsString, //Complemento
  QrySintegra_Info.Fields.FieldByName('bairro').AsString, //Bairro
  QrySintegra_Info.Fields.FieldByName('cep').AsString, //Cep
  QrySintegra_Info.Fields.FieldByName('nome_contato').AsString, //Nome Contato
  QrySintegra_Info.Fields.FieldByName('telefone').AsString //Telefone
  );
  ...

E finalmente, após a passagem dos parâmetros, devemos testar o retorno da sintegra32dll.dll para saber se a geração do registro transcorreu normalmente ou se houve algum erro, como mostrado abaixo.
Em caso de erro, apresentamos na tela o erro e todas as informações passadas para a sintegra32dll.dll como parâmetros. Caso contrário, procede-se o salvamento do retorno formatado do Registro 11 no arquivo magnético de destino.
 

  ...
  //Executa o tratamento da string temporária testando se houve erro
  Result := Trata_SIntegra_Str(TempStr);

  //Caso haja erro, executa o log das informações inconsistentes no RichEdit
  if not Result then
  begin
    Err_Msg :=
    ' Logradouro: ' + QrySintegra_Info.Fields.FieldByName('logradouro').AsString + #13 +
    ' Número: ' + QrySintegra_Info.Fields.FieldByName('nro').AsString + #13 +
    ' Complemento: ' + QrySintegra_Info.Fields.FieldByName('complemento').AsString + #13 +
    ' Bairro: ' + QrySintegra_Info.Fields.FieldByName('bairro').AsString + #13 +
    ' Cep: ' + QrySintegra_Info.Fields.FieldByName('cep').AsString + #13 +
    ' Contato: ' + QrySintegra_Info.Fields.FieldByName('nome_contato').AsString + #13 +
    ' Telefone: ' + QrySintegra_Info.Fields.FieldByName('telefone').AsString;
  end;
  ...

O código mostrado foi retirado do demo de geração do Sintegra com banco de dados disponível para download em:
http://www.igara.com.br/downloads/sintegradll/projeto_sintegra32dll_v3.zip 

Perguntas e Repostas sobre o Registro 11


1. Como informar um endereço sem número?
Preencher o campo 03 (Número) com zeros, pois o campo é numérico. No campo 04 (Complemento) informar a situação. Se for SEM NÚMERO ou KM-XXX ou outra situação.

2. Como informar um endereço com número composto (por ex.: 101-A)?
Preencher o campo número com 00101 e no campo complemento informar CASA-A, LOJA-A ou a informação que melhor identificar o imóvel.

3. Por que o Validador informa que o campo do Telefone está com o Formato/Conteúdo Inválido?
Este campo é obrigatório e não pode ficar sem informação. O campo 08 (telefone) é um campo numérico, sendo aceitos apenas números sem pontos, traços, barras, espaços e outros caracteres especiais. Caso não tenha telefone informe o do Contador ou de contato.

Por enquanto é só. Não perca a próxima edição quando continuaremos os estudos a respeito dos registros do Sintegra e veremos a geração do Registro 50.

As telas apresentadas fazem parte do Sistema Tk-EPR da TKS Software.

Este artigo foi baseado nas informações contidas nos seguintes documentos disponíveis para download na internet:
Convênio ICMS 020 de 2000.doc, Convênio ICMS 31 de 1999.doc, CONVÊNIO ICMS 057 de 1995.doc, Convênio ICMS 069 de 2002.doc, CONVÊNIO ICMS 078 de 1997.doc, Convênio ICMS 142 de 2002.doc, convenio_icms_018_de_2004.doc, convenio_icms_019_de_2004.doc, convenio_icms_020_de_2004.doc, Decreto 11614 de 2004.doc, manualdoconvenio57-95 C 76-03.RTF

 

Victory Fernandes é Engenheiro Mestrando em Redes de computadores, e desenvolvedor sócio da TKS Software - Soluções de Automação de Processos e Softwares Dedicados e Administrador do projeto Sintegra32dll.dll ( www.sintegrafacil.com.br ). Pode ser contatado em victory@igara.com.br , ou através dos sites www.igara.com.br - www.victory.hpg.com.br



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados