This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Frames/RdxFrameArticulosAlmacen.pas
2007-06-21 15:47:20 +00:00

246 lines
7.5 KiB
ObjectPascal

{
===============================================================================
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.