unit cfgarticulos;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ZAbstractDataset, ZDataset, Data.DB,
  ZAbstractRODataset, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Vcl.StdCtrls,
  Vcl.DBCtrls;

type
  Tfcfgarticulos = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel4: TPanel;
    Panel3: TPanel;
    Panel5: TPanel;
    Panel7: TPanel;
    DBGrid1: TDBGrid;
    qprocesos: TZReadOnlyQuery;
    qmaterias_primas: TZReadOnlyQuery;
    dsqprocesos: TDataSource;
    Panel6: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    DBGrid2: TDBGrid;
    qmaterias_primasid: TWideStringField;
    qmaterias_primasdescripcion: TWideStringField;
    qmaterias_primasobservaciones: TWideStringField;
    dsqmateriasprimas: TDataSource;
    Panel10: TPanel;
    DBGrid3: TDBGrid;
    Panel11: TPanel;
    DBGrid4: TDBGrid;
    qarticulosproceso: TZQuery;
    qescandallo: TZQuery;
    dsqarticulosproceso: TDataSource;
    dsqescandallo: TDataSource;
    dsqarticulo: TDataSource;
    qarticulo: TZReadOnlyQuery;
    DBText1: TDBText;
    qarticuloide: TWideStringField;
    qarticuloid: TWideStringField;
    qarticulodescripcion: TWideStringField;
    qarticuloobservaciones: TWideStringField;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    qescandalloide: TWideStringField;
    qescandalloida: TWideStringField;
    qescandalloidmateriaprima: TWideStringField;
    qescandallocantidad: TFloatField;
    qaux: TZReadOnlyQuery;
    qprocesosid: TIntegerField;
    qprocesosdescripcion: TWideStringField;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    qarticulosprocesoide: TWideStringField;
    qarticulosprocesoida: TWideStringField;
    qarticulosprocesoidproceso: TIntegerField;
    qarticulosprocesoorden: TIntegerField;
    qescandallodescripcion: TWideStringField;
    qarticulosprocesodescripcion: TWideStringField;
    qescandallounidades: TWideStringField;
    Label5: TLabel;
    lbuscar: TEdit;
    qmaterias_primases_tiempo: TIntegerField;
    Button5: TButton;
    Button6: TButton;
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure DBGrid3TitleClick(Column: TColumn);
    procedure DBGrid4TitleClick(Column: TColumn);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure qarticulosprocesoBeforePost(DataSet: TDataSet);
    procedure qescandalloBeforePost(DataSet: TDataSet);
    procedure qarticulosprocesoBeforeDelete(DataSet: TDataSet);
    procedure qescandalloBeforeDelete(DataSet: TDataSet);
    procedure qescandalloAfterPost(DataSet: TDataSet);
    procedure lbuscarChange(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fcfgarticulos: Tfcfgarticulos;

implementation

{$R *.dfm}

uses datos, materias_primas, copiarconfiguracion;

procedure Tfcfgarticulos.Button1Click(Sender: TObject);
begin
    qarticulosproceso.Delete;
    qprocesos.Refresh;
end;

procedure Tfcfgarticulos.Button2Click(Sender: TObject);
var vorden:integer;
begin
    qaux.sql.Clear;
    qaux.SQL.Add('select max(orden) from articulos_procesos where ide='+qarticuloide.asstring+' and ida='+''''+qarticuloid.AsString+'''');
    qaux.open;
    if qaux.Fields[0].AsInteger>=0 then vorden:=1+qaux.Fields[0].AsInteger else vorden:=1;
    qarticulosproceso.Append;
    qarticulosprocesoide.Value:=qarticuloide.asstring;
    qarticulosprocesoida.Value:=qarticuloid.asstring;
    qarticulosprocesoidproceso.Value:=qprocesosid.asinteger;
    qarticulosprocesodescripcion.Value:=qprocesosdescripcion.asstring;
    qarticulosprocesoorden.Value:=vorden;
    qarticulosproceso.post;
    qprocesos.Refresh;
end;

procedure Tfcfgarticulos.Button3Click(Sender: TObject);
begin
    qescandallo.Append;
    qescandalloide.Value:=qarticuloide.asstring;
    qescandalloida.Value:=qarticuloid.asstring;
    qescandalloidmateriaprima.Value:=qmaterias_primasid.asstring;
    qescandallodescripcion.Value:=qmaterias_primasdescripcion.asstring;
    qescandallocantidad.Value:=0;
    dbgrid2.SetFocus;
    dbgrid2.SelectedIndex:=2;

end;

procedure Tfcfgarticulos.Button4Click(Sender: TObject);
begin
    qescandallo.Delete;
    qmaterias_primas.Refresh;
end;

procedure Tfcfgarticulos.Button5Click(Sender: TObject);
begin
    fmaterias_primas := Tfmaterias_primas.Create(nil);
    try
      fmaterias_primas.showmodal();
    finally
      fmaterias_primas.Free;
      qmaterias_primas.Refresh;
    end;
end;

procedure Tfcfgarticulos.Button6Click(Sender: TObject);
begin
    fcopiarconfiguracion := Tfcopiarconfiguracion.Create(nil);
    try
      fcopiarconfiguracion.lbuscar.Text:=qarticuloid.asstring;
      fcopiarconfiguracion.qarticulosproceso.prepare;
      fcopiarconfiguracion.qarticulosproceso.ParamByName('EMPRESA').asstring:=qarticuloide.asstring;
      fcopiarconfiguracion.qarticulosproceso.ParamByName('ARTICULO').asstring:=qarticuloid.asstring;
      fcopiarconfiguracion.qarticulosproceso.Open;

      fcopiarconfiguracion.qescandallo.prepare;
      fcopiarconfiguracion.qescandallo.ParamByName('EMPRESA').asstring:=qarticuloide.asstring;
      fcopiarconfiguracion.qescandallo.ParamByName('ARTICULO').asstring:=qarticuloid.asstring;
      fcopiarconfiguracion.qescandallo.Open;
      fcopiarconfiguracion.ShowModal;
    finally
      fcopiarconfiguracion.Free;
      qarticulosproceso.Refresh;
      qescandallo.Refresh;
    end;
end;

procedure Tfcfgarticulos.DBGrid3TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qprocesos.SortType;
  qprocesos.SortedFields:=Column.FieldName;
  If st = stAscending then qprocesos.SortType:=stDescending else qprocesos.SortType:=stAscending;
  dsqprocesos.DataSet.First;
end;

procedure Tfcfgarticulos.DBGrid4TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qmaterias_primas.SortType;
  qmaterias_primas.SortedFields:=Column.FieldName;
  If st = stAscending then qmaterias_primas.SortType:=stDescending else qmaterias_primas.SortType:=stAscending;
  dsqmateriasprimas.DataSet.First;
end;

procedure Tfcfgarticulos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then  Key :=9;
    end;
end;

procedure Tfcfgarticulos.FormShow(Sender: TObject);
var vbuscar:string;
begin
    qarticulo.Open;
    qprocesos.Open;
    qmaterias_primas.Open;
    qarticulosproceso.open;
    qescandallo.Open;
end;

procedure Tfcfgarticulos.lbuscarChange(Sender: TObject);
var vbuscar:string;
begin
    qmaterias_primas.Close;
    qmaterias_primas.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar.Text+'%';
    qmaterias_primas.ParamByName('PIDE').Asstring:=qarticuloide.AsString;
    qmaterias_primas.ParamByName('PIDA').Asstring:=qarticuloid.AsString;
    qmaterias_primas.ParamByName('TEXTO').AsString:=vbuscar;
    qmaterias_primas.Open;
end;

procedure Tfcfgarticulos.qarticulosprocesoBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar este proceso?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tfcfgarticulos.qarticulosprocesoBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qarticulosproceso.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta este proceso?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar este proceso?',true,true,true);
    case x of
        mrno: begin
                 qarticulosproceso.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 qarticulosproceso.cancel;
                 abort;
                 END;

    end;
end;

procedure Tfcfgarticulos.qescandalloAfterPost(DataSet: TDataSet);
begin
    qmaterias_primas.Refresh;
end;

procedure Tfcfgarticulos.qescandalloBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar este componente?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tfcfgarticulos.qescandalloBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qescandallo.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta este componente?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar este componente?',true,true,true);
    case x of
        mrno: begin
                 qescandallo.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 qescandallo.cancel;
                 abort;
                 END;

    end;
end;

end.
