{ =============================================================================== 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.3 Fecha versión actual: 09-04-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 02-03-2002 El frame ahora trabaja con listas de artículos en vez de con un solo artículo. 07-04-2002 Se ha adaptado el frame para transaccion unica. 09-04-2002 Sustituir las constantes IDYES/IDNO por IDOK. =============================================================================== } unit RdxFrameArticulosAlmacen; {$I ..\COMPILE.INC} interface uses Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, IB, IBCustomDataSet, IBDataBase, DB, Mensajes, Tipos, RdxFrame, RdxDBFrame; type TRdxFrameArticulosAlmacen = class(TRdxDBFrame) private FTablaArticulosAlmacen : TIBDataSet; protected FCodigoAlmacen : Variant; //FCodigoArticulo : Variant; FListaArticulos : TStringList; FListaAlmacenesCodigo : TStringList; FListaCodigosAlmacen : TStringList; procedure SetTablaArticulosAlmacen (Value : TIBDataSet); procedure SetCodigoAlmacen (Value : Variant); virtual; //procedure SetCodigoArticulo (Value : Variant); 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 TablaArticulosAlmacen: TIBDataSet read FTablaArticulosAlmacen write SetTablaArticulosAlmacen; property CodigoAlmacen : Variant read FCodigoAlmacen write SetCodigoAlmacen; //property CodigoArticulo : Variant read FCodigoArticulo write SetCodigoArticulo; 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}; { TRdxFrameAlmacenes } constructor TRdxFrameArticulosAlmacen.Create(AOwner: TComponent); begin inherited Create(AOwner); //FCodigoArticulo := NULL; FListaArticulos:= TStringList.Create; FCodigoAlmacen := NULL; FTablaArticulosAlmacen := NIL; FListaAlmacenesCodigo := TStringList.Create; FListaCodigosAlmacen := TStringList.Create; end; destructor TRdxFrameArticulosAlmacen.Destroy; begin FListaArticulos.Free; FListaArticulos := NIL; FListaAlmacenesCodigo.Free; FListaAlmacenesCodigo := NIL; FListaCodigosAlmacen.Free; FListaCodigosAlmacen := NIL; inherited; end; function TRdxFrameArticulosAlmacen.TratarCambios : integer; begin if (TablaArticulosAlmacen.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 TRdxFrameArticulosAlmacen.SetContenido(NuevoFrame: TRdxFrame); begin if Contenido <> NIL then if Contenido.Name = NuevoFrame.ClassName then begin NuevoFrame.Free; exit; end; inherited; if TablaArticulosAlmacen <> NIL then begin if Contenido is TRdxFrameArticulosAlmacen then begin FCodigoAlmacen := TablaArticulosAlmacen.FieldByName('CODIGOALMACEN').Value; FCodigoArticulo := TablaArticulosAlmacen.FieldByName('CODIGOARTICULO').Value; (Contenido as TRdxFrameArticulosAlmacen).CodigoAlmacen := FCodigoAlmacen; (Contenido as TRdxFrameArticulosAlmacen).CodigoArticulo := FCodigoArticulo; end; end; end; procedure TRdxFrameArticulosAlmacen.SetTablaArticulosAlmacen(Value: TIBDataSet); begin if (FTablaArticulosAlmacen <> Value) then begin FTablaArticulosAlmacen := Value; end; end; procedure TRdxFrameArticulosAlmacen.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaArticulosAlmacen.Close; TablaArticulosAlmacen.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 TablaArticulosAlmacen.Active) or (ModoAnterior = Anadir) then BuscarArticulo; end; end; {procedure TRdxFrameArticulosAlmacen.SetCodigoArticulo(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoArticulo := Value; BuscarArticulo; end; end;} procedure TRdxFrameArticulosAlmacen.SetCodigoAlmacen(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoAlmacen := Value; BuscarAlmacen; end; end; function TRdxFrameArticulosAlmacen.GetCodigoArticulo: Variant; begin Result := FCodigoArticulo; end; function TRdxFrameArticulosAlmacen.GetFCodigoArticulo: Variant; begin if (FListaArticulos.Count = 0) then Result := NULL else Result := FListaArticulos.Strings[FListaArticulos.Count-1]; end; procedure TRdxFrameArticulosAlmacen.SetCodigoArticulo(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoArticulo := Value; BuscarArticulo; end; end; procedure TRdxFrameArticulosAlmacen.SetFCodigoArticulo(Value: Variant); begin FListaArticulos.Clear; if (not VarIsNull(Value)) then FListaArticulos.Add(Value); end; procedure TRdxFrameArticulosAlmacen.SetListaArticulos(Value: TStringList); begin if (Value = Nil) or (Value.Count = 0) then exit; FListaArticulos.Clear; FListaArticulos.Assign(Value); end; end.