unit CadFilial;

interface

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

type
  TConsisteInscricaoEstadual  = function (const Insc, UF: String): Integer; stdcall;
  TVersaoDLL                  = function : Integer; stdcall;

type
  TfrmCadFilial = class(TFrModeloCadastro)
    edtRazaoSocial: TIB_Edit;
    edtApelido: TIB_Edit;
    edtResponsavel: TIB_Edit;
    edtFone1: TIB_Edit;
    edtFone2: TIB_Edit;
    edtFone3: TIB_Edit;
    edtEmail: TIB_Edit;
    edtCodigo: TIB_Edit;
    Panel4: TPanel;
    edtCep: TIB_Edit;
    edtEndereco: TIB_Edit;
    edtNumero: TIB_Edit;
    edtCidade: TIB_Edit;
    edtComplemento: TIB_Edit;
    edtBairro: TIB_Edit;
    popCep: TPopupMenu;
    PesquisaCEP1: TMenuItem;
    edtCnpj: TIB_Edit;
    edtInscricao: TIB_Edit;
    qrUF: TIB_Query;
    dsrUF: TIB_DataSource;
    edtUF: TIB_LookupCombo;
    dbCod_Municipio_IBGE: TIB_Edit;
    edtCERTIFICADO_DIGITAL: TIB_Edit;
    edtCTE_VENCIMENTO_CERTIFICADO: TIB_Date;
    sbtnGetCert: TSpeedButton;
    ACBrValidador: TACBrValidador;
    edtCNAE: TIB_Edit;
    procedure edtCepExit(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure edtFone1Exit(Sender: TObject);
    procedure edtFone2Exit(Sender: TObject);
    procedure edtFone3Exit(Sender: TObject);
    procedure PesquisaCEP1Click(Sender: TObject);
    procedure btnEditar2Click(Sender: TObject);
    procedure BtExcluirClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure edtCepKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtCancelarClick(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure sbtnGetCertClick(Sender: TObject);
  private
    procedure AtualizaTela;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadFilial: TfrmCadFilial;

implementation

uses DataModulo, Rotinas, DataModulo_NFe;

{$R *.dfm}

procedure TfrmCadFilial.edtCepExit(Sender: TObject);
begin
  inherited;

  if TbPrincipal.State in [dssBrowse] then
     Exit;

   if ValidarCep(edtCep.text) = False then
   begin
      MessageDlg('CEP inválido', mtInformation, [mbOK], 0);
      edtCep.SetFocus;
      Exit;
   end;


   dados.qrCep.Close;
   Dados.qrCep.ParamByName('cep').Value   := QuotedStr(LimpaTexto(edtCep.Text));
   Dados.qrCep.ParamByName('Rua').Value   := '';
   Dados.qrCep.ParamByName('Cidade').Value:= '';
   dados.qrCep.ParamByName('UF').Value    := '';
   dados.qrCep.Open;

   if dados.qrCep.IsEmpty then
      Exit;

   if edtEndereco.text = '' then
   begin
      TbPrincipal.FieldByName('LOGRADOURO').Value    := dados.qrCep.FieldByName('TIPO').AsString+' '+dados.qrCep.FieldByName('RUA').AsString;
      TbPrincipal.FieldByName('BAIRRO').Value        := dados.qrCep.FieldByName('BAIRRO').AsString;
      TbPrincipal.FieldByName('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;

   end;
end;

procedure TfrmCadFilial.BtGravarClick(Sender: TObject);
var FilialLogada: integer;
    LibHandle: THandle;
    ConsisteInscricaoEstadual : TConsisteInscricaoEstadual;
    IRet : Integer;
    erro,tipoPessoa :string;

    SofreuAlteracao : Boolean;
begin
   if LimpaTexto(edtCnpj.Text) = '' then
   begin
      MessageDlg('Informe o CNPJ', mtWarning, [mbOK], 0);
      edtcnpj.SetFocus;
      Exit;
   end;

   if edtInscricao.Text = '' then
   begin
      MessageDlg('Informe a Inscrição Estadual', mtWarning, [mbOK], 0);
      edtInscricao.SetFocus;
      Exit;
   end;

   if edtRazaoSocial.Text = '' then
   begin
      MessageDlg('Informe a razão social', mtWarning, [mbOK], 0);
      edtRazaoSocial.SetFocus;
      Exit;
   end;

   if edtApelido.Text = '' then
   begin
      MessageDlg('Informe o apelido para a filial', mtInformation, [mbOK], 0);
      edtApelido.SetFocus;
      Exit;
   end;

   tipoPessoa := 'J';
   if ValidaCNPJCEICPF(edtCnpj.Text, tipoPessoa , Erro ) = False then
   begin
      MessageDlg('CNPJ inválido', mtWarning, [mbOK], 0);
      edtCnpj.SetFocus;
      Exit;
   end;


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



   //================= Se a inscricao estadual for diferente de vazio ou isento verifica se é valida ===========
   if (edtInscricao.Text <> '') and (edtInscricao.Text <> 'ISENTO') then
   begin
      AcbrValidador.Documento   := edtInscricao.Text;
      AcbrValidador.Complemento := UpperCase( edtUF.Text);
      AcbrValidador.TipoDocto   := docInscEst;
      if AcbrValidador.Validar = false then
      begin
        MessageDlg( AcbrValidador.MsgErro , mtError, [mbOK], 0);
        edtInscricao.SetFocus;
        Exit;
      end;
   end;

   if TbPrincipal.Modified then
      SofreuAlteracao := True
   else
      SofreuAlteracao := False;

   if TbPrincipal.State in [dssInsert] then
      descricao_auditoria := 'CADASTROU A FILIAL ' + TbPrincipal.FieldByName('COD_FILIAL').AsString + ' '+ TbPrincipal.FieldByName('APELIDO').AsString;

   if TbPrincipal.State in [dssEdit] then
      descricao_auditoria := 'ALTEROU A FILIAL ' + TbPrincipal.FieldByName('COD_FILIAL').OldAsString + ' '+ TbPrincipal.FieldByName('APELIDO').OldAsString;
  inherited;

  if SofreuAlteracao then
  begin
    FilialLogada := Dados.qrfilial.FieldByName('COD_FILIAL').Value;
    Dados.qrfilial.RefreshAll;
    Dados.qrfilial.Locate('COD_FILIAL', FilialLogada, []);
  end;

end;

procedure TfrmCadFilial.FormCreate(Sender: TObject);
begin
   inherited;
   Gera_Codigo := True;
   Chave_Tabela := 'COD_FILIAL';
   qrUF.Open;
end;

procedure TfrmCadFilial.edtFone1Exit(Sender: TObject);
begin
   if (TbPrincipal.FieldByName('TELEFONE1').AsString = '')then
      Exit;
   if ValidarTelefone(edtFone1.Text) = False then
   begin
      MessageDlg('Telefone inválido', mtWarning, [mbOK], 0);
      edtFone1.SetFocus;
      Exit;
   end;
   inherited;
end;

procedure TfrmCadFilial.edtFone2Exit(Sender: TObject);
begin
   if (TbPrincipal.FieldByName('TELEFONE2').AsString = '')then
      Exit;
   if ValidarTelefone(edtFone2.Text) = False then
   begin
      MessageDlg('Telefone inválido', mtWarning, [mbOK], 0);
      edtFone2.SetFocus;
      Exit;
   end;
   inherited;

end;

procedure TfrmCadFilial.edtFone3Exit(Sender: TObject);
begin
  inherited;
   if (TbPrincipal.FieldByName('TELEFONE3').AsString = '')then
      Exit;
   if ValidarTelefone(edtFone3.Text) = False then
   begin
      MessageDlg('Telefone inválido', mtWarning, [mbOK], 0);
      edtFone3.SetFocus;
      Exit;
   end;
   inherited; 
end;

procedure TfrmCadFilial.PesquisaCEP1Click(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('CIDADE').value     := cidade;

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

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

   if cep <> '' then
      TbPrincipal.FieldByName('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;

   if cod_cidade_IBGE <> '' then
      TbPrincipal.FieldByName('COD_MUNICIPIO_IBGE').Value := cod_cidade_IBGE;

   if cod_UF_IBGE <> '' then
      TbPrincipal.FieldByName('COD_UF_IBGE').Value := cod_UF_IBGE;

   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadFilial.btnEditar2Click(Sender: TObject);
begin
   inherited;
   edtRazaoSocial.SetFocus;
end;

procedure TfrmCadFilial.BtExcluirClick(Sender: TObject);
begin
   descricao_auditoria := 'EXCLUIU A FILIAL ' + TbPrincipal.FieldByName('COD_FILIAL').AsString + ' '+ TbPrincipal.FieldByName('APELIDO').AsString;
   inherited;
   AtualizaTela;
end;

procedure TfrmCadFilial.BtInserirClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;  
end;

procedure TfrmCadFilial.edtCepKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;

   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (edtCep.Focused) then
      PesquisaCEP1.Click;
end;

procedure TfrmCadFilial.AtualizaTela;
begin
   //=============== Atulaliza a visualizacao dos daoados ================
   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;
end;

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

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

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

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

procedure TfrmCadFilial.sbtnGetCertClick(Sender: TObject);
begin
  inherited;
   {$IFNDEF ACBrNFeOpenSSL}
   DMNFE := TDMNFE.Create(Self);
   TbPrincipal.FieldByName('CERTIFICADO_DIGITAL').Value := DMNFE.NFe.SSL.SelecionarCertificado;
   DMNFE.Destroy;
   {$ENDIF}

end;

end.
