unit CadBordero;

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

type
  TfrmCadBordero = class(TFrModeloCadastro)
    IB_Edit5: TIB_Edit;
    Paginas_cheque: TPageControl;
    tabDetalhes: TTabSheet;
    dbObservacao: TIB_Memo;
    tabMovimentacao: TTabSheet;
    pnlMovimentacoes: TPanel;
    dbValor: TIB_Edit;
    btnSalvaMovimento: TBitBtn;
    BitBtn2: TBitBtn;
    dbFormaPagamento: TIB_LookupCombo;
    grdMovimentacao: TIB_Grid;
    qryUsuario: TIB_Query;
    dtUsuario: TIB_DataSource;
    pnlBotoesLancamento: TPanel;
    qryMovimentacao: TIB_Query;
    dtMovimentacao: TIB_DataSource;
    qryFormaPagamento: TIB_Query;
    dtFormaPagamento: TIB_DataSource;
    btnAcrescimo: TBitBtn;
    btnRemoveMovimento: TBitBtn;
    IB_Memo1: TIB_Memo;
    dbUsuario: TIB_Edit;
    IB_Edit1: TIB_Edit;
    lblDiferenca: TLabel;
    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 btnRemoveMovimentoClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure IB_Memo1KeyPress(Sender: TObject; var Key: Char);
    procedure dbObservacaoKeyPress(Sender: TObject; var Key: Char);
    function ExisteBordero(Conta:Integer): Boolean;
    procedure BtProximoClick(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
    procedure Mostratela;
  private
    procedure TodoMovimento;
    { Private declarations }
  public
    { Public declarations }
    ValorLancado, ValorReceber:Real;
    ObsCheque:String;
    Consultando:Boolean;
    Conta:Integer;
    Tabela:String;
  end;

var
  frmCadBordero: TfrmCadBordero;

implementation

uses DataModulo, ModeloPesquisa, CadCheque, CadContasReceber;

{$R *.dfm}

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

procedure TfrmCadBordero.BtGravarClick(Sender: TObject);
begin
   if qryMovimentacao.FieldByName('TOTAL_BORDERO').Value  = 0 then
   begin
     MessageDlg('Informe o valor do borderô', mtWarning, [mbOK], 0);
     dbValor.SetFocus;
     Exit;
   end;
  inherited;
  MostraTela;
end;

procedure TfrmCadBordero.BtInserirClick(Sender: TObject);
begin
  inherited;
  TbPrincipal.FieldByName('DATA_CADASTRO').Value  := Date;
  TbPrincipal.FieldByName('cod_usuario').Value    := Dados.qrUsuario.FieldByName('COD_USUARIO').Value;
  TbPrincipal.FieldByName('CONTA').Value          := Conta;
  MostraTela;
  Paginas_cheque.ActivePage:=tabMovimentacao;
  if NOT OutraTela then
    btnAcrescimo.SetFocus;
end;

procedure TfrmCadBordero.btnAcrescimoClick(Sender: TObject);
begin
  inherited;
  pnlBotoesLancamento.Visible:=False;
  pnlMovimentacoes.Visible:=True;
  grdMovimentacao.Height:=171;
  grdMovimentacao.top:=95;

  qryFormaPagamento.Open;
  qryFormaPagamento.First;
  qryFormaPagamento.Prior;

  qryMovimentacao.ReadOnly:=False;

  TbPrincipal.PostRetaining;
  qryMovimentacao.Insert;
  qryMovimentacao.FieldByName('COD_USUARIO').Value:=dados.qrUsuario.FieldByName('COD_USUARIO').Value;
  qryMovimentacao.FieldByName('DATA').Value       :=Date;
  qryMovimentacao.FieldByName('HORA').Value       :=Time;
  qryMovimentacao.FieldByName('COD_BORDERO').Value:=TBPrincipal.FieldByName('COD_BORDERO').Value;
  dbFormaPagamento.SetFocus;
end;

procedure TfrmCadBordero.btnSalvaMovimentoClick(Sender: TObject);
begin
  inherited;
  if qryFormaPagamento.FieldByName('DESCRICAO').AsString = 'CHEQUE' then
  begin
   frmCadCheque := TfrmCadCheque.Create(Application);
   frmCadCheque.OutraTela := True;
   frmCadCheque.BtInserirClick(Self);
   frmCadCheque.TbPrincipal.FieldByName('VALOR').Value := dbValor.Text;
   frmCadCheque.TbPrincipal.FieldByName('OBS').Value :=  ObsCheque+ ' Borderô:' + tbPrincipal.FieldbyName('COD_BORDERO').AsString;
   frmCadCheque.ShowModal;
   ValorLancado:=frmCadCheque.tbPrincipal.fieldbyName('Valor').AsFloat;
   frmCadCheque.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
  end;


  qryMovimentacao.FieldByName('COD_FORMA_PAGAMENTO').Value:=qryFormaPagamento.FIeldByName('COD_FORMA_PAGAMENTO').Value;
  qryMovimentacao.Post;
  qryMovimentacao.RefreshAll;
  TodoMovimento;
  MostraTela;
  qryMovimentacao.ReadOnly:=True;
  btnAcrescimo.SetFocus;
end;

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

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

end;

procedure TfrmCadBordero.TodoMovimento;
begin
  grdMovimentacao.Height:=312;
  grdMovimentacao.Top:=0;
  pnlMovimentacoes.Visible:=False;
  pnlBotoesLancamento.Visible:=True;

  ValorLancado:=qryMovimentacao.FieldByName('TOTAL_BORDERO').AsFloat;
  if ValorReceber > ValorLancado then
  begin
   lblDiferenca.Color:=ClRed;
   lblDiferenca.Caption:='Faltam: R$'+FormatarMoeda(FloatToSTr(ValorReceber-ValorLancado))
  end
  else
  if ValorReceber < ValorLancado then
  begin
   lblDiferenca.Color:=ClBlue;
   lblDiferenca.Caption:='Passou: R$'+FloatToSTr(ValorLancado-ValorReceber);
  end
  else
  begin
   lblDiferenca.Caption:='';
  end;

end;

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

  qryMovimentacao.Close;
  qryMovimentacao.ParamByName('VARBORDERO').Value:=tbPrincipal.FieldByName('COD_BORDERO').Value;
  qryMovimentacao.Open;

  if Consultando then
    pnlBotoesLancamento.Visible:=False
  else
    pnlBotoesLancamento.Visible:=True;


end;
function TfrmCadBordero.ExisteBordero(Conta:Integer):Boolean;
begin
  qryPesquisa.Close;
  qryPesquisa.SQL.Clear;
  qryPesquisa.SQL.Add('SELECT COD_BORDERO ');
  qryPesquisa.SQL.Add('  FROM BORDERO');
  qryPesquisa.SQL.Add('  WHERE CONTA =:VARNUMERO');

  qryPesquisa.ParamByName('VARNUMERO').Value:=Conta;

  qryPesquisa.Open;

  if qryPesquisa.RecordCount > 0 then
  begin
    Result:=True;
    TbPrincipal.Close;
    TbPrincipal.sqlwhere.clear;
    TbPrincipal.sqlwhere.add(' where BORDERO.COD_BORDERO = :VARNUMERO ');
    TbPrincipal.ParamByName('VARNUMERO').Value := qryPesquisa.FIeldbyName('COD_BORDERO').AsInteger;
    TbPrincipal.Open;
  end
  else
  begin
    Result:=False;
    TbPrincipal.Close;
    TbPrincipal.sqlwhere.clear;
    TbPrincipal.Open;

  end;
end;


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

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

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

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

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

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

end.
