{
===============================================================================
  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: 04-03-2003
  Versión actual: 1.0.1
  Fecha versión actual: 13-08-2003
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    13-08-2003    Se ha cambiado el intervalo a intervalo de nombre en vez
                  de intervalo de códigos de cliente.
===============================================================================
}

unit ListadoClientes;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RdxFrame, RdxBotones, RdxPaneles, RdxBarras, cxControls,
  cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, StdCtrls,
  AdvPanel, ExtCtrls, RdxTitulos, cxDropDownEdit, VistaPrevia,
  InformeListadoClientes, TablaClientes, Entidades;

type
  TfrListadoClientes = class(TRdxFrame)
    pnlTitulo: TRdxPanelTituloOperacion;
    pnlCuerpo: TPanel;
    pnlProveedor: TAdvPanel;
    eCodigoCliente: TLabel;
    Label2: TLabel;
    pnlVistaPrevia: TPanel;
    Label1: TLabel;
    NombreCliIni: TcxButtonEdit;
    NombreCliFin: TcxButtonEdit;
    procedure CodigoCliIniPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure CodigoCliFinPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure NombreCliIniPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
    procedure NombreCliFinPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
  private
    FVistaPrevia : TfrVistaPrevia;
    FInforme : TdmInformeListadoClientes;
    FClienteIni : TDatosCliente;
    FClienteFin : TDatosCliente;
    FCodigoClienteAux : Variant;
    procedure RecogerParametrosInforme;
  protected
    procedure VerModal; override;
    procedure FreeContenido; override;
    function CloseFrame : Boolean; override;
    function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  end;

var
  frListadoClientes: TfrListadoClientes;

implementation

{$R *.dfm}

{ TfrListadoClientes }

uses
  Literales, Mensajes, StrFunc, DateUtils, InformeBase,
  Clientes, RdxFrameClientes, configuracion;

constructor TfrListadoClientes.Create(AOwner: TComponent);
var
  NombreAux : String;
begin
  inherited Create(AOwner);
  Entidad := entListadoClientes;
  
  FClienteIni := TDatosCliente.Create;
  FClienteFin := TDatosCliente.Create;

  NombreAux := dmTablaClientes.DarNombreCliMin;
  FClienteIni.Codigo := '';
  FClienteIni.Nombre := NombreAux;
  FClienteIni.ObtenerDatos;
  NombreCliIni.EditingText := FClienteIni.Nombre;

  NombreAux := dmTablaClientes.DarNombreCliMax;
  FClienteFin.Codigo := '';
  FClienteFin.Nombre := NombreAux;
  FClienteFin.ObtenerDatos;
  NombreCliFin.EditingText := FClienteFin.Nombre;

  FVistaPrevia := TfrVistaPrevia.Create(Self);
  FVistaPrevia.Parent := pnlVistaPrevia;
  FInforme := TdmInformeListadoClientes.Create(Self);
  FInforme.Preview := FVistaPrevia.Preview;
  RecogerParametrosInforme;
end;

destructor TfrListadoClientes.Destroy;
begin
  FInforme.Free;
  FClienteIni.Free;
  FClienteFin.Free;
  inherited;
end;

procedure TfrListadoClientes.RecogerParametrosInforme;
begin
  if not Assigned(FInforme) then
    Exit;
  with FInforme do
  begin
    NombreIni := FClienteIni.Nombre;
    NombreFin := FClienteFin.Nombre;
    Previsualizar;
  end;
end;

procedure TfrListadoClientes.CodigoCliIniPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrClientes.Create(Self);
  if FCodigoClienteAux <> Null then
  begin
    FClienteIni.Codigo := FCodigoClienteAux;
    FClienteIni.ObtenerDatos;
    NombreCliIni.EditingText := FClienteIni.Nombre;
    PostMessage(NombreCliIni.Handle,WM_KEYDOWN,VK_RETURN,0);    
  end;
end;

function TfrListadoClientes.CloseFrame: Boolean;
begin
  FInforme.Preview := NIL;
  (FVistaPrevia as TRdxFrame).CloseFrame;
  Result := inherited CloseFrame;
end;

procedure TfrListadoClientes.FreeContenido;
begin
  if (ContenidoModal is TRdxFrameClientes) then
    FCodigoClienteAux := (ContenidoModal as TRdxFrameClientes).CodigoCliente;
  inherited;
end;

procedure TfrListadoClientes.VerModal;
begin
  if (ContenidoModal is TRdxFrameClientes) then
    (ContenidoModal as TRdxFrameClientes).CodigoCliente := FCodigoClienteAux;
  inherited;
end;

procedure TfrListadoClientes.CodigoCliFinPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrClientes.Create(Self);
  if FCodigoClienteAux <> Null then
  begin
    FClienteFin.Codigo := FCodigoClienteAux;
    FClienteFin.ObtenerDatos;
    NombreCliFin.EditingText := FClienteFin.Nombre;
    PostMessage(NombreCliFin.Handle,WM_KEYDOWN,VK_RETURN,0);    
  end;
end;

procedure TfrListadoClientes.NombreCliIniPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, NombreCliFin.Text) > 0 then
  begin
    ErrorText := msgCliIniMayor;
    Error := True;
    Exit;
  end;
  FClienteIni.Nombre := DisplayValue;
  FClienteIni.Codigo := '';
  RecogerParametrosInforme;
end;

procedure TfrListadoClientes.NombreCliFinPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, NombreCliIni.Text) < 0 then
  begin
    ErrorText := msgCliIniMayor;
    Error := True;
    Exit;
  end;
  FClienteFin.Nombre := DisplayValue;
  FClienteFin.Codigo := '';
  RecogerParametrosInforme;
end;

function TfrListadoClientes.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean;
begin
  inherited CambiarEntidad(EntidadAnterior, Entidad);
  ConfigurarFrame(Self, Self.Entidad);
end;

end.
