unit CadVendedor;

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, DBCtrls, IB_EditButton, System.ImageList;

type
  TfrmCadVendedor = class(TFrModeloCadastro)
    GroupBox1: TGroupBox;
    edtCep: TIB_Edit;
    edtComplemento: TIB_Edit;
    edtCidade: TIB_Edit;
    edtBairro: TIB_Edit;
    edtEndereco: TIB_Edit;
    edtNumero: TIB_Edit;
    edtNome: TIB_Edit;
    edtEmail: TIB_Edit;
    edtSkype: TIB_Edit;
    edtDataCad: TIB_Edit;
    edtSetor: TIB_LookupCombo;
    edtDataSaida: TIB_Date;
    qrSetor: TIB_Query;
    dsrSetor: TIB_DataSource;
    popSetor: TPopupMenu;
    CadastrarSetor1: TMenuItem;
    PesquisarSetor1: TMenuItem;
    popPesquisaCep: TPopupMenu;
    PesquisaCEP1: TMenuItem;
    edtPesquisaSetor: TBitBtn;
    edtcpf: TIB_Edit;
    IB_Edit1: TIB_Edit;
    IB_Edit2: TIB_Edit;
    IB_Edit3: TIB_Edit;
    qrUF: TIB_Query;
    dsrUF: TIB_DataSource;
    edtUF: TIB_LookupCombo;
    GroupBox2: TGroupBox;
    dbCodigo: TIB_Text;
    qryTabela: TIB_Query;
    dtTabela: TIB_DataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox3: TGroupBox;
    dbTabela: TIB_LookupCombo;
    BitBtn1: TBitBtn;
    IB_Edit4: TIB_Edit;
    dbAgencia: TIB_Edit;
    dbConta: TIB_Edit;
    dbOperacao: TIB_Edit;
    dbFavorecido: TIB_Edit;
    dbBanco: TIB_LookupCombo;
    btnPesquisaTipoConta: TBitBtn;
    btnNovoTipoConta: TBitBtn;
    qryBanco: TIB_Query;
    dtBanco: TIB_DataSource;
    IB_RadioGroup1: TIB_RadioGroup;
    procedure edtCepExit(Sender: TObject);
    procedure edtCepKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CadastrarSetor1Click(Sender: TObject);
    procedure PesquisarSetor1Click(Sender: TObject);
    procedure PesquisaCEP1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure edtSetorKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtSetorExit(Sender: TObject);
    procedure edtPesquisaSetorClick(Sender: TObject);
    procedure edtcpfExit(Sender: TObject);
    procedure dbTabelaExit(Sender: TObject);
    procedure dbTabelaKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure btnEditar2Click(Sender: TObject);
    procedure btnPesquisaTipoContaClick(Sender: TObject);
    procedure btnNovoTipoContaClick(Sender: TObject);
  private
    procedure AtualizaTela;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadVendedor: TfrmCadVendedor;
  Tabela_Anterior:Integer;

implementation

uses DataModulo, CadSetor, ModeloPesquisa, Rotinas, cadBanco;

{$R *.dfm}

procedure TfrmCadVendedor.AtualizaTela;
begin
   //================= Atualiza a visualizacao Bancos ===========
   if not qryBanco.Locate('codigo',TbPrincipal.FieldByName('banco').Value , []) then
   begin
      if not qryBanco.Bof then
      begin
         qryBanco.First;
         qryBanco.Prior;
      end;
   end;


   //================= Atualiza a visualizacao dos dados ===========
   if not qrSetor.Locate('cod_setor',TbPrincipal.FieldByName('cod_setor').Value , []) then
   begin
      if not qrSetor.Bof then
      begin
         qrSetor.First;
         qrSetor.Prior;
      end;
   end;

   //================= Atualiza a visualizacao Tabela ===========
   if not qryTabela.Locate('cod_tabela',TbPrincipal.FieldByName('cod_tabela').Value , []) then
   begin
      if not qryTabela.Bof then
      begin
         qryTabela.First;
         qryTabela.Prior;
      end;
   end;

   //=============== 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 TfrmCadVendedor.edtCepExit(Sender: TObject);
