unit Consulta_Dados_Cadastrais;

interface
uses Messages, SysUtils, Forms, Controls, IB_Components, StrUtils, IB_Access, IdHTTP
, System.JSON.Builders, System.JSON.Readers, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;

{ ==================================
  Objeto para realzar consultas em sites como receita federal, Ministerio do trabalho
  ou arquivos externos. Preencha as propriedades do objeto com os valores importados e use
  os procedimentos para realizar as operações
 ===================================}

type
    { ==================================
      Se um novo local de consulta for inserido ajustar o procedientos
         Faça uma busca por " Local_Consulta " e veja onde esta sendo usado
     ===================================}
    Tlocal_Consulta = (lcReceita_Federal , lcMinisterio_do_trabalho, lcCaixaEconomica, lcReceitaWS, lcCnpjJa);

    TConsulta_Dados_Cadastrais = class(TObject)
       Tabela_Relacionada      : String;
       Cod_Tabela_Relacionada  : String;
       Local_Consulta          : Tlocal_Consulta;

       Data_Consulta           : Tdatetime;
       Hora_Consulta           : Tdatetime;
       Cod_Usuario_Consulta    : Integer;
       Erro_na_Consulta        : Boolean;
       Descricao_erro_na_Consulta : string;

       //======================= Informações vindas da consuta do local informado ======================
       Cnpj                    : String;
       Codigo_Sindical         : String;
       Nomefantasia            : String;
       Razaosocial             : String;
       Cnae                    : String;
       Cnae_Secundario         : String;
       Situacao_Cadastral      : string;

       Email                   : String;
       Endereco_Bairro         : String;
       Endereco_Cep            : String;
       Endereco_Cidade_Cod_Ibge: String;
       Endereco_Cidade         : String;
       Endereco_Complemento    : String;
       Endereco_Logradouro     : String;
       Endereco_Numero         : String;
       Endereco_Uf             : String;
       Inicio_Atividade        : Tdatetime;
       Site                    : String;
       Telefone1               : String;
       Telefone2               : String;
       Obs                     : String;

       //======================= Informações atuais no banco de dados ======================
       Cnpj_Atual                     : String;
       Codigo_Sindical_Atual          : String;
       Nomefantasia_Atual             : String;
       Razaosocial_Atual              : String;
       Cnae_Atual                     : String;
       Situacao_Cadastral_Atual       : string;

       Email_Atual                    : String;
       Endereco_Bairro_Atual          : String;
       Endereco_Cep_Atual             : String;
       Endereco_Cidade_Cod_Ibge_Atual : String;
       Endereco_Cidade_Atual          : String;
       Endereco_Complemento_Atual     : String;
       Endereco_Logradouro_Atual      : String;
       Endereco_Numero_Atual          : String;
       Endereco_Uf_Atual              : String;
       Inicio_Atividade_Atual         : Tdatetime;
       Site_Atual                     : String;
       Telefone1_Atual                : String;
       Telefone2_Atual                : String;

       //======================= Propriedades so do objeto ======================
       Selecionar_Local_consulta : Boolean;

      function Realizar_Consulta : Boolean;

      private
         function Consultar_Dados_receitaws: Boolean;


         procedure Gravar_Consulta;
         procedure Mostrar_consulta ;
         procedure Mostrar_consulta_Empresa ;
         procedure Mostrar_consulta_Fornecedor;



         function Validar_Dados : Boolean;
         procedure Limpa_Informacao ;
         procedure Se_Vazio_Preencher_com_Informacao_atual;

         procedure Recuperar_Informacao_atual;
         procedure Recuperar_Informacao_atual_Empresa;
         procedure Recuperar_Informacao_atual_Fornecedor;


         function Formatar_CNPJ(num : string) : string ;
    function Busca_Json_ReceitaWS(Json, Campo: string): string;
end;


implementation

uses ACBrConsultaCNPJ, Classes,
  Consulta_Dados_Cadastrais_Resultado, DB,
  Dialogs, DataModulo, Rotinas;

{ TConsulta_Dados_Cadastrais }

function TConsulta_Dados_Cadastrais.Formatar_CNPJ(num : string) : string ;
begin
   Result := '';

   if Length(num) <> 14 then
      Exit;

   Result := Copy(num, 1, 2) + '.' + Copy(num, 3, 3) + '.' + Copy(num, 6, 3)+'/' + Copy(num, 9, 4)+'-'+ Copy(num, 13, 2);
