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/RdxFrameFacturasCliente.pas
2007-06-26 08:08:27 +00:00

228 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.5
Fecha versión actual: 28-05-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
07-04-2002 Se ha adaptado el frame para transacción única.
09-04-2002 Sustituir las constantes IDYES/IDNO por IDOK.
02-08-2002 P224. El frame ahora trabaja con listas de facturas en vez de
con una sola factura.
02-02-2004 Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
Se ha adaptado a los nuevos contadores
28/05/2004 Se han adaptado los frames para que se autoconfiguren
===============================================================================
}
unit RdxFrameFacturasCliente;
{$I ..\COMPILE.INC}
interface
uses
Windows, Classes,
RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades;
type
TRdxFrameFacturasCliente = class(TRdxDBFrame)
private
FTablaFacturas : TIBDataSet;
FTablaDetallesFacturas : TIBDataSet;
protected
FListaFacturas : TStringList;
procedure SetTablaFacturas (Value : TIBDataSet);
procedure SetTablaDetallesFacturas (Value : TIBDataSet);
procedure SetListaFacturas (Value : TStringList);
procedure SetCodigoFactura (Value : Variant);
procedure SetFCodigoFactura (Value : Variant);
function GetCodigoFactura: Variant;
function GetFCodigoFactura: Variant;
procedure SetContenido (NuevoFrame : TRdxFrame); override;
function TratarCambios : integer; override;
procedure BuscarFactura; virtual;
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
public
property TablaFacturas: TIBDataSet read FTablaFacturas write SetTablaFacturas;
property TablaDetallesFacturas: TIBDataSet read FTablaDetallesFacturas write SetTablaDetallesFacturas;
property ListaFacturas : TStringList read FListaFacturas write SetListaFacturas;
property CodigoFactura : Variant read GetCodigoFactura write SetCodigoFactura;
property FCodigoFactura : Variant read GetFCodigoFactura write SetFCodigoFactura;
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};
{ TRdxFrameFacturasCliente }
constructor TRdxFrameFacturasCliente.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FListaFacturas := TStringList.Create;
FTablaFacturas := NIL;
FTablaDetallesFacturas := NIL;
end;
function TRdxFrameFacturasCliente.TratarCambios : integer;
begin
if (TablaFacturas.State in dsEditModes) or
((TablaDetallesFacturas <> NIL) and (TablaDetallesFacturas.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 TRdxFrameFacturasCliente.SetCodigoFactura(Value: Variant);
begin
if not EsCadenaVacia(Value) then
begin
FCodigoFactura := Value;
BuscarFactura;
end
end;
procedure TRdxFrameFacturasCliente.SetContenido(NuevoFrame: TRdxFrame);
begin
if (FContenido <> NIL) then
if (Contenido.Name = NuevoFrame.ClassName) then
begin
NuevoFrame.Free;
exit;
end;
inherited;
if (TablaFacturas <> NIL) then
begin
FCodigoFactura := TablaFacturas.FieldByName('CODIGO').Value;
if Contenido is TRdxFrameFacturasCliente then
begin
(Contenido as TRdxFrameFacturasCliente).CodigoFactura := FCodigoFactura;
end;
end;
end;
procedure TRdxFrameFacturasCliente.CambiarModo(ModoAnterior, Modo : TRdxModo);
begin
inherited;
if (FModo in [Normal, Seleccionar]) then
begin
TablaFacturas.Close;
TablaFacturas.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 factura que tiene el frame
en CodigoFactura (al activar el modo Añadir NO se pisa este valor con
el código de factura nuevo) }
if (not TablaFacturas.Active) or (ModoAnterior = Anadir) then
BuscarFactura;
end;
end;
procedure TRdxFrameFacturasCliente.SetTablaFacturas(Value: TIBDataSet);
begin
if (FTablaFacturas <> Value) then
FTablaFacturas := Value;
end;
procedure TRdxFrameFacturasCliente.SetTablaDetallesFacturas(Value: TIBDataSet);
begin
if (FTablaDetallesFacturas <> Value) then
FTablaDetallesFacturas := Value;
end;
procedure TRdxFrameFacturasCliente.BuscarFactura;
begin
//
end;
function TRdxFrameFacturasCliente.GetCodigoFactura: Variant;
begin
Result := FCodigoFactura;
end;
function TRdxFrameFacturasCliente.GetFCodigoFactura: Variant;
begin
if (ListaFacturas.Count = 0) then
Result := NULL
else
Result := ListaFacturas.Strings[ListaFacturas.Count-1];
end;
procedure TRdxFrameFacturasCliente.SetFCodigoFactura(Value: Variant);
begin
FListaFacturas.Clear;
if (not VarIsNull(Value)) then
FListaFacturas.Add(Value);
end;
procedure TRdxFrameFacturasCliente.SetListaFacturas(Value: TStringList);
begin
if (Value = NIL) or (Value.Count = 0) then
exit;
FListaFacturas.Clear;
FListaFacturas.Assign(Value);
end;
destructor TRdxFrameFacturasCliente.Destroy;
begin
FListaFacturas.Free;
FListaFacturas := NIL;
inherited;
end;
function TRdxFrameFacturasCliente.CambiarEntidad(EntidadAnterior,
Entidad: TRdxEntidad): Boolean;
begin
inherited CambiarEntidad(EntidadAnterior, Entidad);
ConfigurarFrame(Self, Self.Entidad);
end;
end.