begin
  inherited;
  if ValidarCep(edtCep.Text) = False then
  begin
    MessageDlg('CEP inválido', mtInformation, [mbOK], 0);
    edtCep.SetFocus;
    Exit;
  end;
  
  if edtEndereco.Text <> '' then
     Exit;

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

      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;

      except
   end;

end;
procedure TfrmCadVendedor.edtCepKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
      Exit;
   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (edtCep.Focused )then
      PesquisaCEP1.Click;

end;

procedure TfrmCadVendedor.CadastrarSetor1Click(Sender: TObject);
var cod : Integer;
begin
  inherited;
   frmCadSetor := TfrmCadSetor.Create(Application);
   frmCadSetor.OutraTela := True;
   frmCadSetor.BtInserir.Click;
   frmCadSetor.ShowModal;
   cod := frmCadSetor.TbPrincipal.FieldByName('COD_SETOR').Value;
   frmCadSetor.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
   qrSetor.RefreshAll;
   qrSetor.Locate('COD_SETOR',cod , []);
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadVendedor.PesquisarSetor1Click(Sender: TObject);
begin
  inherited;
   edtPesquisaSetor.Click;
end;

procedure TfrmCadVendedor.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;

   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadVendedor.FormCreate(Sender: TObject);
begin
   Gera_Codigo := True;
   Descricao_Unica:=True;
   Campo_Tabela:='NOME';
  inherited;
   qrSetor.Open;
   qrUF.Open;
   qryTabela.Open;
   qryBanco.Open;
end;

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

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

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

