{ =============================================================================== Copyright (©) 2005. 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: 30-09-2005 Versión actual: 1.0.0 Fecha versión actual: 30-09-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit RdxFrameAlbaranesCliente; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameAlbaranesCliente = class(TRdxDBFrame) private FTablaAlbaranes : TIBDataSet; FTablaDetallesAlbaranes : TIBDataSet; protected FListaAlbaranes : TStringList; procedure SetTablaAlbaranes (Value : TIBDataSet); procedure SetTablaDetallesAlbaranes (Value : TIBDataSet); procedure SetListaAlbaranes (Value : TStringList); procedure SetCodigoAlbaran (Value : Variant); procedure SetFCodigoAlbaran (Value : Variant); function GetCodigoAlbaran: Variant; function GetFCodigoAlbaran: Variant; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarAlbaran; virtual; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaAlbaranes: TIBDataSet read FTablaAlbaranes write SetTablaAlbaranes; property TablaDetallesAlbaranes: TIBDataSet read FTablaDetallesAlbaranes write SetTablaDetallesAlbaranes; property ListaAlbaranes : TStringList read FListaAlbaranes write SetListaAlbaranes; property CodigoAlbaran : Variant read GetCodigoAlbaran write SetCodigoAlbaran; property FCodigoAlbaran : Variant read GetFCodigoAlbaran write SetFCodigoAlbaran; constructor Create (AOwner : TComponent); override; destructor Destroy; override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses IB, Mensajes, StrFunc, Literales, Configuracion {$IFDEF RDX_D6}, Variants{$ENDIF}; { TRdxFrameAlbaranesCliente } constructor TRdxFrameAlbaranesCliente.Create(AOwner: TComponent); begin inherited Create(AOwner); FListaAlbaranes := TStringList.Create; FTablaAlbaranes := NIL; FTablaDetallesAlbaranes := NIL; end; function TRdxFrameAlbaranesCliente.TratarCambios : integer; begin if (TablaAlbaranes.State in dsEditModes) or ((TablaDetallesAlbaranes <> NIL) and (TablaDetallesAlbaranes.State in dsEditModes)) 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 TRdxFrameAlbaranesCliente.SetCodigoAlbaran(Value: Variant); begin if not EsCadenaVacia(Value) then begin FCodigoAlbaran := Value; BuscarAlbaran; end end; procedure TRdxFrameAlbaranesCliente.SetContenido(NuevoFrame: TRdxFrame); begin if (FContenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaAlbaranes <> NIL) then begin FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').Value; if Contenido is TRdxFrameAlbaranesCliente then begin (Contenido as TRdxFrameAlbaranesCliente).CodigoAlbaran := FCodigoAlbaran; end; end; end; procedure TRdxFrameAlbaranesCliente.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaAlbaranes.Close; TablaAlbaranes.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 albaran que tiene el frame en CodigoAlbaran (al activar el modo Añadir NO se pisa este valor con el código de albarán nuevo) } if (not TablaAlbaranes.Active) or (ModoAnterior = Anadir) then BuscarAlbaran; end; end; procedure TRdxFrameAlbaranesCliente.SetTablaAlbaranes(Value: TIBDataSet); begin if (FTablaAlbaranes <> Value) then FTablaAlbaranes := Value; end; procedure TRdxFrameAlbaranesCliente.SetTablaDetallesAlbaranes(Value: TIBDataSet); begin if (FTablaDetallesAlbaranes <> Value) then FTablaDetallesAlbaranes := Value; end; procedure TRdxFrameAlbaranesCliente.BuscarAlbaran; begin // end; function TRdxFrameAlbaranesCliente.GetCodigoAlbaran: Variant; begin Result := FCodigoAlbaran; end; function TRdxFrameAlbaranesCliente.GetFCodigoAlbaran: Variant; begin if (ListaAlbaranes.Count = 0) then Result := NULL else Result := ListaAlbaranes.Strings[ListaAlbaranes.Count-1]; end; procedure TRdxFrameAlbaranesCliente.SetFCodigoAlbaran(Value: Variant); begin FListaAlbaranes.Clear; if (not VarIsNull(Value)) then FListaAlbaranes.Add(Value); end; procedure TRdxFrameAlbaranesCliente.SetListaAlbaranes(Value: TStringList); begin if (Value = NIL) or (Value.Count = 0) then exit; FListaAlbaranes.Clear; FListaAlbaranes.Assign(Value); end; destructor TRdxFrameAlbaranesCliente.Destroy; begin FListaAlbaranes.Free; FListaAlbaranes := NIL; inherited; end; function TRdxFrameAlbaranesCliente.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.