unit CadTransportadores;

interface

uses
  Windows, system.UItypes, IB_Access,  Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ModeloCadastro, ImgList, AppEvnts, IB_Components, ExtCtrls,
  jpeg, Grids, IB_Grid, StdCtrls, Buttons, ComCtrls, IB_Controls, Mask,
  Menus, UCBase, IB_EditButton, System.ImageList;

type
  TfrmCadTransportadores = class(TFrModeloCadastro)
    edtCnpj: TIB_Edit;
    edtRazaoSocial: TIB_Edit;
    edtTele1: TIB_Edit;
    edtTele2: TIB_Edit;
    edtInscricao: TIB_Edit;
    edtEmail: TIB_Edit;
    edtNomeFantasia: TIB_Edit;
    GroupBox1: TGroupBox;
    edtBairro: TIB_Edit;
    edtCep: TIB_Edit;
    edtEndereco: TIB_Edit;
    edtCidade: TIB_Edit;
    edtNumero: TIB_Edit;
    edtComplemento: TIB_Edit;
    edtTipo: TIB_ComboBox;
    edtContatoTransporte: TIB_Edit;
    edtObs: TIB_Memo;
    IB_Edit1: TIB_Edit;
    popInscricao: TPopupMenu;
    ISENTO1: TMenuItem;
    popPesquisaCepTansporte: TPopupMenu;
    PesquisarCEP1: TMenuItem;
    qrUF: TIB_Query;
    dsrUF: TIB_DataSource;
    edtUF: TIB_LookupCombo;
    dbPlaca_Veiculo: TIB_Edit;
    edtUF_Veiculo: TIB_LookupCombo;
    qrUF_Veiculo: TIB_Query;
    dtUF_Veiculo: TIB_DataSource;
    procedure edtCnpjEnter(Sender: TObject);
    procedure edtCnpjExit(Sender: TObject);
    procedure edtCepExit(Sender: TObject);
    procedure ISENTO1Click(Sender: TObject);
    procedure PesquisarCEP1Click(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtExcluirClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure MontaMascaraCPF_CNPJ;
    function Verificacnpj: Boolean;
    procedure AtualizaTela;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadTransportadores: TfrmCadTransportadores;

implementation

uses DataModulo, Rotinas;

{$R *.dfm}

procedure TfrmCadTransportadores.edtCnpjEnter(Sender: TObject);
begin
  inherited;
   tbprincipal.FieldByName('cnpj').EditMask := '';
end;

procedure TfrmCadTransportadores.edtCnpjExit(Sender: TObject);
var erro,
    tipoPessoa :string;
begin
  inherited;

   if (TbPrincipal.State in [dssInsert]) then
   begin
      if (edtCnpj.Text <> '              ') and
         (edtCnpj.Text <> '           ') and
         (edtCnpj.Text<>'')then
      begin
         if ValidaCNPJCEICPF(edtCnpj.Text,tipoPessoa,erro)= False then
         begin
            MessageDlg(erro, mtWarning, [mbOK], 0);
            edtCnpj.SetFocus;
            Exit;
         end;

         TbPrincipal.FieldByName('JF').Value := tipoPessoa;

          //================= Se for CPF a inscricaoé isenta ==============
         if Length(TbPrincipal.FieldByName('CNPJ').AsString) = 11 then
         begin
            TbPrincipal.FieldByName('INSCRICAO').Value := 'ISENTO';
         end;
      Verificacnpj;
      end;
   end;

   MontaMascaraCPF_CNPJ;
end;

function TfrmCadTransportadores.Verificacnpj : Boolean;
begin
   qryPesquisa.Close;
   qryPesquisa.SQL.Clear;
   qryPesquisa.SQL.Add(' SELECT TRANSPORTADORES.CNPJ ');
   qryPesquisa.SQL.Add(' FROM TRANSPORTADORES ');
   qryPesquisa.SQL.Add(' where  TRANSPORTADORES.CNPJ = :cnpj ');
   qryPesquisa.ParamByName('cnpj').Value := LimpaTexto(edtCnpj.Text);
   qryPesquisa.Open;

   Result := True;
   if  not qryPesquisa.IsEmpty then
   begin
      BtCancelar.Click;
      TbPrincipal.Locate('CNPJ',qryPesquisa.ParamByName('cnpj').AsString ,[]);
   end;
   qryPesquisa.Close;
end;

procedure TfrmCadTransportadores.MontaMascaraCPF_CNPJ;
begin
   //================= monta a mascara do cpf ou cnpj ==============
   if Length(TbPrincipal.FieldByName('cnpj').AsString) = 11 then
   begin
      tbprincipal.FieldByName('cnpj').EditMask := '999\.999\.999\-99;0';
      edtCnpj.AutoLabel.Caption := 'CPF';
      edtRazaoSocial.AutoLabel.Caption := 'Nome';
   end
   else
   if Length(TbPrincipal.FieldByName('cnpj').AsString) = 14 then
   begin
      tbprincipal.FieldByName('cnpj').EditMask := '99\.999\.999\/9999\-99;0';
      edtCnpj.AutoLabel.Caption := 'CNPJ';
      edtRazaoSocial.AutoLabel.Caption := 'Razão Social';
   end
   else
   begin
      tbprincipal.FieldByName('cnpj').EditMask := '';
      edtCnpj.AutoLabel.Caption := 'CPF/CNPJ';
      edtRazaoSocial.AutoLabel.Caption := 'Nome / Razão Social';
   end;
end;

procedure TfrmCadTransportadores.edtCepExit(Sender: TObject);
begin
  inherited;
   if ValidarCep (TbPrincipal.FieldByName('ENDERECO_CEP').AsString) = False  then
   begin
      MessageDlg('Cep Inválido', mtWarning, [mbOK], 0);
      edtCep.SetFocus;
      Exit;
   end;

   if TbPrincipal.FieldByName('ENDERECO_CEP').AsString = '' then
   begin
      Exit;
   end;

   if TbPrincipal.FieldByName('ENDERECO_LOGRADOURO').AsString <> '' then
   begin
      Exit;
   end;

   try
      dados.qrCep.Close;
      dados.qrCep.ParamByName('CEP').Value := QuotedSTR(LimpaTexto(edtCep.Text));
      dados.qrCep.Open;
      if dados.qrCep.IsEmpty then
         Exit;

      TbPrincipal.FieldByName('ENDERECO_LOGRADOURO').Value := dados.qrCep.FieldByName('TIPO').AsString + ' '+dados.qrCep.FieldByName('RUA').AsString;
      TbPrincipal.FieldByName('ENDERECO_BAIRRO').Value     := dados.qrCep.FieldByName('BAIRRO').AsString;
      TbPrincipal.FieldByName('ENDERECO_CIDADE').Value     := dados.qrCep.FieldByName('CIDADE').AsString;
      if qrUF.Locate('DESCRICAO', dados.qrCep.FieldByName('UF').AsString, [] ) then
         TbPrincipal.FieldByName('COD_UF').Value  := qrUF.FieldByName('COD_UF').Value;
      
      except
   end;
end;

procedure TfrmCadTransportadores.ISENTO1Click(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
     Exit;

   TbPrincipal.FieldByName('INSCRICAO').Value := 'ISENTO';
end;

procedure TfrmCadTransportadores.PesquisarCEP1Click(Sender: TObject);
var cidade,endereco,bairro,cep,uf,cod_cidade_IBGE,cod_UF_IBGE : string;
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
      Exit;

   BuscaCepPorCidadeRua(cidade,endereco,bairro,cep,uf,cod_cidade_IBGE,cod_UF_IBGE);
   if cidade <> '' then
      TbPrincipal.FieldByName('ENDERECO_CIDADE').Value := cidade;

   if endereco <> '' then
      TbPrincipal.FieldByName('ENDERECO_LOGRADOURO').value := endereco;

   if bairro <> '' then
      TbPrincipal.FieldByName('ENDERECO_BAIRRO').Value := bairro;

   if cep <> '' then
      TbPrincipal.FieldByName('ENDERECO_CEP').Value := cep;

   if uf <> '' then
   begin
      if qrUF.Locate('DESCRICAO' , uf  , [] ) then
         TbPrincipal.FieldByName('COD_UF').Value := qrUF.FieldByName('COD_UF').Value
      else
         TbPrincipal.FieldByName('COD_UF').Value := Null;
   end;

   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadTransportadores.BtGravarClick(Sender: TObject);
begin
   if edtRazaoSocial.text = '' then
   begin
      MessageDlg('Informe a Razão Social ', mtWarning, [mbOK], 0);
      edtRazaoSocial.SetFocus;
      Exit;
   end;

   if edtUF.Text <> '' then
      TbPrincipal.FieldByName('COD_UF').Value := qrUF.FieldByName('COD_UF').Value
   else
      TbPrincipal.FieldByName('COD_UF').Value := Null;

   if edtUF_Veiculo.Text <> '' then
      TbPrincipal.FieldByName('VEICULO_UF').Value := qrUF_Veiculo.FieldByName('COD_UF').Value
   else
      TbPrincipal.FieldByName('VEICULO_UF').Value := Null;
  inherited;
end;

procedure TfrmCadTransportadores.BtInserirClick(Sender: TObject);
begin
  inherited;
   TbPrincipal.FieldByName('DATACADASTRO').Value := Date;
   AtualizaTela;
end;

procedure TfrmCadTransportadores.BtCancelarClick(Sender: TObject);
begin
  inherited;
  AtualizaTela;
end;

procedure TfrmCadTransportadores.BtAnteriorClick(Sender: TObject);
begin
  inherited;
  AtualizaTela;
end;

procedure TfrmCadTransportadores.BtProximoClick(Sender: TObject);
begin
  inherited;
  AtualizaTela;
end;

procedure TfrmCadTransportadores.BtExcluirClick(Sender: TObject);
begin
  inherited;
  AtualizaTela;
end;

procedure TfrmCadTransportadores.AtualizaTela;
begin
   MontaMascaraCPF_CNPJ;
   //=============== Atualzia a visualizacao dos dados ================
   if not qrUF.Locate('COD_UF', tbprincipal.FieldByName('COD_UF').Value , [] ) then
   begin
      if not qrUF.Bof then
      begin
         qrUF.First;
         qrUF.Prior;
      end;
   end;

   if not qrUF_Veiculo.Locate('COD_UF', tbprincipal.FieldByName('VEICULO_UF').Value , [] ) then
   begin
      if not qrUF_Veiculo.Bof then
      begin
         qrUF_Veiculo.First;
         qrUF_Veiculo.Prior;
      end;
   end;
end;


procedure TfrmCadTransportadores.BtEditarClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadTransportadores.FormCreate(Sender: TObject);
begin
   Gera_Codigo := True;
   Descricao_Unica := True;
   Campo_Tabela := 'RAZAO_SOCIAL';
   inherited;
   qrUF.Open;
   qrUF_Veiculo.Open;
end;

end.
