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