unit frm_CalidadVerificacionDiaria;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
  Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, Data.DB, FireDAC.Comp.Client,
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error,
  FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Comp.DataSet,
  dmg_Calidad, dmg_Main;

type
  TfrmCalidadVerificacionDiaria = class(TForm)
    pnlTop: TPanel;
    lblFechaAuditoria: TLabel;
    dtpAuditoria: TDateTimePicker;
    btnCargar: TButton;
    pnlBottom: TPanel;
    btnFirmarTodo: TButton;
    dbgVerif: TDBGrid;
    dsVerif: TDataSource;
    qryVerif: TFDQuery;
    procedure FormShow(Sender: TObject);
    procedure btnCargarClick(Sender: TObject);
    procedure btnFirmarTodoClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCalidadVerificacionDiaria: TfrmCalidadVerificacionDiaria;

implementation

{$R *.dfm}

procedure TfrmCalidadVerificacionDiaria.FormShow(Sender: TObject);
begin
  dtpAuditoria.Date := Date;
  btnCargarClick(nil);
end;

procedure TfrmCalidadVerificacionDiaria.btnCargarClick(Sender: TObject);
begin
  qryVerif.Close;
  qryVerif.ParamByName('fecha').AsDate := dtpAuditoria.Date;
  qryVerif.Open;
end;

procedure TfrmCalidadVerificacionDiaria.btnFirmarTodoClick(Sender: TObject);
begin
  if qryVerif.IsEmpty then
  begin
    ShowMessage('No hay hojas de registro cargadas para esta fecha.');
    Exit;
  end;

  if MessageDlg('¿Confirma la firma electrónica y validación del cierre del día seleccionado por el Dpto. de Calidad?',
                mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    dmgCalidad.qryExecCalidad.Close;
    dmgCalidad.qryExecCalidad.SQL.Text :=
      'UPDATE ge_calidad_registros_cab SET ' +
      '  validado_calidad = 1, fecha_validacion = NOW(), id_usuario_calidad = 1 ' +
      'WHERE fecha = :fecha';
    dmgCalidad.qryExecCalidad.ParamByName('fecha').AsDate := dtpAuditoria.Date;
    dmgCalidad.qryExecCalidad.ExecSQL;
    
    ShowMessage('Cierre diario validado y firmado por el Responsable de Calidad.');
    btnCargarClick(nil);
  end;
end;

end.
