{ =============================================================================== 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: 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. 28/05/2004 Se han adaptado los frames para que se autoconfiguren =============================================================================== } unit RdxFrameFacturasProforma; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameFacturasProforma = 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}; { TRdxFrameFacturasProforma } constructor TRdxFrameFacturasProforma.Create(AOwner: TComponent); begin inherited Create(AOwner); FListaFacturas := TStringList.Create; FTablaFacturas := NIL; FTablaDetallesFacturas := NIL; end; function TRdxFrameFacturasProforma.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 TRdxFrameFacturasProforma.SetCodigoFactura(Value: Variant); begin if not EsCadenaVacia(Value) then begin FCodigoFactura := Value; BuscarFactura; end end; procedure TRdxFrameFacturasProforma.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 TRdxFrameFacturasProforma then (Contenido as TRdxFrameFacturasProforma).CodigoFactura := FCodigoFactura; end; end; procedure TRdxFrameFacturasProforma.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 TRdxFrameFacturasProforma.SetTablaFacturas(Value: TIBDataSet); begin if (FTablaFacturas <> Value) then FTablaFacturas := Value; end; procedure TRdxFrameFacturasProforma.SetTablaDetallesFacturas(Value: TIBDataSet); begin if (FTablaDetallesFacturas <> Value) then FTablaDetallesFacturas := Value; end; procedure TRdxFrameFacturasProforma.BuscarFactura; begin // end; function TRdxFrameFacturasProforma.GetCodigoFactura: Variant; begin Result := FCodigoFactura; end; function TRdxFrameFacturasProforma.GetFCodigoFactura: Variant; begin if (ListaFacturas.Count = 0) then Result := NULL else Result := ListaFacturas.Strings[ListaFacturas.Count-1]; end; procedure TRdxFrameFacturasProforma.SetFCodigoFactura(Value: Variant); begin FListaFacturas.Clear; if (not VarIsNull(Value)) then FListaFacturas.Add(Value); end; procedure TRdxFrameFacturasProforma.SetListaFacturas(Value: TStringList); begin if (Value = NIL) or (Value.Count = 0) then exit; FListaFacturas.Clear; FListaFacturas.Assign(Value); end; destructor TRdxFrameFacturasProforma.Destroy; begin FListaFacturas.Free; FListaFacturas := NIL; inherited; end; function TRdxFrameFacturasProforma.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.