{
===============================================================================
  Copyright (©) 2003. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 10-05-2003
  Versión actual: 1.0.0
  Fecha versión actual: 10-05-2003
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit Articulos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxEdit, DB, cxDBData, ActnList, Menus, am2000menuitem, am2000popupmenu,
  am2000, StdCtrls,
  AdvPanel, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
  ExtCtrls, RdxBotones, RdxBarras, RdxPaneles, RdxFrame, ArticulosModelo,
  cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, Configuracion,
  am2000utils, cxDataStorage;

type
  TfrArticulos = class(TfrArticulosModelo)
    pnlExtra: TRdxBarraSuperior;
    eFamilia: TLabel;
    cbxFamilia: TcxComboBox;
    Panel1: TPanel;
    eNombre: TLabel;
    Buscar: TcxTextEdit;
    bLimpiar: TRdxBoton;

    //Habra que llamar a ArticuloModelo en lugar de artículo
    procedure actAnadirExecute(Sender: TObject); override;
    procedure actModificarExecute(Sender: TObject); override;
    procedure actEliminarExecute(Sender: TObject); override;
    procedure actConsultarExecute(Sender: TObject); override;
    procedure cbxFamiliaPropertiesEditValueChanged(Sender: TObject);
    procedure bLimpiarClick(Sender: TObject);
    procedure BuscarPropertiesChange(Sender: TObject);
  private
    FFamilia: String;
    procedure SetFamilia(const Value: String);
  protected
    procedure InicializarTablas; override;
  public
    //Solo cambiariamos las sql a las que referencia la tabla
    constructor Create (AOwner : TComponent); override;
    property Familia : String read FFamilia write SetFamilia;
  end;

var
  frArticulos: TfrArticulos;

implementation

{$R *.dfm}

uses
  TablaArticulos, Articulo, Entidades, BaseDatos, IBCustomDataSet, TablaFamilias;


{ TfrArticulosModelo }

procedure TfrArticulos.actAnadirExecute(Sender: TObject);
begin
  Contenido := TfrArticulo.Create(Self);
  Contenido.Modo := Anadir;
end;

procedure TfrArticulos.actConsultarExecute(Sender: TObject);
begin
  Contenido := TfrArticulo.Create(Self);
  Contenido.Modo := Consultar;
end;

procedure TfrArticulos.actEliminarExecute(Sender: TObject);
begin
  Contenido := TfrArticulo.Create(Self);
  Contenido.Modo := Eliminar;
end;

procedure TfrArticulos.actModificarExecute(Sender: TObject);
begin
  Contenido := TfrArticulo.Create(Self);
  Contenido.Modo := Modificar;
end;

constructor TfrArticulos.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  cbxFamilia.Properties.Items.Add('Todas');
  cbxFamilia.Properties.Items.AddStrings(dmTablaFamilias.DarFamilias);
  cbxFamilia.ItemIndex := 0;
end;

procedure TfrArticulos.InicializarTablas;
begin
  Entidad := entArticulo;

  with TablaArticulos do
  begin
    DisableControls;
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaArticulos.sqlGrid);
    Prepare;
    Open;
    ActualizarBotones;
    EnableControls;
  end;
end;

procedure TfrArticulos.SetFamilia(const Value: String);
var
  FamiliaAux : String;
  Columna : TcxGridDBColumn;
begin
  FamiliaAux := Value;
  with gridArticulos.ActiveView.DataController.Filter do
  begin
    BeginUpdate;
    try
      Columna := (gridArticulos.ActiveView as TcxGridDBTableView).GetColumnByFieldName('FAMILIA');
      if UpperCase(FamiliaAux) = 'TODAS' then
      begin
        Columna.Visible := True;
        Clear;
      end
      else begin
        Columna.Visible := False;
        Root.Clear;
        Root.AddItem(Columna, foEqual, FamiliaAux, 'Familia');
        Active := True;
      end;
      cbxFamilia.Text := Value;
    finally
      EndUpdate;
      gridArticulos.ActiveView.DataController.GotoFirst;
    end;
  end;
end;

procedure TfrArticulos.cbxFamiliaPropertiesEditValueChanged(
  Sender: TObject);
begin
  Familia := cbxFamilia.Text;
end;

procedure TfrArticulos.bLimpiarClick(Sender: TObject);
begin
  Buscar.Text := '';
end;

procedure TfrArticulos.BuscarPropertiesChange(Sender: TObject);
begin
  FiltrarGrid(gridArticulos, Buscar.Text);
end;

end.
