unit fcajas;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Data.DB,
  ZAbstractRODataset, ZAbstractDataset, ZDataset, Vcl.Grids, Vcl.DBGrids,
  Vcl.DBCtrls, Vcl.ComCtrls;

type
  Tcajas = class(TForm)
    Panel20: TPanel;
    Label47: TLabel;
    btenuevo: TButton;
    btesalir: TButton;
    Button9: TButton;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    DBGrid2: TDBGrid;
    dsqcajas: TDataSource;
    qcajas: TZQuery;
    qcajasid: TIntegerField;
    qcajasdescripcion: TWideStringField;
    qcajassaldo: TFloatField;
    dsqlineascaja: TDataSource;
    qlineascaja: TZQuery;
    qlineascajaid: TIntegerField;
    qlineascajaidcaja: TIntegerField;
    qlineascajafecha: TDateField;
    qlineascajaconcepto: TWideStringField;
    qlineascajaentrada_efectivo: TFloatField;
    qlineascajasalida: TFloatField;
    qlineascajaentrada_otros: TFloatField;
    Panel3: TPanel;
    Button1: TButton;
    Button2: TButton;
    qimportesdia: TZReadOnlyQuery;
    qimportesdiaefectivo: TFloatField;
    qimportesdiatarjeta: TFloatField;
    qimportesdiaingreso: TFloatField;
    qimportesdiadomiciliado: TFloatField;
    vfecha: TDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    dsqimportesdia: TDataSource;
    DBText1: TDBText;
    DBText2: TDBText;
    qlineascajasaldo_inicial: TFloatField;
    qlineascajasaldo_final: TFloatField;
    procedure qlineascajaBeforeOpen(DataSet: TDataSet);
    procedure dsqcajasDataChange(Sender: TObject; Field: TField);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure qlineascajaBeforePost(DataSet: TDataSet);
    procedure qlineascajaAfterPost(DataSet: TDataSet);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
    procedure qlineascajaAfterDelete(DataSet: TDataSet);
    procedure btenuevoClick(Sender: TObject);
    procedure qcajasAfterPost(DataSet: TDataSet);
    procedure qimportesdiaBeforeOpen(DataSet: TDataSet);
    procedure vfechaChange(Sender: TObject);
    procedure qlineascajaAfterInsert(DataSet: TDataSet);
    procedure btesalirClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  cajas: Tcajas;

implementation

{$R *.dfm}
uses principal,datos, fdlgcajas;
procedure Tcajas.btenuevoClick(Sender: TObject);
begin
   dbgrid1.SetFocus;
   qcajas.Append;
end;

procedure Tcajas.btesalirClick(Sender: TObject);
begin
  close;
end;

procedure Tcajas.Button1Click(Sender: TObject);
begin
    dlgcajas := Tdlgcajas.Create(nil);
    try
      qlineascaja.Append;
      dlgcajas.vfecha.Date:=Date();
      dlgcajas.eefectivo.text:=qimportesdiaefectivo.AsString;
      dlgcajas.etarjeta.text:=qimportesdiatarjeta.AsString;
      dlgcajas.showmodal();
    finally
      qlineascajaidcaja.Value:=qcajasid.AsInteger;
      qlineascajasaldo_inicial.value:=qcajassaldo.AsFloat;
      qlineascajaentrada_efectivo.value:=strtofloat(dlgcajas.eefectivo.text);
      qlineascajaentrada_otros.value:=strtofloat(dlgcajas.etarjeta.text);
      qlineascajafecha.value:=dlgcajas.vfecha.date;
      qlineascajaconcepto.value:=dlgcajas.econcepto.text;
      qlineascaja.post;
      dlgcajas.Free;
    end;
    qlineascaja.refresh;
end;

procedure Tcajas.Button2Click(Sender: TObject);
begin
    qlineascaja.Delete;
end;

procedure Tcajas.vfechaChange(Sender: TObject);
begin
   qimportesdia.Close;
   qimportesdia.Open;
end;

procedure Tcajas.dsqcajasDataChange(Sender: TObject; Field: TField);
begin
   qlineascaja.Close;
   qlineascaja.Open;
end;

procedure Tcajas.FormCreate(Sender: TObject);
begin
    qcajas.Open;
    vfecha.Date:=date;
end;

procedure Tcajas.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;
end;

procedure Tcajas.FormKeyPress(Sender: TObject; var Key: Char);
begin
    key:=upcase(key);
    if (key='.') and (activecontrol is tdbgrid) then
    begin
        key:=',';
    end;
end;

procedure Tcajas.qcajasAfterPost(DataSet: TDataSet);
begin
    btenuevo.SetFocus;
    Abort;
end;

procedure Tcajas.qimportesdiaBeforeOpen(DataSet: TDataSet);
begin
   qimportesdia.Prepare;
   qimportesdia.ParamByName('fecha').AsDate:=vfecha.Date;
end;

procedure Tcajas.qlineascajaAfterDelete(DataSet: TDataSet);
var caja:integer;
begin
    caja:=qcajasid.AsInteger;
    qcajas.Refresh;
    qcajas.Locate('id',caja,[locaseinsensitive]);
end;

procedure Tcajas.qlineascajaAfterInsert(DataSet: TDataSet);
begin
    qlineascajafecha.Value:=vfecha.Date;
    qlineascajaentrada_efectivo.Value:=qimportesdiaefectivo.asfloat;
    qlineascajaentrada_otros.Value:=qimportesdiatarjeta.AsFloat;
end;

procedure Tcajas.qlineascajaAfterPost(DataSet: TDataSet);
var caja:integer;
begin
    caja:=qcajasid.AsInteger;
    qcajas.Refresh;
    qcajas.Locate('id',caja,[locaseinsensitive]);
    button1.SetFocus;
    Abort;
end;

procedure Tcajas.qlineascajaBeforeOpen(DataSet: TDataSet);
begin
   qlineascaja.Prepare;
   qlineascaja.ParamByName('CAJA').AsInteger:=qcajasid.AsInteger;

end;

procedure Tcajas.qlineascajaBeforePost(DataSet: TDataSet);
begin
   qlineascajaidcaja.Value:=qcajasid.AsInteger;
end;

end.
