{
===============================================================================
  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: 03-11-2002
  Versión actual: 1.0.1
  Fecha versión actual: 28-05-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    28/05/2004    Se han adaptado los frames para que se autoconfiguren
===============================================================================
}


unit RdxFrameProveedores;

{$I ..\COMPILE.INC}

interface

uses
  Windows, Classes,
  RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades;

type
  TRdxFrameProveedores = class(TRdxDBFrame)
  private
    FTablaProveedores : TIBDataSet;
    FTablaRepresentantes : TIBDataSet;
  protected
    FCodigoProveedor : Variant;
    procedure SetTablaProveedores (Value : TIBDataSet);
    procedure SetTablaRepresentantes (Value : TIBDataSet);
    procedure SetCodigoProveedor (Value : Variant); virtual;
    procedure SetContenido (NuevoFrame : TRdxFrame); override;
    function TratarCambios : integer; override;
    procedure BuscarProveedor; virtual;
    procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
    function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;    
  public
    property TablaProveedores: TIBDataSet read FTablaProveedores write SetTablaProveedores;
    property TablaRepresentantes: TIBDataSet read FTablaRepresentantes write SetTablaRepresentantes;
    property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor;
    constructor Create (AOwner : TComponent); override;
  published
    property BaseDatos;
    property Transaccion;
  end;


implementation

{$R *.DFM}

uses
  StrFunc, Mensajes, Literales, Configuracion
  {$IFDEF RDX_D6}, Variants{$ENDIF};

{ TRdxFrameProveedores }

constructor TRdxFrameProveedores.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FCodigoProveedor := NULL;
  FTablaProveedores := NIL;
  FTablaRepresentantes := NIL;
end;

function TRdxFrameProveedores.TratarCambios : integer;
begin
  if (TablaProveedores.State in dsEditModes) or
     ((TablaRepresentantes <> NIL) and (TablaRepresentantes.State in dsEditModes)) then
    case VerMensajePregunta(msgGuardarCambios) of
      IDCANCEL    : Result := IDCANCEL;
      IDYES       : begin
                      if (RealizarOperacion)
                      then Result := IDOK
                      else Result := IDCANCEL;
                    end;
      IDNO        : begin
                      if (DescartarOperacion)
                      then Result := IDOK
                      else Result := IDCANCEL;
                    end;
    end
  else Result := IDOK;
end;


procedure TRdxFrameProveedores.SetCodigoProveedor(Value: Variant);
begin
  if (not EsCadenaVacia(Value)) then
  begin
    FCodigoProveedor := Value;
    BuscarProveedor;
  end
end;

procedure TRdxFrameProveedores.SetContenido(NuevoFrame: TRdxFrame);
begin
  if (Contenido <> NIL) then
    if (Contenido.Name = NuevoFrame.ClassName) then
    begin
      NuevoFrame.Free;
      Exit;
    end;
  inherited;
  if TablaProveedores <> NIL then
  begin
    FCodigoProveedor := TablaProveedores.FieldByName('CODIGO').Value;
    if Contenido is TRdxFrameProveedores then
      (Contenido as TRdxFrameProveedores).CodigoProveedor := FCodigoProveedor;
  end;
end;

procedure TRdxFrameProveedores.CambiarModo(ModoAnterior, Modo : TRdxModo);
begin
  inherited;
  if (FModo in [Normal, Seleccionar]) then
  begin
    TablaProveedores.Close;
    TablaProveedores.Open;
  end
  else begin
    { Si estábamos en el modo Añadir y pasamos a cualquier otro modo SIEMPRE
      es necesario buscar el codigo de pedido que tiene el frame
      en CodigoProveedor (al activar el modo Añadir NO se pisa este valor con
      el código de pedido nuevo) }
    if (not TablaProveedores.Active) or (ModoAnterior = Anadir) then
      BuscarProveedor;
  end;
end;

procedure TRdxFrameProveedores.SetTablaProveedores(Value: TIBDataSet);
begin
  if (FTablaProveedores <> Value) then
    FTablaProveedores := Value;
end;

procedure TRdxFrameProveedores.BuscarProveedor;
begin
//
end;

procedure TRdxFrameProveedores.SetTablaRepresentantes(Value: TIBDataSet);
begin
  if (FTablaRepresentantes <> Value) then
    FTablaRepresentantes := Value;
end;

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

end.
