unit frm_CalidadRegistrosList;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, frm_BaseList, Data.DB,
  Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Buttons, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls,
  FireDAC.Comp.Client, dmg_Calidad, dmg_Main;

type
  TfrmCalidadRegistrosList = class(TfrmBaseList)
    procedure FormCreate(Sender: TObject);
    procedure btnRefreshClick(Sender: TObject); override;
    procedure btnNewClick(Sender: TObject); override;
    procedure btnEditClick(Sender: TObject); override;
    procedure btnDeleteClick(Sender: TObject); override;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCalidadRegistrosList: TfrmCalidadRegistrosList;

implementation

{$R *.dfm}

uses
  frm_CalidadRegistroEditor;

procedure TfrmCalidadRegistrosList.FormCreate(Sender: TObject);
begin
  inherited;
  DateFilterField := 'fecha';
  StatusFilterField := 'estado_evaluacion';
  
  if not Assigned(dmgCalidad) then
    Application.CreateForm(TdmgCalidad, dmgCalidad);
    
  FQryMain := dmgCalidad.qryRegistrosCab;
  dsMain.DataSet := FQryMain;
end;

procedure TfrmCalidadRegistrosList.btnRefreshClick(Sender: TObject);
begin
  if Assigned(FQryMain) then
  begin
    FQryMain.Close;
    FQryMain.Open;
  end;
  inherited;
end;

procedure TfrmCalidadRegistrosList.btnNewClick(Sender: TObject);
var
  LEditor: TfrmCalidadRegistroEditor;
begin
  LEditor := TfrmCalidadRegistroEditor.Create(Self);
  try
    LEditor.RegistroId := 0;
    if LEditor.ShowModal = mrOk then
      btnRefreshClick(nil);
  finally
    LEditor.Free;
  end;
end;

procedure TfrmCalidadRegistrosList.btnEditClick(Sender: TObject);
var
  LEditor: TfrmCalidadRegistroEditor;
  LId: Integer;
begin
  if not Assigned(FQryMain) or FQryMain.IsEmpty then Exit;
  
  LId := FQryMain.FieldByName('id').AsInteger;
  LEditor := TfrmCalidadRegistroEditor.Create(Self);
  try
    LEditor.RegistroId := LId;
    if LEditor.ShowModal = mrOk then
      btnRefreshClick(nil);
  finally
    LEditor.Free;
  end;
end;

procedure TfrmCalidadRegistrosList.btnDeleteClick(Sender: TObject);
var
  LId: Integer;
begin
  if not Assigned(FQryMain) or FQryMain.IsEmpty then Exit;
  
  if MessageDlg('¿Está seguro de eliminar esta hoja de registro de inocuidad alimentaria?',
                mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    LId := FQryMain.FieldByName('id').AsInteger;
    dmgCalidad.qryExecCalidad.Close;
    dmgCalidad.qryExecCalidad.SQL.Text := 'DELETE FROM ge_calidad_registros_cab WHERE id = :id';
    dmgCalidad.qryExecCalidad.ParamByName('id').AsInteger := LId;
    dmgCalidad.qryExecCalidad.ExecSQL;
    btnRefreshClick(nil);
  end;
end;

end.
