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/RdxFrameArticulos.pas
2007-06-21 15:47:20 +00:00

218 lines
6.6 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.4
Fecha versión actual: 08-10-2004
===============================================================================
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.
08-10-2004 P289. Se añade una tabla nueva FTablaArticulosFabPro que representara
los detalles de articulo "precios de los proveedores y fabricante"
===============================================================================
}
unit RdxFrameArticulos;
{$I ..\COMPILE.INC}
interface
uses
Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, IB, IBCustomDataSet, IBDataBase, DB, Mensajes, Tipos,
RdxFrame, RdxDBFrame;
type
TRdxFrameArticulos = class(TRdxDBFrame)
private
FTablaArticulos : TIBDataSet;
FTablaArticulosFabPro : TIBDataSet;
protected
FListaArticulos : TStringList;
procedure SetTablaArticulos (Value : TIBDataSet);
procedure SetTablaArticulosFabPro (Value : TIBDataSet);
procedure SetListaArticulos (Value : TStringList);
procedure SetCodigoArticulo (Value : Variant);
procedure SetFCodigoArticulo (Value : Variant);
function GetCodigoArticulo: Variant;
function GetFCodigoArticulo: Variant;
procedure SetContenido (NuevoFrame : TRdxFrame); override;
function TratarCambios : integer; override;
procedure BuscarArticulo; virtual; abstract;
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
public
property TablaArticulos: TIBDataSet read FTablaArticulos write SetTablaArticulos;
property TablaArticulosFabPro: TIBDataSet read FTablaArticulosFabPro write SetTablaArticulosFabPro;
property ListaArticulos : TStringList read FListaArticulos write SetListaArticulos;
property CodigoArticulo : Variant read GetCodigoArticulo write SetCodigoArticulo;
property FCodigoArticulo : Variant read GetFCodigoArticulo write SetFCodigoArticulo;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property BaseDatos;
property Transaccion;
end;
implementation
{$R *.DFM}
uses
Literales{$IFDEF RDX_D6},Variants{$ENDIF};
{ TRdxFrameArticulos }
constructor TRdxFrameArticulos.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FListaArticulos := TStringList.Create;
FTablaArticulos := NIL;
end;
destructor TRdxFrameArticulos.Destroy;
begin
FListaArticulos.free;
FListaArticulos := NIL;
inherited;
end;
function TRdxFrameArticulos.TratarCambios : integer;
begin
if (TablaArticulos.Modified = True
or TablaArticulosFabPro.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 TRdxFrameArticulos.SetContenido(NuevoFrame: TRdxFrame);
begin
if (Contenido <> NIL) then
if (Contenido.Name = NuevoFrame.ClassName) then
begin
NuevoFrame.Free;
exit;
end;
inherited;
if (TablaArticulos <> NIL) then
begin
FCodigoArticulo := TablaArticulos.FieldByName('CODIGO').Value;
if (Contenido is TRdxFrameArticulos) then
(Contenido as TRdxFrameArticulos).CodigoArticulo := FCodigoArticulo;
end;
end;
procedure TRdxFrameArticulos.SetTablaArticulos(Value: TIBDataSet);
begin
if (FTablaArticulos <> Value) then
begin
FTablaArticulos := Value;
end;
end;
procedure TRdxFrameArticulos.CambiarModo(ModoAnterior, Modo : TRdxModo);
begin
inherited;
if (FModo in [Normal, Seleccionar]) then
begin
TablaArticulos.Close;
TablaArticulos.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 articulo que tiene el frame
en CodigoArticulo (al activar el modo Añadir NO se pisa este valor con
el código de articulo nuevo), preguntamos si la tabla esta activa por si
se ha cerrado al realizar algun cambio en modificar y ejecutar TratarCambios}
if (not TablaArticulos.Active) or (ModoAnterior = Anadir) then
BuscarArticulo;
end;
end;
function TRdxFrameArticulos.GetCodigoArticulo: Variant;
begin
Result := FCodigoArticulo;
end;
function TRdxFrameArticulos.GetFCodigoArticulo: Variant;
begin
if (ListaArticulos.Count = 0) then
Result := NULL
else
Result := ListaArticulos.Strings[ListaArticulos.Count-1];
end;
procedure TRdxFrameArticulos.SetCodigoArticulo(Value: Variant);
begin
if (not VarIsNull(Value)) then
begin
FCodigoArticulo := Value;
BuscarArticulo;
end
end;
procedure TRdxFrameArticulos.SetFCodigoArticulo(Value: Variant);
begin
FListaArticulos.Clear;
if (not VarIsNull(Value)) then
FListaArticulos.Add(Value);
end;
procedure TRdxFrameArticulos.SetListaArticulos(Value: TStringList);
begin
if (Value = Nil) or (Value.Count = 0) then
exit;
FListaArticulos.Clear;
FListaArticulos.Assign(Value);
end;
procedure TRdxFrameArticulos.SetTablaArticulosFabPro(Value: TIBDataSet);
begin
if (FTablaArticulosFabPro <> Value) then
begin
FTablaArticulosFabPro := Value;
end;
end;
end.