{ =============================================================================== 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: 13-05-2002 Versión actual: 1.0.0 Fecha versión actual: 13-05-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit RdxFrameArticulosObraHistorica; {$I ..\COMPILE.INC} interface uses Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, IB, IBCustomDataSet, IBDataBase, DB, Mensajes, Tipos, RdxFrame, RdxDBFrame; type TRdxFrameArticulosObraHistorica = class(TRdxDBFrame) private FTablaArticulosObraHistorica : TIBDataSet; protected FCodigoAlmacen : TTipoCodigoFecha; FListaArticulos : TStringList; FListaAlmacenesCodigo : TStringList; procedure SetTablaArticulosObraHistorica (Value : TIBDataSet); procedure SetCodigoAlmacen (Value : TTipoCodigoFecha); virtual; procedure SetCodigoArticulo (Value : Variant); procedure SetFCodigoArticulo (Value : Variant); procedure SetListaArticulos (Value : TStringList); function GetCodigoArticulo: Variant; function GetFCodigoArticulo: Variant; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarAlmacen; virtual; abstract; procedure BuscarArticulo; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; public property TablaArticulosObraHistorica: TIBDataSet read FTablaArticulosObraHistorica write SetTablaArticulosObraHistorica; property CodigoAlmacen : TTipoCodigoFecha read FCodigoAlmacen write SetCodigoAlmacen; property CodigoArticulo : Variant read GetCodigoArticulo write SetCodigoArticulo; property FCodigoArticulo : Variant read GetFCodigoArticulo write SetFCodigoArticulo; property ListaArticulos : TStringList read FListaArticulos write SetListaArticulos; constructor Create (AOwner : TComponent); override; destructor Destroy; override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses Literales{$IFDEF RDX_D6},Variants{$ENDIF}; { TRdxFrameArticulosObraHistorica } constructor TRdxFrameArticulosObraHistorica.Create(AOwner: TComponent); begin inherited Create(AOwner); FListaArticulos:= TStringList.Create; FListaAlmacenesCodigo := TStringList.Create; FCodigoAlmacen := NIL; FTablaArticulosObraHistorica := NIL; end; destructor TRdxFrameArticulosObraHistorica.Destroy; begin FListaArticulos.Free; FListaArticulos := NIL; FListaAlmacenesCodigo.Free; FListaAlmacenesCodigo := NIL; inherited; end; function TRdxFrameArticulosObraHistorica.TratarCambios : integer; begin if (TablaArticulosObraHistorica.Modified = 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 TRdxFrameArticulosObraHistorica.SetContenido(NuevoFrame: TRdxFrame); begin if Contenido <> NIL then if Contenido.Name = NuevoFrame.ClassName then begin NuevoFrame.Free; exit; end; inherited; if TablaArticulosObraHistorica <> NIL then begin if Contenido is TRdxFrameArticulosObraHistorica then begin FCodigoAlmacen.Codigo := TablaArticulosObraHistorica.FieldByName('CODIGOOBRA').Value; FCodigoAlmacen.Fecha := TablaArticulosObraHistorica.FieldByName('FECHACIERRE').Value; FCodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').Value; (Contenido as TRdxFrameArticulosObraHistorica).CodigoAlmacen := FCodigoAlmacen; (Contenido as TRdxFrameArticulosObraHistorica).CodigoArticulo := FCodigoArticulo; end; end; end; procedure TRdxFrameArticulosObraHistorica.SetTablaArticulosObraHistorica(Value: TIBDataSet); begin if (FTablaArticulosObraHistorica <> Value) then begin FTablaArticulosObraHistorica := Value; end; end; procedure TRdxFrameArticulosObraHistorica.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaArticulosObraHistorica.Close; TablaArticulosObraHistorica.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 almacén que tiene el frame en CodigoAlmacen (al activar el modo Añadir NO se pisa este valor con el código de almacén nuevo), preguntamos si la tabla esta activa por si se ha cerrado al realizar algun cambio en modificar y ejecutar TratarCambios} if (not TablaArticulosObraHistorica.Active) or (ModoAnterior = Anadir) then BuscarArticulo; end; end; procedure TRdxFrameArticulosObraHistorica.SetCodigoAlmacen(Value: TTipoCodigoFecha); begin if (Value <> Nil) then begin FCodigoAlmacen := Value; BuscarAlmacen; end; end; function TRdxFrameArticulosObraHistorica.GetCodigoArticulo: Variant; begin Result := FCodigoArticulo; end; function TRdxFrameArticulosObraHistorica.GetFCodigoArticulo: Variant; begin if (FListaArticulos.Count = 0) then Result := NULL else Result := FListaArticulos.Strings[FListaArticulos.Count-1]; end; procedure TRdxFrameArticulosObraHistorica.SetCodigoArticulo(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoArticulo := Value; BuscarArticulo; end; end; procedure TRdxFrameArticulosObraHistorica.SetFCodigoArticulo(Value: Variant); begin FListaArticulos.Clear; if (not VarIsNull(Value)) then FListaArticulos.Add(Value); end; procedure TRdxFrameArticulosObraHistorica.SetListaArticulos(Value: TStringList); begin if (Value = Nil) or (Value.Count = 0) then exit; FListaArticulos.Clear; FListaArticulos.Assign(Value); end; end.