This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Frames/RdxFrameAlbaranesCliente.pas
2007-06-26 08:08:27 +00:00

216 lines
6.5 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2005. 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: 30-09-2005
Versión actual: 1.0.0
Fecha versión actual: 30-09-2005
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit RdxFrameAlbaranesCliente;
{$I ..\COMPILE.INC}
interface
uses
Windows, Classes,
RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades;
type
TRdxFrameAlbaranesCliente = class(TRdxDBFrame)
private
FTablaAlbaranes : TIBDataSet;
FTablaDetallesAlbaranes : TIBDataSet;
protected
FListaAlbaranes : TStringList;
procedure SetTablaAlbaranes (Value : TIBDataSet);
procedure SetTablaDetallesAlbaranes (Value : TIBDataSet);
procedure SetListaAlbaranes (Value : TStringList);
procedure SetCodigoAlbaran (Value : Variant);
procedure SetFCodigoAlbaran (Value : Variant);
function GetCodigoAlbaran: Variant;
function GetFCodigoAlbaran: Variant;
procedure SetContenido (NuevoFrame : TRdxFrame); override;
function TratarCambios : integer; override;
procedure BuscarAlbaran; virtual;
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
public
property TablaAlbaranes: TIBDataSet read FTablaAlbaranes write SetTablaAlbaranes;
property TablaDetallesAlbaranes: TIBDataSet read FTablaDetallesAlbaranes write SetTablaDetallesAlbaranes;
property ListaAlbaranes : TStringList read FListaAlbaranes write SetListaAlbaranes;
property CodigoAlbaran : Variant read GetCodigoAlbaran write SetCodigoAlbaran;
property FCodigoAlbaran : Variant read GetFCodigoAlbaran write SetFCodigoAlbaran;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property BaseDatos;
property Transaccion;
end;
implementation
{$R *.DFM}
uses
IB, Mensajes, StrFunc, Literales, Configuracion
{$IFDEF RDX_D6}, Variants{$ENDIF};
{ TRdxFrameAlbaranesCliente }
constructor TRdxFrameAlbaranesCliente.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FListaAlbaranes := TStringList.Create;
FTablaAlbaranes := NIL;
FTablaDetallesAlbaranes := NIL;
end;
function TRdxFrameAlbaranesCliente.TratarCambios : integer;
begin
if (TablaAlbaranes.State in dsEditModes) or
((TablaDetallesAlbaranes <> NIL) and (TablaDetallesAlbaranes.State in dsEditModes)) then
begin
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
end
else Result := IDOK;
end;
procedure TRdxFrameAlbaranesCliente.SetCodigoAlbaran(Value: Variant);
begin
if not EsCadenaVacia(Value) then
begin
FCodigoAlbaran := Value;
BuscarAlbaran;
end
end;
procedure TRdxFrameAlbaranesCliente.SetContenido(NuevoFrame: TRdxFrame);
begin
if (FContenido <> NIL) then
if (Contenido.Name = NuevoFrame.ClassName) then
begin
NuevoFrame.Free;
exit;
end;
inherited;
if (TablaAlbaranes <> NIL) then
begin
FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').Value;
if Contenido is TRdxFrameAlbaranesCliente then
begin
(Contenido as TRdxFrameAlbaranesCliente).CodigoAlbaran := FCodigoAlbaran;
end;
end;
end;
procedure TRdxFrameAlbaranesCliente.CambiarModo(ModoAnterior, Modo : TRdxModo);
begin
inherited;
if (FModo in [Normal, Seleccionar]) then
begin
TablaAlbaranes.Close;
TablaAlbaranes.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 albaran que tiene el frame
en CodigoAlbaran (al activar el modo Añadir NO se pisa este valor con
el código de albarán nuevo) }
if (not TablaAlbaranes.Active) or (ModoAnterior = Anadir) then
BuscarAlbaran;
end;
end;
procedure TRdxFrameAlbaranesCliente.SetTablaAlbaranes(Value: TIBDataSet);
begin
if (FTablaAlbaranes <> Value) then
FTablaAlbaranes := Value;
end;
procedure TRdxFrameAlbaranesCliente.SetTablaDetallesAlbaranes(Value: TIBDataSet);
begin
if (FTablaDetallesAlbaranes <> Value) then
FTablaDetallesAlbaranes := Value;
end;
procedure TRdxFrameAlbaranesCliente.BuscarAlbaran;
begin
//
end;
function TRdxFrameAlbaranesCliente.GetCodigoAlbaran: Variant;
begin
Result := FCodigoAlbaran;
end;
function TRdxFrameAlbaranesCliente.GetFCodigoAlbaran: Variant;
begin
if (ListaAlbaranes.Count = 0) then
Result := NULL
else
Result := ListaAlbaranes.Strings[ListaAlbaranes.Count-1];
end;
procedure TRdxFrameAlbaranesCliente.SetFCodigoAlbaran(Value: Variant);
begin
FListaAlbaranes.Clear;
if (not VarIsNull(Value)) then
FListaAlbaranes.Add(Value);
end;
procedure TRdxFrameAlbaranesCliente.SetListaAlbaranes(Value: TStringList);
begin
if (Value = NIL) or (Value.Count = 0) then
exit;
FListaAlbaranes.Clear;
FListaAlbaranes.Assign(Value);
end;
destructor TRdxFrameAlbaranesCliente.Destroy;
begin
FListaAlbaranes.Free;
FListaAlbaranes := NIL;
inherited;
end;
function TRdxFrameAlbaranesCliente.CambiarEntidad(EntidadAnterior,
Entidad: TRdxEntidad): Boolean;
begin
inherited CambiarEntidad(EntidadAnterior, Entidad);
ConfigurarFrame(Self, Self.Entidad);
end;
end.