end;


function TConsulta_Dados_Cadastrais.Realizar_Consulta : Boolean;
begin
   //======================= Realiza a consulta do local escolhido ======================

   Result := False;

   Self.Validar_Dados;
   Self.Recuperar_Informacao_atual;

   if dados.tbConfig.fieldbyname('CONSULTA_RECEITA_LOCAL').AsString = 'lcReceita_Federal' then
     Self.Local_Consulta := lcReceita_Federal;

   if dados.tbConfig.fieldbyname('CONSULTA_RECEITA_LOCAL').AsString = 'lcMinisterio_do_trabalho' then
     Self.Local_Consulta := lcMinisterio_do_trabalho;

   if dados.tbConfig.fieldbyname('CONSULTA_RECEITA_LOCAL').AsString  = 'lcCaixaEconomica'  then
      Self.Local_Consulta := lcCaixaEconomica;

   if dados.tbConfig.fieldbyname('CONSULTA_RECEITA_LOCAL').AsString = 'lcReceitaWS'  then
      Self.Local_Consulta := lcReceitaWS;

   if dados.tbConfig.fieldbyname('CONSULTA_RECEITA_LOCAL').AsString = 'lcCnpjJa'  then
      Self.Local_Consulta := lcCnpjJa;


end;

procedure TConsulta_Dados_Cadastrais.Gravar_Consulta;
var Query : TIB_Query;
    codigo : Integer;
begin
   //======================= Grava a consulta no banco de dados ======================

   codigo := ProximoCodigoChave('CONSULTA_DADOS_CADASTRAIS' , 'codigo' , '');

   Query              := TIB_Query.Create(Application);
   Query.DatabaseName := Dados.IB_Conexao.DatabaseName;
   Query.sql.Clear;
   Query.sql.Add(' select * from CONSULTA_DADOS_CADASTRAIS for update ') ;
   Query.Open;

   Query.Insert;

   Query.FieldByName('CODIGO').Value                  := codigo;
   Query.FieldByName('COD_USUARIO').Value             := Dados.qrUsuario.FieldByName('cod_usuario').Value;
   Query.FieldByName('DATA_CONSULTA').Value           := Date;
   Query.FieldByName('HORA_CONSULTA').Value           := Time;

   case Self.Local_Consulta of
      lcReceita_Federal        : Query.FieldByName('LOCAL_CONSULTA').Value := 'Receita_Federal';
      lcMinisterio_do_trabalho : Query.FieldByName('LOCAL_CONSULTA').Value := 'Ministerio_do_trabalho';
   end;

   Query.FieldByName('COD_TABELA_RELACIONADA').Value  := Self.Cod_Tabela_Relacionada;
   Query.FieldByName('TABELA_RELACIONADA').Value      := Self.Tabela_Relacionada;
   Query.FieldByName('CNPJ').Value                    := Self.Cnpj;
   Query.FieldByName('CODIGO_SINDICAL').Value         := Self.Codigo_Sindical;
   Query.FieldByName('NOMEFANTASIA').Value            := Self.Nomefantasia;
   Query.FieldByName('RAZAOSOCIAL').Value             := Self.Razaosocial;
   Query.FieldByName('CNAE').Value                    := Self.Cnae;
   Query.FieldByName('CNAE_SECUNDARIO').Value         := Self.Cnae_Secundario;
   Query.FieldByName('EMAIL').Value                   := Self.Email;
   Query.FieldByName('ENDERECO_BAIRRO').Value         := Self.Endereco_Bairro;
   Query.FieldByName('ENDERECO_CEP').Value            := Self.Endereco_Cep;
   Query.FieldByName('ENDERECO_CIDADE_COD_IBGE').Value:= Self.Endereco_Cidade_Cod_Ibge;
   Query.FieldByName('ENDERECO_CIDADE').Value         := Self.Endereco_Cidade;
   Query.FieldByName('ENDERECO_COMPLEMENTO').Value    := Self.Endereco_Complemento;
   Query.FieldByName('ENDERECO_LOGRADOURO').Value     := Self.Endereco_Logradouro;
   Query.FieldByName('ENDERECO_NUMERO').Value         := Self.Endereco_Numero;
   Query.FieldByName('ENDERECO_UF').Value             := Self.Endereco_Uf;
   Query.FieldByName('INICIO_ATIVIDADE').Value        := Self.Inicio_Atividade;
   Query.FieldByName('SITE').Value                    := Self.Site;
   Query.FieldByName('TELEFONE1').Value               := Self.Telefone1;
   Query.FieldByName('OBS').Value                     := Self.Obs;

   Query.Post;

   FreeAndNil(Query);