procedure TfrmCadVendedor.BtGravarClick(Sender: TObject);
begin
   if LimpaTexto(edtcpf.Text) = '' then
   begin
      MessageDlg('Informe o CPF do vendedor', mtWarning, [mbOK], 0);
      edtcpf.SetFocus;
      Exit;
   end;

   if Trim(edtNome.Text) = '' then
   begin
      MessageDlg('Informe o nome do vendedor', mtWarning, [mbOK], 0);
      edtNome.SetFocus;
      Exit;
   end;

   TbPrincipal.FieldByName('cod_setor').Value  := qrSetor.FieldByName('cod_setor').Value;
   TbPrincipal.FieldByName('cod_tabela').Value := qryTabela.FieldByName('cod_tabela').Value;
   TbPrincipal.FieldByName('banco').Value      := qryBanco.FieldByName('codigo').Value;

   if (Tabela_Anterior <> qryTabela.FieldByName('cod_tabela').AsInteger) and (Tabela_Anterior <> 0) then
   begin
     if (MessageDlg('A tabela padrão do vendedor foi modificada, '+#13+#10+'deseja alterar as tabelas dos clientes deste vendedor também?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
     begin
     Dados.script.SQL.Clear;
     Dados.script.SQL.Add(' UPDATE CLIENTE ');
     Dados.script.SQL.Add(' SET COD_TABELA = '+qryTabela.FieldByName('cod_tabela').AsString);
     Dados.script.SQL.Add(' WHERE COD_VENDEDOR = '+TbPrincipal.FieldByName('cod_vendedor').AsString);
     Dados.script.Execute;

     end;
   end;

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


  inherited;
end;

procedure TfrmCadVendedor.BtInserirClick(Sender: TObject);
begin
  inherited;
  Tabela_Anterior:=0;
  AtualizaTela;
  TbPrincipal.FieldByName('data_cadastro').Value := Date;
end;

procedure TfrmCadVendedor.edtSetorKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if TbPrincipal.State in [DssBrowse] then
      Exit;

   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (edtSetor.Focused)then
    PesquisarSetor1Click(SELF)

end;

procedure TfrmCadVendedor.edtSetorExit(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
   begin
      if not qrSetor.Locate('COD_SETOR',TbPrincipal.FieldByName('COD_SETOR').Value,[]) then
      begin
         if qrSetor.Bof then
         begin
            qrSetor.First;
            qrSetor.Prior;
         end;
      end;
   end;

end;

procedure TfrmCadVendedor.edtPesquisaSetorClick(
  Sender: TObject);
begin
  inherited;
   //==================== Pesquisa setores ============
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qrSetor;
   frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Setores';

   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qrSetor.Locate('COD_SETOR', frmModeloPesquisa.TbPrincipal.FieldByName('COD_SETOR').Value ,[]);
   end;

   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadVendedor.edtcpfExit(Sender: TObject);
var cpf , ERRO : string;

begin
   inherited;
   if TbPrincipal.State in [dssBrowse] then
      Exit;

   cpf := LimpaTexto(edtcpf.Text);
   if cpf  = '' then
      Exit;

   if ValidaCPF(cpf, ERRO ) = False then
   begin
      MessageDlg('O Cpf Informado não é válido', mtWarning, [mbOK], 0);
      edtcpf.SetFocus;
      Exit;
   end;

   qryPesquisa.Close;
   qryPesquisa.sql.Clear;
   qryPesquisa.sql.Add(' SELECT VENDEDOR.CPF_VENDEDOR FROM VENDEDOR ');
   qryPesquisa.sql.Add('WHERE VENDEDOR.CPF_VENDEDOR = :CPF ');
   qryPesquisa.ParamByName('CPF').Value := cpf;
   qryPesquisa.Open;

   if not qryPesquisa.IsEmpty then
   begin
      BtCancelar.Click;
      TbPrincipal.Locate('CPF_VENDEDOR' , cpf , [] )
   end;
   qryPesquisa.Close;
end;

procedure TfrmCadVendedor.dbTabelaExit(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
   begin
      if not qryTabela.Locate('COD_TABELA',TbPrincipal.FieldByName('COD_TABELA').Value,[]) then
      begin
         if qryTabela.Bof then
         begin
            qryTabela.First;
            qryTabela.Prior;
         end;
      end;
   end;

end;

procedure TfrmCadVendedor.dbTabelaKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if TbPrincipal.State in [DssBrowse] then
      Exit;

   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (dbTabela.Focused)then
    PesquisarSetor1Click(SELF)

end;

procedure TfrmCadVendedor.BitBtn1Click(Sender: TObject);
begin
  inherited;
   //==================== Pesquisa setores ============
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qryTabela;
   frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Tabelas';
   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qryTabela.Locate('COD_TABELA', frmModeloPesquisa.TbPrincipal.FieldByName('COD_TABELA').Value ,[]);

   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadVendedor.btnEditar2Click(Sender: TObject);
begin
  inherited;
  Tabela_Anterior:=tbPrincipal.fieldbyname('COD_TABELA').AsInteger;
end;

procedure TfrmCadVendedor.btnNovoTipoContaClick(Sender: TObject);
begin
  inherited;
   frmCadBanco := TfrmCadBanco.Create(Application);
   frmCadBanco.OutraTela := True;
   frmCadBanco.BtInserir.Click;
   frmCadBanco.ShowModal;
   frmCadBanco.Destroy;
   qryBanco.Close;
   qryBanco.Open;
   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadVendedor.btnPesquisaTipoContaClick(Sender: TObject);
begin
  inherited;
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qryBanco;
   frmModeloPesquisa.lblTitulo.Caption := 'Pesquisa Bancos';
   if frmModeloPesquisa.ShowModal = mrOk then
      qryBanco.Locate('BANCO' , frmModeloPesquisa.TbPrincipal.FieldByName('CODIGO').Value , []);
   frmModeloPesquisa.Destroy;

   Screen.OnActiveControlChange := TrocaCor;

end;

end.
