unit fenvases_almacen;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,principal,datosclientes,datos,
  Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids,
  Vcl.ExtCtrls,DATA.DB;

type
  Tenvases_almacen = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    todosarticulos: TCheckBox;
    tbuscar: TEdit;
    DBGrid1: TDBGrid;
    particulos: TPanel;
    pdatosarticulos: TPanel;
    Panel14: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label3: TLabel;
    DBCheckBox2: TDBCheckBox;
    DBEdit1: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit9: TDBEdit;
    DBMemo1: TDBMemo;
    Panel4: TPanel;
    Label36: TLabel;
    btEAcancelar: TButton;
    btEAmodificar: TButton;
    btEAborrar: TButton;
    btEAnuevo: TButton;
    btEAguardar: TButton;
    Detallesarticulos: TPageControl;
    TComponentes: TTabSheet;
    Panel10: TPanel;
    Label32: TLabel;
    DBGrid7: TDBGrid;
    DBEdit121: TDBEdit;
    Label213: TLabel;
    DBEdit120: TDBEdit;
    Label211: TLabel;
    DBEdit118: TDBEdit;
    DBCheckBox28: TDBCheckBox;
    DBCheckBox26: TDBCheckBox;
    DBCheckBox27: TDBCheckBox;
    DBCheckBox32: TDBCheckBox;
    qaux: TFDQuery;
    DBGrid2: TDBGrid;
    Panel3: TPanel;
    btALnuevo: TButton;
    btALborrar: TButton;
    Panel6: TPanel;
    Label7: TLabel;
    tbuscarcomponentes: TEdit;
    Label13: TLabel;
    DBEdit5: TDBEdit;
    Label14: TLabel;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure tbuscarChange(Sender: TObject);
    procedure todosarticulosClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btEAnuevoClick(Sender: TObject);
    procedure btEAborrarClick(Sender: TObject);
    procedure btEAmodificarClick(Sender: TObject);
    procedure btEAguardarClick(Sender: TObject);
    procedure btEAcancelarClick(Sender: TObject);
    procedure btALnuevoClick(Sender: TObject);
    procedure btALborrarClick(Sender: TObject);
    procedure tbuscarcomponentesChange(Sender: TObject);
    procedure todoscomponentesClick(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBEdit4Exit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  envases_almacen: Tenvases_almacen;

implementation

{$R *.dfm}

procedure Tenvases_almacen.btEAcancelarClick(Sender: TObject);
begin
    dm.dtarticulosalmacen.cancel;
    dm.dtarticulosalmacen.MasterSource:=dm.dsqarticulosalmacen;
end;

procedure Tenvases_almacen.btEAmodificarClick(Sender: TObject);
begin
   dm.dtarticulosalmacen.MasterSource:=nil;
   dm.dtarticulosalmacen.edit;
   dbedit1.SetFocus;
end;

procedure Tenvases_almacen.btALborrarClick(Sender: TObject);
var    observaciones:string;
begin
    dm.dtarticulos_componentes.Delete;
    dm.dtarticulos_componentes.Refresh;
    qaux.close;
    qaux.SQL.Clear;
    qaux.SQL.Add('select * from articulos_componentes where idempresa='+dm.dtarticulosalmacenide.Asstring+' and idarticuloalmacen='+dm.dtarticulosalmacenid.Asstring);
    qaux.open;
    qaux.First;
    observaciones:='LLEVA ';
    while not qaux.eof do
    begin
       observaciones:=observaciones+qaux.fields[4].asstring+' X '+qaux.fields[3].asstring+',';
       qaux.next;
    end;
    observaciones:=observaciones+' REVISADO EL '+datetostr(date());
    qaux.close;
    qaux.SQL.Clear;
    qaux.SQL.Add('select sum(peso),sum(coste) from articulos_componentes where idempresa='+dm.dtarticulosalmacenide.Asstring+' and idarticuloalmacen='+dm.dtarticulosalmacenid.Asstring);
    qaux.open;
    dm.dtarticulosalmacen.Edit;
    dm.dtarticulosalmacentara.Value:=qaux.Fields[0].AsFloat;
    dm.dtarticulosalmacencosto.Value:=qaux.Fields[1].AsFloat;
    dm.dtarticulosalmacenobservaciones.Value:=observaciones;
    dm.dtarticulosalmacen.Refresh;
end;

procedure Tenvases_almacen.btALnuevoClick(Sender: TObject);
var cantidad,idempresa,idarticuloalmacen,idarticulof:integer;
    observaciones:string;
begin
    qaux.SQL.Clear;
    qaux.SQL.Add('select * from articulos_componentes where idempresa='+dm.dtarticulosalmacenide.Asstring+' and idarticuloalmacen='+dm.dtarticulosalmacenid.Asstring+' and idarticulof='+dmclientes.qarticulosfinalid.Asstring);
    qaux.Open;
    if qaux.RecordCount>0 then
    begin
        cantidad:=qaux.Fields[4].AsInteger;
        idempresa:=qaux.Fields[0].AsInteger;
        idarticuloalmacen:=qaux.Fields[1].AsInteger;
        idarticulof:=qaux.Fields[2].AsInteger;
        dm.dtarticulos_componentes.Locate('idempresa;idarticuloalmacen;idarticulof',vararrayof([idempresa,idarticuloalmacen,idarticulof]),[locaseinsensitive]);
        dm.dtarticulos_componentes.edit;
        dm.dtarticulos_componentescantidad.Value:=cantidad+1;
//        dm.dtarticulos_componentescoste.value:=dm.dtarticulos_componentescantidad.AsFloat*dm.dtarticulos_componentespreciocoste.AsFloat;
//        dm.dtarticulos_componentespeso.value:=dm.dtarticulos_componentescantidad.AsFloat*dm.dtarticulos_componentespeso.AsFloat;

        dm.dtarticulos_componentes.Post;
    end else
    begin
        dm.dtarticulos_componentes.Append;
        dm.dtarticulos_componentesidempresa.Value:=dm.dtarticulosalmacenide.AsInteger;
        dm.dtarticulos_componentesidarticuloalmacen.Value:=dm.dtarticulosalmacenid.AsInteger;
        dm.dtarticulos_componentesidarticulof.Value:=dmclientes.qarticulosfinalid.AsInteger;
        dm.dtarticulos_componentesdescripcion.Value:=dmclientes.qarticulosfinaldescripcion.Asstring;
        dm.dtarticulos_componentespeso.Value:=dmclientes.qarticulosfinalpeso.Asfloat;
        dm.dtarticulos_componentescantidad.Value:=1;
//        dm.dtarticulos_componentespreciocoste.Value:=dmclientes.qarticulosfinalpreciocoste.Asfloat;
//        dm.dtarticulos_componentescoste.Value:=dm.dtarticulos_componentescantidad.AsFloat*dm.dtarticulos_componentespreciocoste.AsFloat;
        dm.dtarticulos_componentes.Post;
    end;
    qaux.close;
    qaux.SQL.Clear;
    qaux.SQL.Add('select * from articulos_componentes where idempresa='+dm.dtarticulosalmacenide.Asstring+' and idarticuloalmacen='+dm.dtarticulosalmacenid.Asstring);
    qaux.open;
    qaux.First;
    observaciones:='LLEVA ';
    while not qaux.eof do
    begin
       observaciones:=observaciones+qaux.fields[4].asstring+' X '+qaux.fields[3].asstring+',';
       qaux.next;
    end;
    observaciones:=observaciones+' REVISADO EL '+datetostr(date());
    qaux.close;
    qaux.SQL.Clear;
    qaux.SQL.Add('select sum(peso),sum(coste) from articulos_componentes where idempresa='+dm.dtarticulosalmacenide.Asstring+' and idarticuloalmacen='+dm.dtarticulosalmacenid.Asstring);
    qaux.open;
    dm.dtarticulosalmacen.Edit;
    dm.dtarticulosalmacentara.Value:=qaux.Fields[0].AsFloat;
    dm.dtarticulosalmacencosto.Value:=qaux.Fields[1].AsFloat;
    dm.dtarticulosalmacenobservaciones.Value:=observaciones;
    dm.dtarticulosalmacen.Refresh;
end;

procedure Tenvases_almacen.btEAborrarClick(Sender: TObject);
begin
    dm.dtarticulosalmacen.delete;
    dm.qarticulosalmacen.Refresh;
end;

procedure Tenvases_almacen.btEAnuevoClick(Sender: TObject);
begin
   qaux.SQL.Clear;
   qaux.SQL.Add('select max(id)+1 from articulos_almacen');
   qaux.Open;
   dm.dtarticulosalmacen.MasterSource:=nil;
   dm.dtarticulosalmacen.append;
   dm.dtarticulosalmacenactivo.Value:=1;
   dbedit1.SetFocus;
   dbedit1.Text:=qaux.Fields[0].AsString;

end;

procedure Tenvases_almacen.DBEdit4Exit(Sender: TObject);
begin
    dm.dtarticulosalmacendescripcion.Value:=dm.dtarticulosalmacendescripcion2.AsString;
end;

procedure Tenvases_almacen.DBGrid1TitleClick(Column: TColumn);
var
  st:TFDQuerySortType;
begin
  st:=dm.qarticulosalmacen.SortType;
  dm.qarticulosalmacen.SortedFields:=Column.FieldName;
  If st = stAscending then dm.qarticulosalmacen.SortType:=stDescending else dm.qarticulosalmacen.SortType:=stAscending;
  dm.dsqarticulosalmacen.DataSet.First;

end;

procedure Tenvases_almacen.todoscomponentesClick(Sender: TObject);
begin
{    if todoscomponentes.Checked=true then
    begin
        dmclientes.vertodos:=1;
        dmclientes.qarticulosfinal.Close;
        dmclientes.qarticulosfinal.SQL.Clear;
        dmclientes.qarticulosfinal.SQL.add('select * from articulosf order by descripcion asc');
        dmclientes.qarticulosfinal.Open;
    end else
    begin
        dmclientes.vertodos:=0;
        dmclientes.qarticulosfinal.Close;
        dmclientes.qarticulosfinal.SQL.Clear;
        dmclientes.qarticulosfinal.SQL.add('select * from articulosf where activo=1 order by descripcion asc');
        dmclientes.qarticulosfinal.Open;
    end;}
end;

procedure Tenvases_almacen.tbuscarcomponentesChange(Sender: TObject);
begin
    dmclientes.filtro:='%'+tbuscarcomponentes.Text+'%';
    dmclientes.vertodosmateriales:=0;
    dmclientes.qarticulosfinal.Close;
    dmclientes.qarticulosfinal.open;
end;

procedure Tenvases_almacen.btEAguardarClick(Sender: TObject);
begin
    dm.dtarticulosalmacen.Post;
    dm.qarticulosalmacen.Refresh;
    dm.qarticulosalmacen.Locate('id',dm.dtarticulosalmacenid.AsInteger,[locaseinsensitive,lopartialkey]);
    dm.dtarticulosalmacen.MasterSource:=dm.dsqarticulosalmacen;
end;

procedure Tenvases_almacen.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   dm.qarticulosalmacen.close;
   dmclientes.qarticulosfinal.close;
   dmclientes.filtro:='';
   dmclientes.vertodos:=0;
   dmclientes.vertodosmateriales:=0;
end;

procedure Tenvases_almacen.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure Tenvases_almacen.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        key:=upcase(key);
        if (key='.') and (activecontrol is tdbedit) then
        begin
           if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
        end;
        if (key='.') and (activecontrol is tdbgrid) then
        begin
            key:=',';
        end;
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Tenvases_almacen.FormShow(Sender: TObject);
begin
    if not dm.qarticulosalmacen.Active then dm.qarticulosalmacen.Open else dm.qarticulosalmacen.Refresh;
    if not dmclientes.qarticulosfinal.Active then dmclientes.qarticulosfinal.open else dmclientes.qarticulosfinal.refresh;
    if not dm.dtarticulos_componentes.Active then dm.dtarticulos_componentes.open else dm.dtarticulos_componentes.refresh;

end;

procedure Tenvases_almacen.tbuscarChange(Sender: TObject);
begin
    dm.filtro:='%'+tbuscar.Text+'%';
    if todosarticulos.Checked then dm.vertodos:=1 else dm.vertodos:=0;
    dm.qarticulosalmacen.Close;
    dm.qarticulosalmacen.open;
end;

procedure Tenvases_almacen.todosarticulosClick(Sender: TObject);
begin
    if todosarticulos.Checked=true then
    begin
        dm.vertodos:=1;

        dm.qarticulosalmacen.Close;
        dm.qarticulosalmacen.Open;
    end else
    begin
        dm.vertodos:=0;
        dm.qarticulosalmacen.Close;
        dm.qarticulosalmacen.Open;
    end;
end;

end.