end;

procedure TConsulta_Dados_Cadastrais.Recuperar_Informacao_atual;
begin
   //======================= Recupera a informacao atual que esta no banco de dados para efeito de comparacao ======================

   if Self.TABELA_RELACIONADA = 'CLIENTE' then
      Self.Recuperar_Informacao_atual_Empresa;

   if Self.TABELA_RELACIONADA = 'FORNECEDOR' then
      Self.Recuperar_Informacao_atual_fornecedor;

end;

procedure TConsulta_Dados_Cadastrais.Recuperar_Informacao_atual_Empresa;
var tabela : TIB_Query;
begin

   tabela             := TIB_Query.Create(Application);
   tabela.DatabaseName:= Dados.IB_Conexao.DatabaseName;

   tabela.SQL.Add(' select cliente.* ');
   tabela.SQL.Add('  , uf.DESCRICAO as UF ');
   tabela.SQL.Add(' from cliente      ');
   tabela.SQL.Add('   LEFT join UF ON uf.COD_UF = cliente.ENDERECO_ENTREGA_COD_UF  ');
   tabela.SQL.Add(' where cliente.CNPJ  = ' + QuotedStr( Self.Cod_Tabela_Relacionada));

   tabela.Open;

   self.Cnpj_Atual                    := tabela.FieldByName('CNPJ').AsString;
   Self.Nomefantasia_Atual            := tabela.FieldByName('NOMEFANTASIA').AsString;
   Self.Razaosocial_Atual             := tabela.FieldByName('RAZAOSOCIAL').AsString;
   Self.Cnae_Atual                    := tabela.FieldByName('COD_CNAE').AsString;
   Self.Email_Atual                   := tabela.FieldByName('EMAIL').AsString;
   Self.Endereco_Bairro_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_BAIRRO').AsString;
   Self.Endereco_Cep_Atual            := tabela.FieldByName('ENDERECO_ENTREGA_CEP').AsString;
   Self.Endereco_Cidade_Cod_Ibge_Atual:= tabela.FieldByName('COD_MUNICIPIO_IBGE').AsString;
   Self.Endereco_Cidade_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_CIDADE').AsString;
   Self.Endereco_Complemento_Atual    := tabela.FieldByName('ENDERECO_ENTREGA_COMPLEMENTO').AsString;
   Self.Endereco_Logradouro_Atual     := tabela.FieldByName('ENDERECO_ENTREGA_LOGRADOURO').AsString;
   Self.Endereco_Numero_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_NUMERO').AsString;
   Self.Endereco_Uf_Atual             := tabela.FieldByName('UF').AsString;

   FreeAndNil(tabela);

end;


