{
===============================================================================
  Copyright (©) 2001. 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: 12-10-2002
  Versión actual: 1.0.2
  Fecha versión actual: 11-05-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------

    19-11-2003    p268. Cambiar funcion ImprimirListadoCli, ExportarListadoCli,
                  bImprimirClick y bExportarClick para validar intervalo y en
                  lugar por codigo se realice por nombre alfabetico.

    11-05-2004    p274. Migración a FastReport.
===============================================================================
}

unit ListarProveedores;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ListadoBase, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit,
  cxButtonEdit, RdxRadioButton, ExtCtrls, StdCtrls, RdxTitulos, RdxPaneles,
  Configuracion, TablaProveedores;

type
  TfrListarProveedores = class(TfrListadoBase)
    rbTodos: TRdxRadioButton;
    rbArticulos: TRdxRadioButton;
    Label1: TLabel;
    ProveedorIni: TcxButtonEdit;
    ProveedorFin: TcxButtonEdit;
    procedure rbTodosClick(Sender: TObject);
    procedure rbArticulosClick(Sender: TObject);
    procedure ProveedorIniPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure ProveedorIniPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
    procedure ProveedorFinPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
    procedure ProveedorFinPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure RdxFrameShow(Sender: TObject);
  private
    FProveedorIni : TDatosProveedor;
    FProveedorFin : TDatosProveedor;
    FCodigoProveedorAux : Variant;
    procedure ActivarIntervalo;
    procedure DesactivarIntervalo;
    procedure RefrescarInforme; override;
  protected
    procedure FreeContenido; override;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  end;

var
  frListarProveedores: TfrListarProveedores;

implementation

{$R *.DFM}

uses
  RdxFrameProveedores, Proveedores, InformeListadoProveedores, Literales;

procedure TfrListarProveedores.rbTodosClick(Sender: TObject);
begin
  DesactivarIntervalo;
  RefrescarInforme;
end;

procedure TfrListarProveedores.rbArticulosClick(Sender: TObject);
begin
  ActivarIntervalo;
  RefrescarInforme;
end;

procedure TfrListarProveedores.ActivarIntervalo;
begin
  ProveedorIni.Enabled := True;
  ProveedorIni.SetFocus;
  ProveedorFin.Enabled := True;
end;

constructor TfrListarProveedores.Create(AOwner: TComponent);
var
  NombreAux : String;
begin
  inherited Create(AOwner);
  ConfigurarFrame(Self, Self.Entidad);

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

  FProveedorIni.Codigo := dmTablaProveedores.DarProveedorMin;
  dmTablaProveedores.DarDatosProveedor(FProveedorIni);
  ProveedorIni.EditingText := FProveedorIni.Nombre;

  FProveedorFin.Codigo := dmTablaProveedores.DarProveedorMax;
  dmTablaProveedores.DarDatosProveedor(FProveedorFin);
  ProveedorFin.EditingText := FProveedorFin.Nombre;

  FInforme := TdmInformeListadoProveedores.Create(Self);
  FInforme.Preview := FVistaPrevia.Preview;
  RefrescarInforme;
end;

procedure TfrListarProveedores.DesactivarIntervalo;
begin
  ProveedorIni.Enabled := False;
  ProveedorFin.Enabled := False;
end;

destructor TfrListarProveedores.Destroy;
begin
  FreeAndNil(FProveedorIni);
  FreeAndNil(FProveedorFin);
  // El informe se destruye en el padre
  inherited;
end;

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

procedure TfrListarProveedores.RefrescarInforme;
begin
  with (FInforme as TdmInformeListadoProveedores) do
  begin
    if rbTodos.Checked then
    begin
      NombreIni := NULL;
      NombreFin := NULL;
    end
    else begin
      NombreIni := FProveedorIni.Nombre;
      NombreFin := FProveedorFin.Nombre;
    end;
    Previsualizar;
  end;
end;

procedure TfrListarProveedores.ProveedorIniPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, ProveedorFin.Text) > 0 then
  begin
    ErrorText := msgInfProveedorIniMayor;
    Error := True;
    Exit;
  end;
  FProveedorIni.Nombre := DisplayValue;
  FProveedorIni.Codigo := '';
  RefrescarInforme;
end;

procedure TfrListarProveedores.ProveedorFinPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
  if AnsiCompareText(DisplayValue, ProveedorIni.Text) < 0 then
  begin
    ErrorText := msgInfProveedorIniMayor;
    Error := True;
    Exit;
  end;
  FProveedorFin.Nombre := DisplayValue;
  FProveedorFin.Codigo := '';
  RefrescarInforme;
end;

procedure TfrListarProveedores.ProveedorFinPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  if not VarIsNull(FCodigoProveedorAux) then
  begin
    FProveedorFin.Codigo := FCodigoProveedorAux;
    dmTablaProveedores.DarDatosProveedor(FProveedorFin);
    ProveedorFin.EditingText := FProveedorFin.Nombre;
    PostMessage(ProveedorFin.Handle, WM_KEYDOWN, VK_RETURN, 0);
  end;
end;

procedure TfrListarProveedores.ProveedorIniPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  ContenidoModal := TfrProveedores.Create(Self);
  if not VarIsNull(FCodigoProveedorAux) then
  begin
    FProveedorIni.Codigo := FCodigoProveedorAux;
    dmTablaProveedores.DarDatosProveedor(FProveedorIni);
    ProveedorIni.EditingText := FProveedorIni.Nombre;
    PostMessage(ProveedorIni.Handle, WM_KEYDOWN, VK_RETURN, 0);
  end;
end;

procedure TfrListarProveedores.RdxFrameShow(Sender: TObject);
begin
  DesactivarIntervalo;
  rbTodos.SetFocus;
end;

end.
