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

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

unit ListadoProveedores;

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,
  InformeListadoProveedores, TablaProveedores, Entidades;

type
  TfrListadoProveedores = class(TRdxFrame)
    pnlTitulo: TRdxPanelTituloOperacion;
    pnlCuerpo: TPanel;
    pnlProveedor: TAdvPanel;
    eCodigoCliente: TLabel;
    Label2: TLabel;
    NombreProvIni: TcxButtonEdit;
    NombreProvFin: TcxButtonEdit;
    pnlVistaPrevia: TPanel;
    Label1: TLabel;
    procedure CodigoCliIniPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure CodigoCliFinPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure NombreProvIniPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
    procedure NombreProvFinPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
  private
    FVistaPrevia : TfrVistaPrevia;
    FInforme : TdmInformeListadoProveedores;
    FCodigoProveedorAux : Variant;
    FProveedorIni: TDatosProveedor;
    FProveedorFin: TDatosProveedor;
    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
  frListadoProveedores: TfrListadoProveedores;

implementation

{$R *.dfm}

{ TfrListadoProveedores }

uses
  Literales, Mensajes, StrFunc, DateUtils, InformeBase,
  Proveedores, RdxFrameProveedores, Configuracion;

constructor TfrListadoProveedores.Create(AOwner: TComponent);
var
  NombreAux : String;
begin
  inherited Create(AOwner);
  Entidad := entListadoProveedores;

  FProveedorIni := TDatosProveedor.Create;
  FProveedorFin := TDatosProveedor.Create;

  NombreAux := dmTablaProveedores.DarNombreProvMin;
  FProveedorIni.Codigo := '';
  FProveedorIni.Nombre := NombreAux;
  FProveedorIni.ObtenerDatos;
  NombreProvIni.EditingText := FProveedorIni.Nombre;

  NombreAux := dmTablaProveedores.DarNombreProvMax;
  FProveedorFin.Codigo := '';
  FProveedorFin.Nombre := NombreAux;
  FProveedorFin.ObtenerDatos;
  NombreProvFin.EditingText := FProveedorFin.Nombre;

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

destructor TfrListadoProveedores.Destroy;
begin
  FInforme.Free;
  FProveedorIni.Free;
  FProveedorFin.Free;
  inherited;
end;

procedure TfrListadoProveedores.RecogerParametrosInforme;
begin
  if not Assigned(FInforme) then
    Exit;
  with FInforme do
  begin
    NombreIni := FProveedorIni.Nombre;
    NombreFin := FProveedorFin.Nombre;
    Previsualizar;
  end;
end;

procedure TfrListadoProveedores.CodigoCliIniPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  if FCodigoProveedorAux <> Null then
  begin
    FProveedorIni.Codigo := FCodigoProveedorAux;
    FProveedorIni.ObtenerDatos;
    NombreProvIni.EditingText := FProveedorIni.Nombre;
    PostMessage(NombreProvIni.Handle,WM_KEYDOWN,VK_RETURN,0);
  end;
end;

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

procedure TfrListadoProveedores.FreeContenido;
begin
  if (ContenidoModal is TRdxFrameProveedores) then
    FCodigoProveedorAux := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
  inherited;
end;

procedure TfrListadoProveedores.VerModal;
begin
  if (ContenidoModal is TRdxFrameProveedores) then
    (ContenidoModal as TRdxFrameProveedores).CodigoProveedor := FCodigoProveedorAux;
  inherited;
end;

procedure TfrListadoProveedores.CodigoCliFinPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  if FCodigoProveedorAux <> Null then
  begin
    FProveedorFin.Codigo := FCodigoProveedorAux;
    FProveedorFin.ObtenerDatos;
    NombreProvFin.EditingText := FProveedorFin.Nombre;
    PostMessage(NombreProvFin.Handle,WM_KEYDOWN,VK_RETURN,0);
  end;
end;

procedure TfrListadoProveedores.NombreProvIniPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, NombreProvFin.Text) > 0 then
  begin
    ErrorText := msgProvIniMayor;
    Error := True;
    Exit;
  end;

  FProveedorIni.Nombre := DisplayValue;
  FProveedorIni.Codigo := '';
  RecogerParametrosInforme;
end;

procedure TfrListadoProveedores.NombreProvFinPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, NombreProvIni.Text) < 0 then
  begin
    ErrorText := msgProvIniMayor;
    Error := True;
    Exit;
  end;

  FProveedorFin.Nombre := DisplayValue;
  FProveedorFin.Codigo := '';
  RecogerParametrosInforme;
end;

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

end.
