unit UCaixa;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, DB, Grids, DBGrids, ExtCtrls, Buttons,
  ComCtrls, ActnList;

type
  TFCaixa = class(TForm)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    DsRecebimento: TDataSource;
    Panel2: TPanel;
    DBTotal: TDBText;
    DsCaixa: TDataSource;
    GroupBox1: TGroupBox;
    Data1: TDateTimePicker;
    Data2: TDateTimePicker;
    SpeedButton2: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton1: TSpeedButton;
    SpeedButton3: TSpeedButton;
    ActionList1: TActionList;
    Totalizar: TAction;
    Label1: TLabel;
    LbData: TLabel;
    Label2: TLabel;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SomaFiltro: TAction;
    SpeedButton8: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton2Click(Sender: TObject);
    procedure TotalizarExecute(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SomaFiltroExecute(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCaixa: TFCaixa;

implementation
uses
  Udatamodulo, UImpCaixa, UResumoCaixa;

{$R *.dfm}

procedure TFCaixa.FormCreate(Sender: TObject);
begin
  Modulo.TbRecebimentos.Open;
   Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbCaixa.Open;
  Data1.date:=Date;
  Data2.date:=Date;
  
end;

procedure TFCaixa.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Modulo.TbRecebimentos.Close;
  if Modulo.TbCaixa.Active then
    Modulo.TbCaixa.Close;
end;

procedure TFCaixa.SpeedButton2Click(Sender: TObject);
begin
   if Modulo.TbCaixa.Locate('Data',DateToStr(now),[]) then
   begin
     Modulo.TbCaixa.Edit;
     Modulo.TbRecebimentos.Filtered:=False;
     Modulo.TbRecebimentos.Refresh;
     Modulo.TbRecebimentos.Filter:='Data='''+DateToStr(now)+'''';
     Modulo.TbRecebimentos.Filtered:=True;
     TotalizarExecute(self);
   end
   else
   begin
     with Modulo.Query1 do
     begin
       Close;
       Sql.Clear;
       Sql.Add('Select max(Codigo) as Codigo from TbCaixa');
       open;
     end;
     Modulo.TbCaixa.Refresh;
     Modulo.TbCaixa.Insert;

     if Modulo.Query1['Codigo']<>null then
       Modulo.TbCaixa['Codigo']:= Modulo.Query1['Codigo']+1
     else
       Modulo.TbCaixa['Codigo']:='1';

     Modulo.TbCaixa['Data']:=DateToStr(now);
     TotalizarExecute(Self);
   end;
    Modulo.TbCaixa.Edit;
    Modulo.TbCaixa.Post;
    LbData.Caption:=DateToStr(Now);

end;
procedure TFCaixa.TotalizarExecute(Sender: TObject);
var
bookmark : tbookmarkstr;
begin
  bookmark := Modulo.TBRecebimentos.Bookmark;
  Modulo.TbCaixa['Total']:=0;
  try
    Modulo.TBRecebimentos.DisableControls;
    try
      Modulo.TBRecebimentos.First;
      while not Modulo.TBRecebimentos.Eof do
      begin
        Modulo.TbCaixa['Total']:=Modulo.TbCaixa['Total']+(Modulo.TbRecebimentos['Valor']);
        Modulo.TBRecebimentos.next;
      end;
    finally
      Modulo.TBRecebimentos.EnableControls;
    end;
  finally
    Modulo.TBRecebimentos.Bookmark := bookmark;
  end;
end;
procedure TFCaixa.SpeedButton3Click(Sender: TObject);
begin
  Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbRecebimentos.Refresh;
end;

procedure TFCaixa.SpeedButton4Click(Sender: TObject);
begin
  try
    if Application.MessageBox('Deseja mesmo imprimir o Resumo do Caixa',
                                  'Imprimir?',0+4+32)= 6 then
    begin
      Application.CreateForm(TFImpcaixa,FImpCaixa);
      FImpCaixa.QuickRep1.Print;
    end
    else
      Abort;
      
  finally
    FImpCaixa.free;
  end;
end;
procedure TFCaixa.SpeedButton1Click(Sender: TObject);
begin
  Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbRecebimentos.Refresh;
  Modulo.TbRecebimentos.Filter:='Data>='''+DateToStr(Data1.Date)+
                        '''and Data<='''+DateToStr(Data2.Date)+'''';
  Modulo.TbRecebimentos.Filtered:=True;
  SomaFiltroExecute(Self);
end;
procedure TFCaixa.SpeedButton5Click(Sender: TObject);
begin
  Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbRecebimentos.Refresh;
  Modulo.TbRecebimentos.Filter:='Natureza='''+'Particular'+''' and Data>='''+
                            DateToStr(Data1.Date)+'''and Data<='''+
                            DateToStr(Data2.Date)+'''';
  Modulo.TbRecebimentos.Filtered:=True;
  SomaFiltroExecute(Self);
end;

procedure TFCaixa.SomaFiltroExecute(Sender: TObject);
Var
Total:Currency;
BookMark:TBookmarkStr;
begin
  BookMark:=Modulo.TbRecebimentos.Bookmark;
  Modulo.TbRecebimentos.DisableControls;
  Modulo.TbRecebimentos.First;
  Total:=0;
  BooKmark:=Modulo.TbRecebimentos.Bookmark;
  while not Modulo.TbRecebimentos.eof do
  begin
    Total:=Total+Modulo.TbRecebimentosValor.Value;
    Modulo.TbRecebimentos.Next;
  end;
  DBTotal.Caption:='R$'+Format('%8f' ,[Total]);
  LbData.Caption:='De: '+DateToStr(Data1.Date)+' A: '+DateToStr(Data2.Date);
  Modulo.TbRecebimentos.EnableControls;
  Modulo.TbRecebimentos.Bookmark:=BookMark;
end;

procedure TFCaixa.SpeedButton6Click(Sender: TObject);
begin
  Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbRecebimentos.Refresh;
  Modulo.TbRecebimentos.Filter:='Natureza='''+'Convênio'+''' and Data>='''+
                           DateToStr(Data1.Date)+'''and Data<='''+
                           DateToStr(Data1.Date)+'''';
  Modulo.TbRecebimentos.Filtered:=True;
  SomaFiltroExecute(Self);
end;

procedure TFCaixa.SpeedButton7Click(Sender: TObject);
begin
  Modulo.TbRecebimentos.Filtered:=False;
  Modulo.TbRecebimentos.Refresh;
  Modulo.TbRecebimentos.Filter:='Natureza='''+'Pré-Pago'+''' and Data>='''+
                            DateToStr(Data1.Date)+'''and Data<='''+
                            DateToStr(Data2.Date)+'''';
  Modulo.TbRecebimentos.Filtered:=True;
  SomaFiltroExecute(Self);
end;

procedure TFCaixa.SpeedButton8Click(Sender: TObject);
begin
  Application.CreateForm(TFResumo, FResumo);
  FResumo.ShowModal;
  FResumo.Release;
end;

end.
