unit CadRota;
                                
interface

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

type
  TfrmCadRota = class(TFrModeloCadastro)
    edtDescricao: TIB_Edit;
    edtDestino: TIB_LookupCombo;
    edtOrigem: TIB_LookupCombo;
    qrOrigem: TIB_Query;
    qrDestino: TIB_Query;
    dsrDestino: TIB_DataSource;
    dsrOrigem: TIB_DataSource;
    GroupBox2: TGroupBox;
    edtCodigo: TIB_Edit;
    popDestino: TPopupMenu;
    CadastrarOrigens1: TMenuItem;
    PesquisarDestinos1: TMenuItem;
    edtFilialOrigem: TIB_LookupCombo;
    dsrFilialOrigem: TIB_DataSource;
    qrFilialOrigem: TIB_Query;
    edtFilialDestino: TIB_LookupCombo;
    qrFilialDestino: TIB_Query;
    dsrFilialDestino: TIB_DataSource;
    btnNovaOrigem: TBitBtn;
    btnPesquisaOrigem: TBitBtn;
    btnPesquisaDestino: TBitBtn;
    btnNovoDestino: TBitBtn;
    procedure BtGravarClick(Sender: TObject);
    procedure AtualizaTela;
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure btnVoltarClick(Sender: TObject);
    procedure BtExcluirClick(Sender: TObject);
    procedure btnEditar2Click(Sender: TObject);
    procedure edtOrigemExit(Sender: TObject);
    procedure edtDestinoExit(Sender: TObject);
    procedure CadastrarOrigens1Click(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
    procedure PesquisarDestinos1Click(Sender: TObject);
    procedure edtOrigemKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnPesquisaOrigemClick(Sender: TObject);
    procedure btnPesquisaDestinoClick(Sender: TObject);
    procedure btnNovaOrigemClick(Sender: TObject);
    procedure btnNovoDestinoClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadRota: TfrmCadRota;

implementation

uses DataModulo, cadDestino, ModeloPesquisa, Rotinas;

{$R *.dfm}

procedure TfrmCadRota.BtGravarClick(Sender: TObject);
begin
   if edtCodigo.Text = '' then
   begin
      MessageDlg('Informe o código', mtInformation, [mbOK], 0);
      edtCodigo.SetFocus;
      Exit;
   end;

   if edtDescricao.Text = '' then
   begin
      MessageDlg('Informe a descrição da rota', mtWarning, [mbOK], 0);
      edtDescricao.SetFocus;
      Exit;
   end;

   if edtOrigem.Text = '' then
   begin
      MessageDlg('Selecione uma origem', mtInformation, [mbOK], 0);
      edtOrigem.SetFocus;
      Exit;
   end;

   if edtDestino.Text = '' then
   begin
      MessageDlg('Selecione um destino', mtInformation, [mbOK], 0);
      edtDestino.SetFocus;
      Exit;
   end;

   if qrOrigem.FieldByName('COD_DESTINO').AsInteger = qrDestino.FieldByName('COD_DESTINO').AsInteger then
   begin
      MessageDlg('A origem e o destino não podem ser iguais', mtInformation, [mbOK], 0);
      edtOrigem.SetFocus;
      Exit;
   end;

   if edtFilialOrigem.Text = '' then
   begin
      MessageDlg('Informe a filial de origem', mtWarning, [mbOK], 0);
      edtFilialOrigem.SetFocus;
      Exit;
   end;

   if edtFilialDestino.Text = '' then
   begin
      MessageDlg('Informe a filial de destino', mtWarning, [mbOK], 0);
      edtFilialDestino.SetFocus;
      Exit;
   end;

   TbPrincipal.FieldByName('COD_ORIGEM').Value         := qrOrigem.FieldByName('COD_DESTINO').Value;
   TbPrincipal.FieldByName('COD_DESTINO').Value        := qrDestino.FieldByName('COD_DESTINO').Value;
   TbPrincipal.FieldByName('COD_FILIAL_ORIGEM').Value  := qrFilialOrigem.FieldByName('COD_FILIAL').Value;
   TbPrincipal.FieldByName('COD_FILIAL_DESTINO').Value := qrFilialDestino.FieldByName('COD_FILIAL').Value;
   TbPrincipal.FieldByName('cod_filial').Value := dados.qrFilial.FieldByName('COD_FILIAL').Value;

   if TbPrincipal.State in [dssInsert] then
      descricao_auditoria := 'CADASTROU A ROTA ' +TbPrincipal.FieldByName('COD_ROTA').AsString + ' '+TbPrincipal.FieldByName('DESCRICAO').AsString ;

   if TbPrincipal.State in [dssEdit] then
      descricao_auditoria := 'ALTEROU A ROTA ' +TbPrincipal.FieldByName('COD_ROTA').OldAsString + ' '+TbPrincipal.FieldByName('DESCRICAO').OldAsString ;

   inherited;
end;

procedure TfrmCadRota.AtualizaTela;
begin
   {============== Atualiza os campos para visualizacao ================}
   if not qrOrigem.Locate('COD_DESTINO',TbPrincipal.FieldByName('COD_ORIGEM').Value , [] ) then
   begin
      if not qrOrigem.Bof then
      begin
         qrOrigem.First;
         qrOrigem.Prior;
      end;
   end;

   if not qrDestino.Locate('COD_DESTINO', TbPrincipal.FieldByName('COD_DESTINO').Value , []) then
   begin
      if not qrDestino.Bof then
      begin
         qrDestino.First;
         qrDestino.Prior;
      end;
   end;

   if not qrFilialDestino.Locate('COD_FILIAL' , TbPrincipal.FieldByName('COD_FILIAL_DESTINO').Value , [] ) then
   begin
      if not qrFilialDestino.Bof then
      begin
         qrFilialDestino.First;
         qrFilialDestino.Prior;
      end;
   end;

   if not qrFilialOrigem.Locate('COD_FILIAL' , TbPrincipal.FieldByName('COD_FILIAL_ORIGEM').Value , [] ) then
   begin
      if not qrFilialOrigem.Bof then
      begin
         qrFilialOrigem.First;
         qrFilialOrigem.Prior;
      end;
   end;
end;

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

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

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

procedure TfrmCadRota.FormCreate(Sender: TObject);
begin
   Gera_Codigo  := True;

   inherited;
   Descricao_Unica  := True;
   Campo_Tabela := 'DESCRICAO';

   qrOrigem.Open;
   qrDestino.Open;

   qrFilialDestino.Open;
   qrFilialOrigem.Open;
end;

procedure TfrmCadRota.BtInserirClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
   try
      edtDescricao.SetFocus;
      except
   end;
end;

procedure TfrmCadRota.btnVoltarClick(Sender: TObject);
begin
  TbPrincipal.RefreshAll;
  inherited;

end;

procedure TfrmCadRota.BtExcluirClick(Sender: TObject);
begin
   descricao_auditoria := 'EXCLUIU A ROTA ' +TbPrincipal.FieldByName('COD_ROTA').AsString + ' '+TbPrincipal.FieldByName('DESCRICAO').AsString ;
   inherited;

end;

procedure TfrmCadRota.btnEditar2Click(Sender: TObject);
begin
  inherited;
   edtDescricao.SetFocus;
end;

procedure TfrmCadRota.edtOrigemExit(Sender: TObject);
begin
   inherited;
   if TbPrincipal.State in [dssbrowse] then
      AtualizaTela;
end;

procedure TfrmCadRota.edtDestinoExit(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssbrowse] then
      AtualizaTela;

end;

procedure TfrmCadRota.CadastrarOrigens1Click(Sender: TObject);
var codorigem , codDestino : Integer;
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
      Exit;

   codDestino := qrDestino.FieldByName('COD_DESTINO').Value;
   codorigem  := qrOrigem.FieldByName('COD_DESTINO').Value;
   frmCadDestino := TfrmCadDestino.Create(Application);
   frmCadDestino.OutraTela := True;
   frmCadDestino.BtInserir.Click;
   frmCadDestino.ShowModal;

   if edtDestino.Focused then
      codDestino := frmCadDestino.TbPrincipal.FieldByName('COD_DESTINO').Value;

   if edtOrigem.Focused then
      codorigem := frmCadDestino.TbPrincipal.FieldByName('COD_DESTINO').Value;

   frmCadDestino.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
   qrOrigem.RefreshAll;
   qrDestino.RefreshAll;

   qrOrigem.Locate('COD_DESTINO',codorigem,[]);
   qrDestino.Locate('COD_DESTINO',codDestino,[]);
end;

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

procedure TfrmCadRota.PesquisarDestinos1Click(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
      Exit;
   //==================== pesquisa Destinos ============
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   if edtDestino.Focused then
   begin
      frmModeloPesquisa.Tabela := qrDestino;
      frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Destinos';
   end;
   if edtOrigem.Focused then
   begin
      frmModeloPesquisa.Tabela := qrOrigem;
      frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Origens';
   end;

   if frmModeloPesquisa.ShowModal = mrok then
   begin
      if edtOrigem.Focused then
         qrOrigem.Locate('COD_DESTINO', frmModeloPesquisa.TbPrincipal.FieldByName('COD_DESTINO').Value ,[]);

      if edtDestino.Focused then
         qrDestino.Locate('COD_DESTINO', frmModeloPesquisa.TbPrincipal.FieldByName('COD_DESTINO').Value ,[]);

   end;

   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadRota.edtOrigemKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   inherited;
   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (edtDestino.Focused or edtOrigem.Focused) then
    PesquisarDestinos1Click(Self);
end;

procedure TfrmCadRota.btnPesquisaOrigemClick(Sender: TObject);
begin
  inherited;
   //==================== Pesquisa Origens  ============
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qrOrigem;
   frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Origem';
   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qrOrigem.Locate('COD_DESTINO', frmModeloPesquisa.TbPrincipal.FieldByName('COD_DESTINO').Value ,[]);
      edtOrigem.Text := qrOrigem.FieldByName('APELIDO').AsString;
   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadRota.btnPesquisaDestinoClick(Sender: TObject);
begin
  inherited;
   //==================== Pesquisa Destino  ============
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qrDestino;
   frmModeloPesquisa.lbltitulo.Caption := 'Pesquisa Destino';
   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qrDestino.Locate('COD_DESTINO', frmModeloPesquisa.TbPrincipal.FieldByName('COD_DESTINO').Value ,[]);
      edtDestino.Text := qrDestino.FieldByName('APELIDO').AsString;
   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadRota.btnNovaOrigemClick(Sender: TObject);
begin
  inherited;
  frmCadDestino := TfrmCadDestino.Create(Application);
  frmCadDestino.OutraTela := True;
  frmCadDestino.BtInserirClick(Self);
  frmCadDestino.ShowModal;

   //============== Localiza o Novo Destino cadastrado ============

  TbPrincipal.FieldByName('COD_ORIGEM').Value:=frmCadDestino.TbPrincipal.FieldByName('COD_DESTINO').Value;
  frmCadDestino.Destroy;
  qrOrigem.RefreshAll;
  AtualizaTela;
  Screen.OnActiveControlChange := TrocaCor;

end;

procedure TfrmCadRota.btnNovoDestinoClick(Sender: TObject);
begin
  inherited;
  frmCadDestino := TfrmCadDestino.Create(Application);
  frmCadDestino.OutraTela := True;
  frmCadDestino.BtInserirClick(Self);
  frmCadDestino.ShowModal;

   //============== Localiza o Novo Destino cadastrado ============

  TbPrincipal.FieldByName('COD_DESTINO').Value:=frmCadDestino.TbPrincipal.FieldByName('COD_DESTINO').Value;
  frmCadDestino.Destroy;
  qrDestino.RefreshAll;
  AtualizaTela;
  Screen.OnActiveControlChange := TrocaCor;
end;

end.
