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

231 lines
6.9 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: 20-08-2002
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
31-03-2002 Eliminar el procedimiento virtual BorrarLineasDetalle, que se aplicaba
al TratarCambios y decir que si.
07-04-2002 Se ha adaptado el frame para transaccion unica.
09-04-2002 Sustituir las constantes IDYES/IDNO por IDOK.
20-08-2002 Añadir en TratarCambios el Cancel.
===============================================================================
}
unit RdxFrameMovimientos;
{$I ..\COMPILE.INC}
interface
uses
Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RdxFrame, RdxDBFrame, IBCustomDataSet, Tipos, IBDataBase, DB, RxMemDS;
type
TRdxFrameMovimientos = class(TRdxDBFrame)
private
FTablaPedidos : TIBDataSet;
FTablaDetalleMem : TRxMemoryData;
protected
FCodigoAlmacenOrigen : Variant;
FCodigoAlmacenDestino : Variant;
FCodigoArticulo : Variant;
FCodigoPedido : Variant;
FCodigoCliente : Variant;
FListaAlmacenesCodigo : TStringList;
FListaCodigosAlmacen : TStringList;
procedure SetTablaPedidos (Value : TIBDataSet);
procedure SetTablaDetalleMem (Value : TRxMemoryData);
procedure SetCodigoAlmacenOrigen (Value : Variant); virtual;
procedure SetCodigoAlmacenDestino (Value : Variant); virtual;
procedure SetCodigoArticulo (Value : Variant); virtual;
procedure SetCodigoPedido (Value : Variant); virtual;
procedure SetCodigoCliente (Value : Variant); virtual;
procedure BuscarAlmacenOrigen; virtual; abstract;
procedure BuscarAlmacenDestino; virtual; abstract;
procedure BuscarPedido; virtual; abstract;
procedure BuscarCliente; virtual; abstract;
function TratarCambios : integer; override;
procedure SetContenido (NuevoFrame : TRdxFrame); override;
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
public
property TablaPedidos: TIBDataSet read FTablaPedidos write SetTablaPedidos;
property TablaDetalleMem: TRxMemoryData read FTablaDetalleMem write SetTablaDetalleMem;
property CodigoAlmacenOrigen : Variant read FCodigoAlmacenOrigen write SetCodigoAlmacenOrigen;
property CodigoAlmacenDestino : Variant read FCodigoAlmacenDestino write SetCodigoAlmacenDestino;
property CodigoPedido : Variant read FCodigoPedido write SetCodigoPedido;
property CodigoCliente : Variant read FCodigoCliente write SetCodigoCliente;
property CodigoArticulo : Variant read FCodigoArticulo write SetCodigoArticulo;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property BaseDatos;
property Transaccion;
end;
implementation
{$R *.DFM}
uses
IB, Mensajes
{$IFDEF RDX_D6}, Variants{$ENDIF};
{ TRdxFrameProveedores }
const
msgPregunta = '¿Esta seguro de que desea salir del movimiento?';
constructor TRdxFrameMovimientos.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTablaPedidos := nil;
FTablaDetalleMem := nil;
FCodigoAlmacenOrigen := NULL;
FCodigoAlmacenDestino := NULL;
FCodigoPedido := NULL;
FCodigoCliente := NULL;
FCodigoArticulo := NULL;
FListaAlmacenesCodigo := TStringList.Create;
FListaCodigosAlmacen := TStringList.Create;
end;
destructor TRdxFrameMovimientos.Destroy;
begin
FListaAlmacenesCodigo.Free;
FListaCodigosAlmacen.Free;
inherited;
end;
procedure TRdxFrameMovimientos.SetContenido(NuevoFrame: TRdxFrame);
begin
if (FContenido <> NIL) then
if (Contenido.Name = NuevoFrame.ClassName) then
begin
NuevoFrame.Free;
exit;
end;
inherited;
end;
procedure TRdxFrameMovimientos.SetCodigoAlmacenOrigen(Value: Variant);
begin
if (not VarIsNull(Value)) then
begin
FCodigoAlmacenOrigen := Value;
BuscarAlmacenOrigen;
end;
end;
procedure TRdxFrameMovimientos.SetCodigoArticulo(Value: Variant);
begin
if VarIsNull(Value) then
exit;
if Value = '' then
exit;
FCodigoArticulo := Value;
end;
procedure TRdxFrameMovimientos.SetCodigoAlmacenDestino(Value: Variant);
begin
if not VarIsNull(Value) then
begin
FCodigoAlmacenDestino := Value;
BuscarAlmacenDestino;
end;
end;
procedure TRdxFrameMovimientos.SetCodigoPedido(Value: Variant);
begin
if (not VarIsNull(Value)) then
begin
FCodigoPedido := Value;
BuscarPedido;
end;
end;
procedure TRdxFrameMovimientos.SetCodigoCliente(Value: Variant);
begin
if (not VarIsNull(Value)) then
begin
FCodigoCliente := Value;
BuscarCliente;
end;
end;
procedure TRdxFrameMovimientos.CambiarModo(ModoAnterior, Modo: TRdxModo);
begin
inherited;
if (FModo in [Normal, Seleccionar]) then
begin
TablaDetalleMem.Close;
TablaDetalleMem.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 TablaDetalleMem.Active) or (ModoAnterior = Anadir) then
BuscarAlmacenDestino;
end;
end;
procedure TRdxFrameMovimientos.SetTablaPedidos(Value: TIBDataSet);
begin
if (FTablaPedidos <> Value) then
begin
FTablaPedidos := Value;
end;
end;
procedure TRdxFrameMovimientos.SetTablaDetalleMem(Value: TRxMemoryData);
begin
if (FTablaDetalleMem <> Value) then
begin
FTablaDetalleMem := Value;
end;
end;
function TRdxFrameMovimientos.TratarCambios : integer;
begin
if TablaDetalleMem.Modified = true then
TablaDetalleMem.Post;
if (TablaDetalleMem.RecordCount <> 0) then
case VerMensajePregunta(msgPregunta) of
IDYES : Result := IDOK;
IDNO : Result := IDNO;
IDCANCEL : Result := IDCANCEL;
end
else Result := IDOK;
end;
end.