procedure TConsulta_Dados_Cadastrais.Recuperar_Informacao_atual_Fornecedor;
var tabela : TIB_Query;
begin

   tabela             := TIB_Query.Create(Application);
   tabela.DatabaseName:= Dados.IB_Conexao.DatabaseName;

   tabela.SQL.Add(' select FORNECEDOR.* ');
   tabela.SQL.Add('  , uf.DESCRICAO as UF ');
   tabela.SQL.Add(' from fornecedor      ');
   tabela.SQL.Add('   LEFT join UF ON uf.COD_UF = FORNECEDOR.ENDERECO_ENTREGA_COD_UF  ');
   tabela.SQL.Add(' where FORNECEDOR.COD_FORNECEDOR  = ' + QuotedStr( Self.Cod_Tabela_Relacionada));

   tabela.Open;

   self.Cnpj_Atual                    := tabela.FieldByName('CNPJ').AsString;
   Self.Nomefantasia_Atual            := tabela.FieldByName('NOMEFANTASIA').AsString;
   Self.Razaosocial_Atual             := tabela.FieldByName('RAZAOSOCIAL').AsString;
   Self.Cnae_Atual                    := tabela.FieldByName('COD_CNAE').AsString;
   Self.Email_Atual                   := tabela.FieldByName('EMAIL').AsString;
   Self.Endereco_Bairro_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_BAIRRO').AsString;
   Self.Endereco_Cep_Atual            := tabela.FieldByName('ENDERECO_ENTREGA_CEP').AsString;
   Self.Endereco_Cidade_Cod_Ibge_Atual:= tabela.FieldByName('COD_MUNICIPIO_IBGE').AsString;
   Self.Endereco_Cidade_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_CIDADE').AsString;
   Self.Endereco_Complemento_Atual    := tabela.FieldByName('ENDERECO_ENTREGA_COMPLEMENTO').AsString;
   Self.Endereco_Logradouro_Atual     := tabela.FieldByName('ENDERECO_ENTREGA_LOGRADOURO').AsString;
   Self.Endereco_Numero_Atual         := tabela.FieldByName('ENDERECO_ENTREGA_NUMERO').AsString;
   Self.Endereco_Uf_Atual             := tabela.FieldByName('UF').AsString;

   FreeAndNil(tabela);

end;

function TConsulta_Dados_Cadastrais.Validar_Dados: Boolean;
begin
   //======================= Verifica se todos os dados obrigatorios foram informados ======================

   Result := False;
   if Trim(Self.TABELA_RELACIONADA) = '' then
   begin
      raise Exception.Create('É necessário informar a tabela relacionada para realizar a consulta.' + #13
                             + 'PROGRAMADOR Preencha a informação da propriedade TABELA_RELACIONADA');
      Exit;
   end;

   if Trim(Self.COD_TABELA_RELACIONADA) = '' then
   begin
      raise Exception.Create('É necessário informar o código da tabela relacionada para realizar a consulta.' + #13
                             + 'PROGRAMADOR Preencha a informação da propriedade COD_TABELA_RELACIONADA');
      Exit;
   end;

end;

function TConsulta_Dados_Cadastrais.Busca_Json_ReceitaWS(Json, Campo : string ) : string;
var
  LJsonTextReader: TJsonTextReader;
  LStringReader: TStringReader;


begin
   LStringReader   := TStringReader.Create( Json);
   LJsonTextReader := TJsonTextReader.Create(LStringReader);

  while LJsonTextReader.Read do
  begin
    if Campo =  LJsonTextReader.Value.AsString then
    begin
       if  LowerCase (Campo) = 'atividade_principal' then
       begin
         LJsonTextReader.Read;
         LJsonTextReader.Read;
         LJsonTextReader.Read;
         LJsonTextReader.Read;
         LJsonTextReader.Read;
       end;

       LJsonTextReader.Read;
       Result := LJsonTextReader.Value.AsString;
       Break;
    end;
  end;

end;

function TConsulta_Dados_Cadastrais.Consultar_Dados_receitaws: Boolean;
var i : integer;
   IdHTTP1: TIdHTTP;
   OpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
   RespostaHtml : TStringStream;
   WebPageContent : AnsiString;

   resul_string
  , telefone_temp
  , token
  , status
  , url
  , Dias_para_Consulta : string;
    TimeOut : integer;

