unit CadCheque;

interface

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

type
  TfrmCadCheque = class(TFrModeloCadastro)
    IB_Edit5: TIB_Edit;
    Paginas_cheque: TPageControl;
    tabCheque: TTabSheet;
    dbNumero: TIB_Edit;
    dbCodBanco: TIB_Edit;
    dbNomeBanco: TIB_Edit;
    dbAgencia: TIB_Edit;
    dbConta: TIB_Edit;
    dbVencimento: TIB_Edit;
    dbValor: TIB_Edit;
    tabDetalhes: TTabSheet;
    dbObservacao: TIB_Memo;
    TabSheet2: TTabSheet;
    pnlMovimentacoes: TPanel;
    dbDataAcao: TIB_Edit;
    btnSalvaMovimento: TBitBtn;
    BitBtn2: TBitBtn;
    IB_LookupCombo1: TIB_LookupCombo;
    grdMovimentacao: TIB_Grid;
    GroupBox1: TGroupBox;
    edtResponsavel: TIB_Edit;
    IB_Edit7: TIB_Edit;
    IB_Edit8: TIB_Edit;
    IB_Edit6: TIB_Edit;
    Panel4: TPanel;
    qryMovimentacao: TIB_Query;
    dtMovimentacao: TIB_DataSource;
    qryTipoMovimento: TIB_Query;
    dtTipoMovimento: TIB_DataSource;
    qryBancos: TIB_Query;
    dtBancos: TIB_DataSource;
    btnAcrescimo: TBitBtn;
    btnRemoveMovimento: TBitBtn;
    IB_Memo1: TIB_Memo;
    dbUsuario: TIB_Edit;
    dbHora: TIB_Edit;
    qryUsuario: TIB_Query;
    dtUsuario: TIB_DataSource;
    imgPedido: TImage;
    imgConta: TImage;
    dbNumeroPedido: TIB_Edit;
    procedure FormCreate(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure btnAcrescimoClick(Sender: TObject);
    procedure btnSalvaMovimentoClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure dbCodBancoExit(Sender: TObject);
    procedure btnRemoveMovimentoClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure dbValorExit(Sender: TObject);
    procedure IB_Memo1KeyPress(Sender: TObject; var Key: Char);
    procedure dbObservacaoKeyPress(Sender: TObject; var Key: Char);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
  private
    procedure Mostratela;
    procedure TodoMovimento;
    function ExisteCheque: Boolean;
    { Private declarations }
  public
    ValorLancado:Real;
    { Public declarations }
  end;

var
  frmCadCheque: TfrmCadCheque;

implementation

uses DataModulo, ModeloPesquisa;

{$R *.dfm}

procedure TfrmCadCheque.FormCreate(Sender: TObject);
begin
  Gera_Codigo := True;
  Nome_Tabela:='CHEQUES_RECEBER';
  qryBancos.Open;
  qryUsuario.Open;
  TodoMovimento;
  MostraTela;
  inherited;
end;

procedure TfrmCadCheque.BtGravarClick(Sender: TObject);
begin
   if Trim(dbNumero.Text) = '' then
   begin
      MessageDlg('Informe o número do cheque', mtWarning, [mbOK], 0);
      dbNumero.SetFocus;
      Exit;
   end;

   if TbPrincipal.FieldByName('VALOR').Value  = 0 then
   begin
     MessageDlg('Informe o valor do cheque', mtWarning, [mbOK], 0);
     dbValor.SetFocus;
     Exit;
   end;

   if ( Trim(dbAgencia.Text) = '' ) or ( Trim(dbConta.Text) = '' ) then
   begin
      if MessageDlg('É aconselhavel informar o N° da conta e da Agência'+#13+#10+'Isso garante que o mesmo cheque não seja cadastrado'+#13+#10+'mais de uma vez.'+#13+#10+''+#13+#10+'Deseja Informar a Conta ou Agência agora?', mtConfirmation, [mbYes, mbNo], 0) = Mryes then
         Exit;
   end;

  if ((tbPrincipal.State in [DssInsert]) and ExisteCheque) then
  begin
    MessageDlg('Cheque já cadastrado', mtWarning, [mbOK], 0) ;
    ValorLancado:=tbPrincipal.fieldbyName('Valor').AsFloat;
    tbPrincipal.Cancel;
  end;

  if (tbPrincipal.State in [DssInsert]) then
  begin
    ValorLancado:=tbPrincipal.fieldbyName('Valor').AsFloat;
    tbPrincipal.PostRetaining;
    qryMovimentacao.Insert;
    qryMovimentacao.FieldByName('TIPO_MOVIMENTO').Value:=1;
    qryMovimentacao.FieldByName('USUARIO').Value:=Dados.qrUsuario.FieldByName('COD_USUARIO').Value;
    qryMovimentacao.FieldByName('DATA').Value:=Date;
    qryMovimentacao.FieldByName('CHEQUE').Value:=tbPrincipal.FieldByName('COD_CHEQUE').Value;
    qryMovimentacao.Post;
  end;

  inherited;
  MostraTela;
end;

procedure TfrmCadCheque.BtInserirClick(Sender: TObject);
begin
  inherited;
  TbPrincipal.FieldByName('DATA_CAD').Value := Date;
  TbPrincipal.FieldByName('HORA_CAD').Value := Time;
  TbPrincipal.FieldByName('cod_usuario').Value := Dados.qrUsuario.FieldByName('COD_USUARIO').Value;
  MostraTela;
  Paginas_cheque.ActivePage:=tabCheque;
  if NOT OutraTela then
    dbNumero.SetFocus;
end;

procedure TfrmCadCheque.btnAcrescimoClick(Sender: TObject);
begin
  inherited;
  grdMovimentacao.Height:=216;
  grdMovimentacao.Top:=95;
  pnlMovimentacoes.Visible:=True;

  qryTipoMovimento.Open;
  qryTipoMovimento.First;
  qryTipoMovimento.Prior;

  qryMovimentacao.ReadOnly:=False;
  qryMovimentacao.Insert;
  qryMovimentacao.FieldByName('USUARIO').Value:=dados.qrUsuario.FieldByName('COD_USUARIO').Value;
  qryMovimentacao.FieldByName('DATA').Value:=Date;
  qryMovimentacao.FieldByName('CHEQUE').Value:=TBPrincipal.FieldByName('COD_CHEQUE').Value;
  dbDataAcao.SetFocus;
end;

procedure TfrmCadCheque.btnSalvaMovimentoClick(Sender: TObject);
begin
  inherited;
  qryMovimentacao.FieldByName('TIPO_MOVIMENTO').Value:=qryTipoMovimento.FIeldByName('CODIGO').Value;
  qryMovimentacao.Post;
  qryMovimentacao.RefreshAll;
  TodoMovimento;
  MostraTela;
  qryMovimentacao.ReadOnly:=True;

end;

procedure TfrmCadCheque.BtProximoClick(Sender: TObject);
begin
  inherited;
  MostraTela
end;

procedure TfrmCadCheque.BitBtn2Click(Sender: TObject);
begin
  inherited;
  qryMovimentacao.Cancel;
  qryMovimentacao.ReadOnly:=True;
  TodoMovimento;

end;

procedure TfrmCadCheque.TodoMovimento;
begin
  grdMovimentacao.Height:=312;
  grdMovimentacao.Top:=0;
  pnlMovimentacoes.Visible:=False;
end;

procedure TfrmCadCheque.Mostratela;
begin
   if not qryUsuario.Locate('COD_USUARIO',TbPrincipal.FieldByName('COD_USUARIO').Value ,[]) then
   begin
      if not qryUsuario.Bof then
      begin
         qryUsuario.First;
         qryUsuario.Prior;
      end;
   end;

  if NOT qryBancos.Locate('CODIGO',tbPrincipal.FieldByName('COD_BANCO').Value,[])
  then
    begin
      if not qryBancos.Bof
      then
        begin
           qryBancos.First;
           qryBancos.Prior;
        end;
    end;

  qryMovimentacao.Close;
  qryMovimentacao.ParamByName('VARCHEQUE').Value:=tbPrincipal.FieldByName('COD_CHEQUE').Value;
  qryMovimentacao.Open;

  if TbPrincipal.FieldByName('COD_CONTA_RECEBER').IsNotNull then
    imgConta.Visible:=True
  else
    imgConta.Visible:=False;

end;
function TfrmCadCheque.ExisteCheque:Boolean;
begin
  qryPesquisa.Close;
  qryPesquisa.SQL.Clear;
  qryPesquisa.SQL.Add('SELECT * ');
  qryPesquisa.SQL.Add('  FROM CHEQUES_RECEBER');
  qryPesquisa.SQL.Add('  WHERE NUMERO=:VARNUMERO');
  qryPesquisa.SQL.Add('  AND COD_BANCO=:VARBANCO');
  qryPesquisa.SQL.Add('  AND CONTA=:VARCONTA');
  qryPesquisa.SQL.Add('  AND AGENCIA=:VARAGENCIA');

  qryPesquisa.ParamByName('VARNUMERO').Value:=tbPrincipal.FieldByName('NUMERO').Value;
  qryPesquisa.ParamByName('VARBANCO').Value:=tbPrincipal.FieldByName('COD_BANCO').Value;
  qryPesquisa.ParamByName('VARCONTA').Value:=tbPrincipal.FieldByName('CONTA').Value;
  qryPesquisa.ParamByName('VARAGENCIA').Value:=tbPrincipal.FieldByName('AGENCIA').Value;

  qryPesquisa.Open;

  if qryPesquisa.RecordCount > 0 then
    Result:=True
  else
    Result:=False;
end;


procedure TfrmCadCheque.dbCodBancoExit(Sender: TObject);
begin
  inherited;
  if NOT qryBancos.Locate('CODIGO',tbPrincipal.FieldByName('COD_BANCO').Value,[]) then
  begin
      ShowMessage('Banco não cadastrado!');
      dbCodBanco.Field.Clear;
      dbCodBanco.SetFocus;
  end;
end;

procedure TfrmCadCheque.btnRemoveMovimentoClick(Sender: TObject);
begin
  inherited;
  if (MessageDlg('Confirma a exclusão?', mtConfirmation, [mbYes, mbNo], 0) in [mrYes, mrNone]) then
    qryMovimentacao.Delete;
end;

procedure TfrmCadCheque.BtAnteriorClick(Sender: TObject);
begin
  inherited;
  MostraTela
end;

procedure TfrmCadCheque.BtCancelarClick(Sender: TObject);
begin
  inherited;
  MostraTela
end;

procedure TfrmCadCheque.BtEditarClick(Sender: TObject);
begin
  inherited;
  MostraTela;
end;

procedure TfrmCadCheque.dbValorExit(Sender: TObject);
begin
  inherited;
  Paginas_cheque.ActivePage:=  tabDetalhes;
  edtResponsavel.SetFocus;
end;

procedure TfrmCadCheque.IB_Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
   Key := UpCase(KEY);
end;

procedure TfrmCadCheque.dbObservacaoKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
   Key := UpCase(KEY);
end;

end.
