{ =============================================================================== 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: 01-10-2001 Versión actual: 1.0.4 Fecha versión actual: 09-04-2001 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 01-10-2001 Añadir la tabla de sucursales de cliente. 07-04-2002 Se ha adaptado el frame para transacción única. 09-04-2002 Sustituir las constantes IDYES/IDNO por IDOK. 09-04-2002 En la función 'TratarCambios' cambiar .Modified por .UpdatesPending en las tablas que usen caché. =============================================================================== } unit RdxFrameProveedores; {$I ..\COMPILE.INC} interface uses Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RdxFrame, RdxDBFrame, IBCustomDataSet, IBDataBase, DB, Tipos, IBEvents; type TRdxFrameProveedores = class(TRdxDBFrame) private FTablaProveedores : TIBDataSet; FTablaSucursales : TIBDataSet; protected FCodigoProveedor : Variant; procedure SetTablaProveedores (Value : TIBDataSet); procedure SetTablaSucursales (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; public property TablaProveedores: TIBDataSet read FTablaProveedores write SetTablaProveedores; property TablaSucursales: TIBDataSet read FTablaSucursales write SetTablaSucursales; property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor; constructor Create (AOwner : TComponent); override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses IB, Mensajes, StrFunc, Literales {$IFDEF RDX_D6}, Variants{$ENDIF}; { TRdxFrameProveedores } constructor TRdxFrameProveedores.Create(AOwner: TComponent); begin inherited Create(AOwner); FCodigoProveedor := NULL; FTablaProveedores := NIL; FTablaSucursales := NIL; end; function TRdxFrameProveedores.TratarCambios : integer; begin if (TablaProveedores.Modified = True) or ((TablaSucursales <> NIL) and (TablaSucursales.UpdatesPending = True)) 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.SetTablaSucursales(Value: TIBDataSet); begin if (FTablaSucursales <> Value) then FTablaSucursales := Value; end; procedure TRdxFrameProveedores.BuscarProveedor; begin // end; end.