{
===============================================================================
  Copyright (©) 2002. 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: 16-11-2002
  Versión actual: 1.0.0
  Fecha versión actual: 16-11-2002
===============================================================================
  Modificaciones:

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

unit Proveedores;

interface

uses
  Dialogs, Menus, am2000menuitem, am2000popupmenu, am2000, Db, RdxBarras,
  Grids, DBGrids, RXDBCtrl, ExtCtrls, RdxBotones, Classes,
  Controls, RdxPaneles, RdxFrameProveedores, IBEvents, 
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxGrid, Configuracion, RdxFrame, StdCtrls, AdvPanel, ActnList, am2000utils, cxDataStorage,
  cxContainer, cxTextEdit;

type
  TfrProveedores = class(TRdxFrameProveedores)
    BarraProveedores: TRdxBarraSuperior;
    bAnadir: TRdxBotonSuperior;
    bModificar: TRdxBotonSuperior;
    bEliminar: TRdxBotonSuperior;
    bConsultar: TRdxBotonSuperior;
    pnlGrid: TPanel;
    dsProveedores: TDataSource;
    brSeleccion: TRdxBarraInferior;
    bSeleccionar: TRdxBoton;
    bCancelar: TRdxBoton;
    MenuOpciones: TPopupMenu2000;
    mnuAnadir: TMenuItem2000;
    mnuModificar: TMenuItem2000;
    mnuEliminar: TMenuItem2000;
    mnuConsultar: TMenuItem2000;
    gridProveedores: TcxGrid;
    gridProveedoresDBTableView1: TcxGridDBTableView;
    gridProveedoresLevel1: TcxGridLevel;
    bSeparador1: TShape;
    pnlCuerpo: TPanel;
    pnlSeparador: TPanel;
    Acciones: TActionList;
    actAnadir: TAction;
    actModificar: TAction;
    actEliminar: TAction;
    actConsultar: TAction;
    actSeleccionar: TAction;
    actCancelar: TAction;
    bImprimir: TRdxBotonSuperior;
    actImprimir: TAction;
    imgSombra: TImage;
    pnlCuerpo2: TRdxPanel;
    pnlExtra: TRdxBarraSuperior;
    bRefrescar: TRdxBoton;
    Panel1: TPanel;
    eNombre: TLabel;
    Buscar: TcxTextEdit;
    bLimpiar: TRdxBoton;
    procedure RdxFrameProveedoresShow(Sender: TObject);
    procedure bLimpiarClick(Sender: TObject);
    procedure actAnadirExecute(Sender: TObject);
    procedure actModificarExecute(Sender: TObject);
    procedure actEliminarExecute(Sender: TObject);
    procedure actConsultarExecute(Sender: TObject);
    procedure actSeleccionarExecute(Sender: TObject);
    procedure actCancelarExecute(Sender: TObject);
    procedure gridProveedoresDBTableView1DblClick(Sender: TObject);
    procedure actImprimirExecute(Sender: TObject);
    procedure actRefrescarDatosExecute(Sender: TObject);
    procedure BuscarPropertiesChange(Sender: TObject);
  private
    procedure ActualizarBotones;
  protected
    procedure BuscarProveedor; override;
    procedure FreeContenido; override;
  public
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property TablaProveedores;
    property Entidad;
  end;

var
  frProveedores: TfrProveedores;

implementation

{$R *.DFM}

uses
  IBDatabase, TablaProveedores, BaseDatos, IBCustomDataSet, Sysutils,
  Entidades, Variants, Proveedor, Forms, ListadoProveedores;

constructor TfrProveedores.Create (AOwner : TComponent);
begin
  inherited Create(AOwner);
  Entidad := entProveedor;
  
  BaseDatos := dmBaseDatos.BD;
  Transaccion := dmBaseDatos.Transaccion;
  TablaProveedores := TIBDataSet.Create(Self);
  dsProveedores.DataSet := TablaProveedores;

  with TablaProveedores do
  begin
    DisableControls;
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaProveedores.sqlGrid);
    Prepare;
    Open;
    EnableControls;
    ActualizarBotones;
  end;
  dmTablaProveedores.InicializarGridProveedores(gridProveedoresDBTableView1);
  gridProveedoresDBTableView1.OnDblClick := gridProveedoresDBTableView1DblClick;
  gridProveedoresDBTableView1.Controller.GoToFirst;
end;

destructor TfrProveedores.Destroy;
begin
  with TablaProveedores do
  begin
    Close;
    UnPrepare;
    Free;
  end;
  inherited;
end;

procedure TfrProveedores.BuscarProveedor;
begin
  with TablaProveedores do
  begin
    DisableControls;
    Close;
    Open;
    ActualizarBotones;

    EnableControls;
    if not Locate('CODIGO', CodigoProveedor, []) then
      gridProveedoresDBTableView1.Controller.GoToFirst
    else
      gridProveedoresDBTableView1.Controller.TopRowIndex := gridProveedoresDBTableView1.Controller.FocusedRowIndex;
  end;
end;

procedure TfrProveedores.FreeContenido;
begin
  if (Contenido is TRdxFrameProveedores) then
    CodigoProveedor := (Contenido as TRdxFrameProveedores).CodigoProveedor;
  inherited FreeContenido;
  gridProveedores.SetFocus;
end;

procedure TfrProveedores.ActualizarBotones;
begin
  if BaseDatos.IsReadOnly then
  begin
    actAnadir.Enabled := False;
    actModificar.Enabled := False;
    actEliminar.Enabled := False;
    actConsultar.Enabled := True;
    actImprimir.Enabled := True;
    Exit;
  end;

  if TablaProveedores.RecordCount = 0 then
  begin
    actAnadir.Enabled := True;
    actModificar.Enabled := False;
    actEliminar.Enabled := False;
    actConsultar.Enabled := False;
    actImprimir.Enabled := False;
  end
  else begin
    actAnadir.Enabled := True;
    actModificar.Enabled := True;
    actEliminar.Enabled := True;
    actConsultar.Enabled := True;
    actImprimir.Enabled := True;    
  end;
end;

procedure TfrProveedores.RdxFrameProveedoresShow(Sender: TObject);
begin
  gridProveedores.SetFocus;
end;

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

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

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

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

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

procedure TfrProveedores.actSeleccionarExecute(Sender: TObject);
begin
  CodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString;
  CloseFrame;
end;

procedure TfrProveedores.actCancelarExecute(Sender: TObject);
begin
  CodigoProveedor := NULL;
  CloseFrame;
end;

procedure TfrProveedores.gridProveedoresDBTableView1DblClick(
  Sender: TObject);
begin
  if Modo = Seleccionar then
    actSeleccionar.Execute
  else
    actModificar.Execute;
end;

procedure TfrProveedores.actImprimirExecute(Sender: TObject);
begin
  Contenido := TfrListadoProveedores.Create(Self);
  Contenido.Modo := Imprimir;
end;

procedure TfrProveedores.actRefrescarDatosExecute(Sender: TObject);
begin
  FCodigoProveedor := TablaProveedores.FieldByName('CODIGO').AsString;
  BuscarProveedor;
end;

procedure TfrProveedores.BuscarPropertiesChange(Sender: TObject);
begin
  FiltrarGrid(gridProveedores, Buscar.Text);
end;

end.
