{
===============================================================================
  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: 08-09-2002
  Versión actual: 1.0.0
  Fecha versión actual: 08-09-2002
===============================================================================
  Modificaciones:

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

unit RdxFrameCartasCliente;

interface

uses
  Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RdxFrame, RdxDBFrame, IBCustomDataSet, RdxTipos, IBDataBase, DB;

type
  TRdxFrameCartasCliente = class(TRdxDBFrame)
  private
    FTablaCartas : TIBDataSet;
  protected
    FCodigoCarta : Variant;
    procedure SetTablaCartas (Value : TIBDataSet);
    procedure SetCodigoCarta (Value : Variant); virtual;
    procedure SetContenido (NuevoFrame : TRdxFrame); override;
    function TratarCambios : integer; override;
    procedure BuscarCarta; virtual;
    procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
  public
    property TablaCartas: TIBDataSet read FTablaCartas write SetTablaCartas;
    property CodigoCarta : Variant read FCodigoCarta write SetCodigoCarta;
    constructor Create (AOwner : TComponent); override;
  published
    property BaseDatos;
    property Transaccion;
  end;


implementation

{$R *.DFM}

uses
  IB, RdxMensajes, RdxFunciones;
{ TRdxFrameCartasCliente }

constructor TRdxFrameCartasCliente.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FCodigoCarta := NULL;
  FTablaCartas := NIL;
end;

function TRdxFrameCartasCliente.TratarCambios : integer;
begin
  if (TablaCartas.Modified = True) then
  begin
    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
  end
  else Result := IDOK;
end;

procedure TRdxFrameCartasCliente.SetCodigoCarta(Value: Variant);
begin
  if not EsCadenaVacia (Value) then
  begin
    FCodigoCarta := Value;
    BuscarCarta;
  end
end;

procedure TRdxFrameCartasCliente.SetContenido(NuevoFrame: TRdxFrame);
begin
  if (FContenido <> NIL) then
    if (Contenido.Name = NuevoFrame.ClassName) then
    begin
      NuevoFrame.Free;
      exit;
    end;
  inherited;
  if (TablaCarta <> NIL) then
  begin
    FCodigoCarta := TablaCarta.FieldByName('CODIGO').Value;
    if Contenido is TRdxFrameCartasCliente then
      (Contenido as TRdxFrameCartasCliente).CodigoCarta := FCodigoCarta;
  end;
end;

procedure TRdxFrameCartasCliente.CambiarModo(ModoAnterior, Modo : TRdxModo);
begin
  inherited;
  if (FModo in [Normal, Seleccionar]) then
  begin
    TablaCarta.Close;
    TablaCarta.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 presupuesto que tiene el frame
      en CodigoCarta (al activar el modo Añadir NO se pisa este valor con
      el código de presupuesto nuevo) }
    if (not TablaCarta.Active) or (ModoAnterior = Anadir) then
      BuscarCarta;
  end;
end;

procedure TRdxFrameCartasCliente.SetTablaCartas(Value: TIBDataSet);
begin
  if (FTablaCartas <> Value) then
    FTablaCartas := Value;
end;

procedure TRdxFrameCartasCliente.BuscarCarta;
begin
//
end;

end.
