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

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

unit AlbaranesClientes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
  Menus, RXDBCtrl, Configuracion, RdxFrame,
  Db, RdxPaneles, RdxBarras,
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
  am2000menuitem, am2000popupmenu, am2000, cxContainer, cxTextEdit,
  cxMaskEdit, cxDropDownEdit, StdCtrls, ActnList, RdxFrameAlbaranesCliente,

  RdxEmpresaActiva, am2000utils, cxDataStorage;

type
  TfrAlbaranesClientes = class(TRdxFrameAlbaranesCliente)
    dsAlbaranes: TDataSource;
    BarraAlbaranes: TRdxBarraSuperior;
    pnlCuerpo: TRdxPanel;
    pnlGrid: TRdxPanel;
    brSeleccion: TRdxBarraInferior;
    bSeleccionar: TRdxBoton;
    bCancelar: TRdxBoton;
    brSimple: TRdxBarraInferior;
    bSalir: TRdxBoton;
    gridAlbaranes: TcxGrid;
    gridAlbaranesDBTableView1: TcxGridDBTableView;
    gridAlbaranesLevel1: TcxGridLevel;
    MenuOpciones: TPopupMenu2000;
    miAnadir: TMenuItem2000;
    miModificar: TMenuItem2000;
    miEliminar: TMenuItem2000;
    miConsultar: TMenuItem2000;
    miSeparador: TMenuItem2000;
    miImprimir: TMenuItem2000;
    Acciones: TActionList;
    actAnadir: TAction;
    actModificar: TAction;
    actEliminar: TAction;
    actConsultar: TAction;
    actImprimir: TAction;
    actSeleccionar: TAction;
    actCancelar: TAction;
    actAceptar: TAction;
    bAnadir: TRdxBotonSuperior;
    bModificar: TRdxBotonSuperior;
    bEliminar: TRdxBotonSuperior;
    bConsultar: TRdxBotonSuperior;
    bSeparador1: TShape;
    bImprimir: TRdxBotonSuperior;
    imgSombra: TImage;
    pnlCuerpo2: TRdxPanel;
    pnlExtra: TRdxBarraSuperior;
    bRefrescar: TRdxBoton;
    Panel2: TPanel;
    eNombre: TLabel;
    Buscar: TcxTextEdit;
    bLimpiar: TRdxBoton;
    procedure RdxFrameAlbaranesClienteShow(Sender: TObject);
    procedure actImprimirExecute(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 actAceptarExecute(Sender: TObject);
    procedure gridAlbaranesDBTableView1DblClick(Sender: TObject);
    procedure actRefrescarDatosExecute(Sender: TObject);
    procedure BuscarPropertiesChange(Sender: TObject);
    procedure bLimpiarClick(Sender: TObject);
  private
    procedure ActualizarBotones;
  protected
    procedure FreeContenido; override;
    procedure SetContenido (NuevoFrame : TRdxFrame); override;
    procedure BuscarAlbaran; override;
  public
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
  end;

var
  frAlbaranesClientes: TfrAlbaranesClientes;

implementation

{$R *.DFM}
uses
  BaseDatos, IBDatabase, Literales, IBCustomDataSet, Mensajes, Entidades,
  Variants, Constantes,
  TablaEmpresas, TablaAlbaranesCliente, ImprimirAlbaranCliente, AlbaranCliente;

procedure TfrAlbaranesClientes.BuscarAlbaran;
begin
  with TablaAlbaranes do
  begin
    DisableControls;
    Close;
    Open;
    dmTablaAlbaranesCliente.InicializarTabla(@TablaAlbaranes);
    ActualizarBotones;

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

constructor TfrAlbaranesClientes.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Entidad := entAlbaranCliente;
  
  BaseDatos := dmBaseDatos.BD;
  Transaccion := dmBaseDatos.Transaccion;
  TablaAlbaranes := TIBDataSet.Create(Self);
  dsAlbaranes.DataSet := TablaAlbaranes;

  with TablaAlbaranes do
  begin
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaAlbaranesCliente.sqlConsultarGrid);
    ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
    Prepare;
    Open;
    ActualizarBotones;
  end;
  dmTablaAlbaranesCliente.InicializarTabla(@TablaAlbaranes);
  dmTablaAlbaranesCliente.Inicializargrid(gridAlbaranes);

  gridAlbaranesDBTableView1.OnDblClick := gridAlbaranesDBTableView1DblClick;
  gridAlbaranesDBTableView1.Controller.GoToFirst;
end;

destructor TfrAlbaranesClientes.Destroy;
begin
  TablaAlbaranes.Close;
  TablaAlbaranes.UnPrepare;
  TablaAlbaranes.Free;
  inherited;
end;

procedure TfrAlbaranesClientes.FreeContenido;
begin
  if (Contenido is TRdxFrameAlbaranesCliente) then
    CodigoAlbaran := (Contenido as TRdxFrameAlbaranesCliente).CodigoAlbaran;
  inherited FreeContenido;
  //gridAlbaranes.SetFocus;
end;

procedure TfrAlbaranesClientes.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 TablaAlbaranes.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 TfrAlbaranesClientes.RdxFrameAlbaranesClienteShow(Sender: TObject);
begin
  Buscar.SetFocus
end;

procedure TfrAlbaranesClientes.SetContenido(NuevoFrame: TRdxFrame);
begin
  inherited;
  if (Contenido is TfrImprimirAlbaranCliente) then
     (Contenido as TfrImprimirAlbaranCliente).Codigo := FCodigoAlbaran;
end;

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

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

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

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

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

procedure TfrAlbaranesClientes.actSeleccionarExecute(Sender: TObject);
begin
  CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
  CloseFrame;
end;

procedure TfrAlbaranesClientes.actCancelarExecute(Sender: TObject);
begin
  FCodigoAlbaran := NULL;
  CloseFrame;
end;

procedure TfrAlbaranesClientes.actAceptarExecute(Sender: TObject);
begin
  CloseFrame;
end;

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

procedure TfrAlbaranesClientes.actRefrescarDatosExecute(Sender: TObject);
begin
  FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
  BuscarAlbaran;
end;

procedure TfrAlbaranesClientes.BuscarPropertiesChange(Sender: TObject);
begin
  FiltrarGrid(gridAlbaranes, Buscar.Text);
end;

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

end.