begin
   //======================= Consulta os dados https://www.receitaws.com.br ======================-
   url     :=  'https://receitaws.com.br/v1/cnpj/' + Self.CNPJ;
   TimeOut := dados.tbConfig.FieldByName('TIMEOUT_CONSULTA_RECEITA').AsInteger;

   OpenSSL1      := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
   OpenSSL1.SSLOptions.Method :=  sslvTLSv1_2;
   OpenSSL1.SSLOptions.Mode := sslmClient;
   OpenSSL1.PassThrough := True;

   IdHTTP1      := TIdHTTP.Create(nil);
   RespostaHtml := TStringStream.Create('');
   IdHTTP1.Request.Clear;
   IdHTTP1.IOHandler := OpenSSL1;


   {=============================================
      identifiquei q a qdo solicitamos alguma consulta que a receita ws tem q consular na base Da RF
      ela nao retorna os dados...
      a solucao foi colocar um timeOut baixo para chamar a requisicao
      se nao retornar nada faz outra requisicao com o TimeOut do parametros do sistema
   =============================================}

   IdHTTP1.ReadTimeout := 10000;

   //========== se existir token configurado ajusta o header com a Autorizacao =====
   if dados.tbConfig.FieldByName('TOKEN_CONSULTA_RECEITA').AsString.Trim <> '' then
   begin
     {==========================
       é ncessario informar o paramentro do numero de dias da atualização do cnpj
       A receita WS de tempo em tempos atualiza as informações da empresa no site da receita
     ==========================}
     Dias_para_Consulta := dados.tbParametro_Cliente.FieldByName('DIAS_REVER_CADASTRO').AsString.Trim;

     if Dias_para_Consulta = '' then
       Dias_para_Consulta := '30';


     token := dados.tbConfig.FieldByName('TOKEN_CONSULTA_RECEITA').AsString;

     IdHTTP1.Request.CustomHeaders.AddValue('Authorization: ' , token);
   end;


   Mostrar_TelaEspera('Consutando Receita WS. Dados atualizados em ' + Dias_para_Consulta + ' Dia' + sLineBreak +
                      'Aguardando ' + timeout.ToString + ' Seg. para resposta '
                     );

   //============== as vezes da erro de time out
   try
      IdHTTP1.Get(url ,RespostaHtml );
   except
   begin
      try
         if TimeOut > 0 then
            IdHTTP1.ReadTimeout :=  TimeOut * 1000
         else
            IdHTTP1.ReadTimeout := 60000;

         IdHTTP1.Get(url ,RespostaHtml );

      except on E:Exception do
      begin
         Descricao_erro_na_Consulta := 'Falha no servidor ReceitaWS' + sLineBreak + sLineBreak +  E.Message;
         Result := false;
         Destruir_TelaEspera;
         exit;
      end;

      end;
   end;
   end;

   resul_string := UTF8Decode( RespostaHtml.DataString);

   IdHTTP1.Destroy;
   RespostaHtml.Destroy;


   status := Busca_Json_ReceitaWS(resul_string , 'status');

   if status = 'ERROR' then
   begin
    result := false;
    Destruir_TelaEspera;
    exit;
   end;

   Self.Data_Consulta := Date;
   Self.Hora_Consulta := Time;

   //========== Cane principal
   Self.Cnae := Busca_Json_ReceitaWS(resul_string , 'atividade_principal');

   //========== complemento
   Self.Endereco_Complemento := Busca_Json_ReceitaWS(resul_string , 'complemento');

   //========== nome
   Self.Razaosocial := Busca_Json_ReceitaWS(resul_string , 'nome');

   //========== uf
   Self.Endereco_Uf := Busca_Json_ReceitaWS(resul_string , 'uf');

   //========== telefone
   Self.Telefone1 := Busca_Json_ReceitaWS(resul_string , 'telefone');

   //========== situacao
   Self.Situacao_Cadastral := Busca_Json_ReceitaWS(resul_string , 'situacao');

   //========== bairro
   Self.Endereco_Bairro := Busca_Json_ReceitaWS(resul_string , 'bairro');

   //========== logradouro
   Self.Endereco_Logradouro := Busca_Json_ReceitaWS(resul_string , 'logradouro');

   //========== numero
   Self.Endereco_Numero := Busca_Json_ReceitaWS(resul_string , 'numero');

   //========== cep
   Self.Endereco_Cep := Busca_Json_ReceitaWS(resul_string , 'cep');

   //========== municipio
   Self.Endereco_Cidade := Busca_Json_ReceitaWS(resul_string , 'municipio');

   //========== abertura
   Self.Inicio_Atividade := StrToDate( Busca_Json_ReceitaWS(resul_string , 'abertura') );

   //========== fantasia
   Self.Nomefantasia := Busca_Json_ReceitaWS(resul_string , 'fantasia');

   //========== cnpj
   Self.Cnpj := Busca_Json_ReceitaWS(resul_string , 'cnpj');

   //========== email
   Self.Email := Busca_Json_ReceitaWS(resul_string , 'email');



   //===================== Ajusta os campos
   Self.Cnpj           := LimpaTexto (Self.Cnpj);
   Self.Cnae           := LimpaTexto(Self.Cnae);
   Self.Email          := AnsiLowerCase(Self.Email);
   Self.Endereco_Cep   := LimpaTexto ( Self.Endereco_Cep );

   Self.Endereco_Cidade_Cod_Ibge := BuscaCodigoIBGEPorCidade(Self.ENDERECO_CIDADE, Self.ENDERECO_UF );


   Self.CNAE_secundario := '';

   telefone_temp := Self.Telefone1;

   i := Pos('/', telefone_temp);

   if i  > 1 then
   begin
      Self.Telefone1 := Copy( telefone_temp , 1 , i -1 );
      Self.Telefone2 := Copy( telefone_temp , i + 1  , Length(telefone_temp));

      Self.Telefone1 := LimpaTexto(Self.Telefone1);
      Self.Telefone2 := LimpaTexto(Self.Telefone2);
   end;

   Self.Cnpj                          := StringReplace( Self.Cnpj ,               '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Nomefantasia                  := StringReplace( Self.Nomefantasia,        '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Razaosocial                   := StringReplace( Self.Razaosocial,         '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Cnae                          := StringReplace( Self.Cnae,                '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Email                         := StringReplace( Self.Email,               '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Bairro               := StringReplace( Self.Endereco_Bairro,     '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Cep                  := StringReplace( Self.Endereco_Cep,        '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Cidade               := StringReplace( Self.Endereco_Cidade,     '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Complemento          := StringReplace( Self.Endereco_Complemento,'*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Logradouro           := StringReplace( Self.Endereco_Logradouro, '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Numero               := StringReplace( Self.Endereco_Numero,     '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Uf                   := StringReplace( Self.Endereco_Uf,         '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Telefone1                     := StringReplace( Self.Telefone1,           '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Telefone2                     := StringReplace( Self.Telefone2,           '*', '', [rfReplaceAll, rfIgnoreCase]);
   Self.Endereco_Cidade_Cod_Ibge      := StringReplace( Self.Endereco_Cidade_Cod_Ibge,'*', '', [rfReplaceAll, rfIgnoreCase]);

   Result := True;

   Destruir_TelaEspera;
end;


procedure TConsulta_Dados_Cadastrais.Mostrar_consulta;
var campo : string;
begin

   { ==================================
     Mostra o resultado a consulta na tela. O resultado da consulta pode vairiar de acordo com a tabela
     relacionada...
     Ex: NO caso de empresas nao existe a necessidad e de mostrar o codigo sindical
     por isso existe uma chamada para casa tabela relacionada..
     Ajuste cada uma para um tipo de visualizacao diferente
    ===================================}

    frmConsulta_Dados_Cadastrais_Resultado := TfrmConsulta_Dados_Cadastrais_Resultado.Create(Application);

    if Self.Tabela_Relacionada = 'CLIENTE' then
       Mostrar_consulta_Empresa;

    if Self.Tabela_Relacionada = 'FORNECEDOR' then
       Mostrar_consulta_Fornecedor;

    case Self.Local_Consulta of
       lcReceita_Federal       : frmConsulta_Dados_Cadastrais_Resultado.lblTitulo.Caption := 'Dados capturados da Receia Federal';
       lcMinisterio_do_trabalho: frmConsulta_Dados_Cadastrais_Resultado.lblTitulo.Caption := 'Dados capturados do Ministério do Trabalho';
    end;

    frmConsulta_Dados_Cadastrais_Resultado.ShowModal;

   //======================= O objeto conterá somente as informações selecionadas na tela do resultado ======================
    Self.Limpa_Informacao;

    with frmConsulta_Dados_Cadastrais_Resultado do
    begin

       if not cdsConsulta.IsEmpty then
          cdsConsulta.First;
          
       while not cdsConsulta.eof do
       begin

           //======================= Preenche objeto com os dados marcados ======================
          if cdsConsulta.FieldByName('selecionado').AsBoolean = True then
          begin

             campo := UpperCase(cdsConsulta.FieldByName('campo').AsString);

             case AnsiIndexStr (campo,  ['CNPJ', 'CODIGO_SINDICAL', 'NOMEFANTASIA', 'RAZAOSOCIAL', 'CNAE', 'CNAE_SECUNDARIO', 'EMAIL', 'ENDERECO_BAIRRO',
                                         'ENDERECO_CEP', 'ENDERECO_CIDADE_COD_IBGE', 'ENDERECO_CIDADE', 'ENDERECO_COMPLEMENTO', 'ENDERECO_LOGRADOURO', 'ENDERECO_NUMERO',
                                         'ENDERECO_UF', 'INICIO_ATIVIDADE', 'SITE', 'TELEFONE1', 'TELEFONE2', 'OBS' ] ) of

                 0: self.Cnpj                    := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 1: self.Codigo_Sindical         := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 2: self.Nomefantasia            := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 3: self.Razaosocial             := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 4: self.Cnae                    := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 5: self.Cnae_Secundario         := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 6: self.Email                   := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 7: self.Endereco_Bairro         := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 8: self.Endereco_Cep            := cdsConsulta.FieldByName('Valor_consulta').AsString;
                 9: self.Endereco_Cidade_Cod_Ibge:= cdsConsulta.FieldByName('Valor_consulta').AsString;
                10: self.Endereco_Cidade         := cdsConsulta.FieldByName('Valor_consulta').AsString;
                11: self.Endereco_Complemento    := cdsConsulta.FieldByName('Valor_consulta').AsString;
                12: self.Endereco_Logradouro     := cdsConsulta.FieldByName('Valor_consulta').AsString;
                13: self.Endereco_Numero         := cdsConsulta.FieldByName('Valor_consulta').AsString;
                14: self.Endereco_Uf             := cdsConsulta.FieldByName('Valor_consulta').AsString;
                15: self.Inicio_Atividade        := cdsConsulta.FieldByName('Valor_consulta').AsDateTime;
                16: self.Site                    := cdsConsulta.FieldByName('Valor_consulta').AsString;
                17: self.Telefone1               := cdsConsulta.FieldByName('Valor_consulta').AsString;
                18: self.Telefone2               := cdsConsulta.FieldByName('Valor_consulta').AsString;
                19: self.Obs                     := cdsConsulta.FieldByName('Valor_consulta').AsString;

             end

          end;
          cdsConsulta.Next;
       end;
    end;

    frmConsulta_Dados_Cadastrais_Resultado.Destroy;

    Se_Vazio_Preencher_com_Informacao_atual;
end;

procedure TConsulta_Dados_Cadastrais.Mostrar_consulta_Empresa;
begin
   //======================= Mostra os dados da consulta para a empresa ======================
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Close;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.CreateDataSet;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Início das Atividades';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'INICIO_ATIVIDADE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Inicio_Atividade;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Inicio_Atividade_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Cnpj';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'CNPJ';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Cnpj;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Cnpj_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Razão Social';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'RAZAOSOCIAL';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Razaosocial;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Razaosocial_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Nome Fantasia';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'NOMEFANTASIA';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Nomefantasia;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Nomefantasia_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Cnae';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'CNAE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Cnae;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Cnae_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Logradouro';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_LOGRADOURO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Logradouro;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Logradouro_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Número';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_NUMERO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Numero;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Numero_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Complemento';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_COMPLEMENTO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Complemento;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Complemento_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Bairro';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_BAIRRO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Bairro;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Bairro_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Cidade';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CIDADE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cidade;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cidade_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. UF';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_UF';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Uf;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Uf_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Cep';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CEP';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cep;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cep_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'IBGE Cidade';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CIDADE_COD_IBGE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cidade_Cod_Ibge;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cidade_Cod_Ibge_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;


end;

procedure TConsulta_Dados_Cadastrais.Mostrar_consulta_Fornecedor;
begin
   //======================= Mostra os dados da consulta para a empresa ======================
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Close;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.CreateDataSet;


   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Cnpj';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'CNPJ';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Cnpj;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Cnpj_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Razão Social';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'RAZAOSOCIAL';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Razaosocial;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Razaosocial_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Nome Fantasia';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'NOMEFANTASIA';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Nomefantasia;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Nomefantasia_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'Cnae';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'CNAE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Cnae;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Cnae_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Logradouro';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_LOGRADOURO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Logradouro;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Logradouro_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Número';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_NUMERO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Numero;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Numero_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Complemento';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_COMPLEMENTO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Complemento;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Complemento_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Bairro';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_BAIRRO';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Bairro;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Bairro_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Cidade';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CIDADE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cidade;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cidade_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. UF';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_UF';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Uf;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Uf_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'End. Cep';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CEP';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cep;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cep_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;

   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Append;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Campo_descritivo').Value   := 'IBGE Cidade';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('campo').Value              := 'ENDERECO_CIDADE_COD_IBGE';
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_consulta').Value     := Self.Endereco_Cidade_Cod_Ibge;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.FieldByName('Valor_base_de_dados').Value:= Self.Endereco_Cidade_Cod_Ibge_Atual;
   frmConsulta_Dados_Cadastrais_Resultado.cdsConsulta.Post;


end;
procedure TConsulta_Dados_Cadastrais.Limpa_Informacao;
begin
   Cnpj                    := '';
   Codigo_Sindical         := '';
   Nomefantasia            := '';
   Razaosocial             := '';
   Cnae                    := '';
   Cnae_Secundario         := '';
   Email                   := '';
   Endereco_Bairro         := '';
   Endereco_Cep            := '';
   Endereco_Cidade_Cod_Ibge:= '';
   Endereco_Cidade         := '';
   Endereco_Complemento    := '';
   Endereco_Logradouro     := '';
   Endereco_Numero         := '';
   Endereco_Uf             := '';
   Inicio_Atividade        := 0 ;
   Site                    := '';
   Telefone1               := '';
   Telefone2               := '';
   Obs                     := '';

end;

procedure TConsulta_Dados_Cadastrais.Se_Vazio_Preencher_com_Informacao_atual;
begin
   { ==================================
     se  informação do objeto estiver vazia preenche com a informação atual.. que sao os dados que estavam no cadastro
     isso facilida para o preenchimento do cadastro..
     no resultado da consulta se os campos que nao forem marcados será mantido o dados atuais do cadastro
     O objeto irá conter as informações Novas e as antigas para o caso das opções nao selecionadas no resultado
    ===================================}

   if trim(Self.Cnpj) = '' then
      Self.Cnpj := Self.Cnpj_Atual;

   if trim( Self.Codigo_Sindical) = '' then
      Self.Codigo_Sindical := Self.Codigo_Sindical_Atual;

   if trim( Self.Nomefantasia) = '' then
      Self.Nomefantasia := Self.Nomefantasia_Atual;

   if trim( Self.Razaosocial) = '' then
      Self.Razaosocial := Self.Razaosocial_Atual;

   if trim( Self.Cnae) = '' then
      Self.Cnae := Self.Cnae_Atual;

   if trim( Self.Situacao_Cadastral) = '' then
      Self.Situacao_Cadastral := Self.Situacao_Cadastral_Atual;

   if trim( Self.Email) = '' then
      Self.Email := Self.Email_Atual;

   if trim( Self.Endereco_Bairro) = '' then
      Self.Endereco_Bairro := Self.Endereco_Bairro_Atual;

   if trim( Self.Endereco_Cep) = '' then
      Self.Endereco_Cep := Self.Endereco_Cep_Atual;

   if trim( Self.Endereco_Cidade_Cod_Ibge) = '' then
      Self.Endereco_Cidade_Cod_Ibge := Self.Endereco_Cidade_Cod_Ibge_Atual;

   if trim( Self.Endereco_Cidade) = '' then
      Self.Endereco_Cidade := Self.Endereco_Cidade_Atual;

//   if trim( Self.Endereco_Complemento) = '' then
//      Self.Endereco_Complemento := Self.Endereco_Complemento_Atual;

   if trim( Self.Endereco_Logradouro) = '' then
      Self.Endereco_Logradouro := Self.Endereco_Logradouro_Atual;

   if trim( Self.Endereco_Numero) = '' then
      Self.Endereco_Numero := Self.Endereco_Numero_Atual;

   if trim( Self.Endereco_Uf) = '' then
      Self.Endereco_Uf := Self.Endereco_Uf_Atual;

   if Self.Inicio_Atividade  = 0 then
      Self.Inicio_Atividade := Self.Inicio_Atividade_Atual;

   if trim( Self.Site) = '' then
      Self.Site := Self.Site_Atual;

   if trim( Self.Telefone1) = '' then
      Self.Telefone1 := Self.Telefone1_Atual;

   if trim( Self.Telefone2) = '' then
      Self.Telefone2 := Self.Telefone2_Atual;
end;

end.


