diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql
index 472e51d4..f04c2629 100644
--- a/Database/scripts/factuges.sql
+++ b/Database/scripts/factuges.sql
@@ -2354,7 +2354,6 @@ AND (ARTICULOS.INVENTARIABLE = 1)
;
-
/* View: V_INV_DETALLE_RESERVAS */
CREATE VIEW V_INV_DETALLE_RESERVAS(
ID,
@@ -2372,20 +2371,22 @@ CREATE VIEW V_INV_DETALLE_RESERVAS(
REFERENCIA_FABR,
CANTIDAD,
ID_ALMACEN_RESERVA,
- NOMBRE_ALMACEN_RESERVA)
+ NOMBRE_ALMACEN_RESERVA,
+ ID_EMPRESA_ALMACEN_RESERVA)
AS
select movimientos.id, almacenes1.ID_EMPRESA, movimientos.ID_ALMACEN, almacenes1.nombre as nombre_almacen,
movimientos.fecha_movimiento as fecha_reserva, movimientos.causa, movimientos.id_articulo,
articulos.referencia, articulos.descripcion, articulos.familia,
articulos.unidad_medida, articulos.fabricante, articulos.referencia_fabr,
movimientos.cantidad, movimientos.id_almacen_reserva,
-almacenes2.nombre as nombre_almacen_reserva
+almacenes2.nombre as nombre_almacen_reserva, almacenes2.id_empresa
from movimientos
left join almacenes almacenes1 on (almacenes1.ID = movimientos.ID_ALMACEN)
left join almacenes almacenes2 on (almacenes2.ID = movimientos.ID_ALMACEN_RESERVA)
left join articulos on (articulos.id = movimientos.id_articulo)
where tipo = 'R'
;
+;
diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewDatosYSeleccionClienteAlbaran.pas b/Source/Modulos/Albaranes de cliente/Views/uViewDatosYSeleccionClienteAlbaran.pas
index abcf12dd..f64fe3cc 100644
--- a/Source/Modulos/Albaranes de cliente/Views/uViewDatosYSeleccionClienteAlbaran.pas
+++ b/Source/Modulos/Albaranes de cliente/Views/uViewDatosYSeleccionClienteAlbaran.pas
@@ -264,7 +264,7 @@ begin
FAlbaran.IMPORTE_PORTE := FDireccion.PORTE;
end;
//Siempre asignaremos la persona de contacto ya sea de las direcciones del contacto o la ID_Direccion=0 que es la principal de la ficha
- FPresupuesto.PERSONA_CONTACTO := FDireccion.PERSONA_CONTACTO;
+ FAlbaran.PERSONA_CONTACTO := FDireccion.PERSONA_CONTACTO;
EscribirTextoDireccion;
end;
end;
diff --git a/Source/Modulos/Inventario/Controller/uInventarioController.pas b/Source/Modulos/Inventario/Controller/uInventarioController.pas
index ba763008..99fd589d 100644
--- a/Source/Modulos/Inventario/Controller/uInventarioController.pas
+++ b/Source/Modulos/Inventario/Controller/uInventarioController.pas
@@ -200,21 +200,21 @@ end;
function TInventarioController.Buscar(const ID_ALMACEN: Integer): IBizInventario;
begin
Result := (FDataModule as IDataModuleInventario).GetItems(ID_ALMACEN);
-//Los inventarios serán comunes
+//Los inventarios serán comunes lo que pasa es que ciertas obras no se podrán ver sus inventarios si no está su empresa activa
// FiltrarEmpresa(Result);
end;
function TInventarioController.BuscarDetalleReservas: IBizDetalleReservas;
begin
Result := FDataModule.GetDetalleReservas;
-//Los inventarios serán comunes
-// FiltrarEmpresa(Result);
+ //Se filtra para que solo salgan las reservas a obras o almacenes de la empresa activa
+ FiltrarEmpresa(Result);
end;
function TInventarioController.BuscarTodos: IBizInventario;
begin
Result := FDataModule.GetItems;
-//Los inventarios serán comunes
+//Los inventarios serán comunes lo que pasa es que ciertas obras no se podrán ver sus inventarios si no está su empresa activa
// FiltrarEmpresa(Result);
end;
@@ -460,13 +460,13 @@ var
Condicion: TDAWhereExpression;
begin
if ADetalleReservas.DataTable.Active then
- ADetalleReservas.DataTable.Active := False;
+ ADetalleReservas.DataTable.Active := False;
// Filtrar los inventario actuales por empresa
with ADetalleReservas.DataTable.DynamicWhere do
begin
// (ID_EMPRESA >= ID)
- Condicion := NewBinaryExpression(NewField('', fld_DetalleReservasID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual);
+ Condicion := NewBinaryExpression(NewField('', fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
@@ -561,7 +561,7 @@ begin
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.TipoReservas := ATipoReservas;
AEditor.IdAlmacenObra := IdAlmacenObra;
- AEditor.DetalleReservas := FDataModule.GetDetalleReservas;
+ AEditor.DetalleReservas := BuscarDetalleReservas;
AEditor.Articulo := AArticulo;
AEditor.MultiSelect := True;
AEditor.ShowModal;
diff --git a/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm b/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
index 472899d0..e756c0b7 100644
--- a/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
+++ b/Source/Modulos/Inventario/Data/uDataModuleInventario.dfm
@@ -14,12 +14,12 @@ inherited DataModuleInventario: TDataModuleInventario
Top = 84
end
object rda_Inventario: TDARemoteDataAdapter
+ DataStreamer = Bin2DataStreamer
GetSchemaCall.RemoteService = RORemoteService
GetDataCall.RemoteService = RORemoteService
UpdateDataCall.RemoteService = RORemoteService
GetScriptsCall.RemoteService = RORemoteService
RemoteService = RORemoteService
- DataStreamer = Bin2DataStreamer
Left = 51
Top = 151
end
@@ -88,7 +88,7 @@ inherited DataModuleInventario: TDataModuleInventario
end
item
Name = 'CANTIDAD'
- DataType = datFloat
+ DataType = datCurrency
end
item
Name = 'ID_ALMACEN_RESERVA'
@@ -98,12 +98,14 @@ inherited DataModuleInventario: TDataModuleInventario
Name = 'NOMBRE_ALMACEN_RESERVA'
DataType = datString
Size = 255
+ end
+ item
+ Name = 'ID_EMPRESA_ALMACEN_RESERVA'
+ DataType = datInteger
end>
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_Inventario
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'DetalleReservas'
IndexDefs = <>
Left = 360
@@ -232,8 +234,6 @@ inherited DataModuleInventario: TDataModuleInventario
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_Inventario
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'Inventario'
IndexDefs = <>
Left = 184
diff --git a/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas b/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
index 7468575b..53adb3ff 100644
--- a/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
+++ b/Source/Modulos/Inventario/Model/schInventarioClient_Intf.pas
@@ -3,14 +3,14 @@ unit schInventarioClient_Intf;
interface
uses
- Classes, DB, schBase_Intf, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf;
+ Classes, DB, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf;
const
{ Data table rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_Inventario = '{FBC72002-7716-4732-AAD2-E87B268B83A0}';
- RID_DetalleReservas = '{F3C9E29D-BD43-4801-AD95-A0D11AFB4098}';
+ RID_Inventario = '{B558C6EC-462B-47CD-A0A1-277535DCDCD3}';
+ RID_DetalleReservas = '{B0B5857C-72EA-4C1D-841A-91AA5270F172}';
{ Data table names }
nme_Inventario = 'Inventario';
@@ -75,6 +75,7 @@ const
fld_DetalleReservasCANTIDAD = 'CANTIDAD';
fld_DetalleReservasID_ALMACEN_RESERVA = 'ID_ALMACEN_RESERVA';
fld_DetalleReservasNOMBRE_ALMACEN_RESERVA = 'NOMBRE_ALMACEN_RESERVA';
+ fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA = 'ID_EMPRESA_ALMACEN_RESERVA';
{ DetalleReservas field indexes }
idx_DetalleReservasID = 0;
@@ -93,11 +94,12 @@ const
idx_DetalleReservasCANTIDAD = 13;
idx_DetalleReservasID_ALMACEN_RESERVA = 14;
idx_DetalleReservasNOMBRE_ALMACEN_RESERVA = 15;
+ idx_DetalleReservasID_EMPRESA_ALMACEN_RESERVA = 16;
type
{ IInventario }
IInventario = interface(IDAStronglyTypedDataTable)
- ['{69094B48-AAFF-4300-B006-0DCEAEE89878}']
+ ['{BE22C3F8-FA99-475E-8C10-4F08590A9331}']
{ Property getters and setters }
function GetID_ALMACENValue: Integer;
procedure SetID_ALMACENValue(const aValue: Integer);
@@ -219,7 +221,7 @@ type
end;
{ TInventarioDataTableRules }
- TInventarioDataTableRules = class(TIntfObjectDADataTableRules, IInventario)
+ TInventarioDataTableRules = class(TDADataTableRules, IInventario)
private
protected
{ Property getters and setters }
@@ -348,7 +350,7 @@ type
{ IDetalleReservas }
IDetalleReservas = interface(IDAStronglyTypedDataTable)
- ['{7C927164-3284-4152-A13D-96A8BD88298E}']
+ ['{8A4D1E34-9AFD-4798-9D59-1649308DD4AB}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -402,8 +404,8 @@ type
procedure SetREFERENCIA_FABRValue(const aValue: String);
function GetREFERENCIA_FABRIsNull: Boolean;
procedure SetREFERENCIA_FABRIsNull(const aValue: Boolean);
- function GetCANTIDADValue: Float;
- procedure SetCANTIDADValue(const aValue: Float);
+ function GetCANTIDADValue: Currency;
+ procedure SetCANTIDADValue(const aValue: Currency);
function GetCANTIDADIsNull: Boolean;
procedure SetCANTIDADIsNull(const aValue: Boolean);
function GetID_ALMACEN_RESERVAValue: Integer;
@@ -414,6 +416,10 @@ type
procedure SetNOMBRE_ALMACEN_RESERVAValue(const aValue: String);
function GetNOMBRE_ALMACEN_RESERVAIsNull: Boolean;
procedure SetNOMBRE_ALMACEN_RESERVAIsNull(const aValue: Boolean);
+ function GetID_EMPRESA_ALMACEN_RESERVAValue: Integer;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAValue(const aValue: Integer);
+ function GetID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAIsNull(const aValue: Boolean);
{ Properties }
@@ -443,16 +449,18 @@ type
property FABRICANTEIsNull: Boolean read GetFABRICANTEIsNull write SetFABRICANTEIsNull;
property REFERENCIA_FABR: String read GetREFERENCIA_FABRValue write SetREFERENCIA_FABRValue;
property REFERENCIA_FABRIsNull: Boolean read GetREFERENCIA_FABRIsNull write SetREFERENCIA_FABRIsNull;
- property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue;
property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
property ID_ALMACEN_RESERVA: Integer read GetID_ALMACEN_RESERVAValue write SetID_ALMACEN_RESERVAValue;
property ID_ALMACEN_RESERVAIsNull: Boolean read GetID_ALMACEN_RESERVAIsNull write SetID_ALMACEN_RESERVAIsNull;
property NOMBRE_ALMACEN_RESERVA: String read GetNOMBRE_ALMACEN_RESERVAValue write SetNOMBRE_ALMACEN_RESERVAValue;
property NOMBRE_ALMACEN_RESERVAIsNull: Boolean read GetNOMBRE_ALMACEN_RESERVAIsNull write SetNOMBRE_ALMACEN_RESERVAIsNull;
+ property ID_EMPRESA_ALMACEN_RESERVA: Integer read GetID_EMPRESA_ALMACEN_RESERVAValue write SetID_EMPRESA_ALMACEN_RESERVAValue;
+ property ID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean read GetID_EMPRESA_ALMACEN_RESERVAIsNull write SetID_EMPRESA_ALMACEN_RESERVAIsNull;
end;
{ TDetalleReservasDataTableRules }
- TDetalleReservasDataTableRules = class(TIntfObjectDADataTableRules, IDetalleReservas)
+ TDetalleReservasDataTableRules = class(TDADataTableRules, IDetalleReservas)
private
protected
{ Property getters and setters }
@@ -508,8 +516,8 @@ type
procedure SetREFERENCIA_FABRValue(const aValue: String); virtual;
function GetREFERENCIA_FABRIsNull: Boolean; virtual;
procedure SetREFERENCIA_FABRIsNull(const aValue: Boolean); virtual;
- function GetCANTIDADValue: Float; virtual;
- procedure SetCANTIDADValue(const aValue: Float); virtual;
+ function GetCANTIDADValue: Currency; virtual;
+ procedure SetCANTIDADValue(const aValue: Currency); virtual;
function GetCANTIDADIsNull: Boolean; virtual;
procedure SetCANTIDADIsNull(const aValue: Boolean); virtual;
function GetID_ALMACEN_RESERVAValue: Integer; virtual;
@@ -520,6 +528,10 @@ type
procedure SetNOMBRE_ALMACEN_RESERVAValue(const aValue: String); virtual;
function GetNOMBRE_ALMACEN_RESERVAIsNull: Boolean; virtual;
procedure SetNOMBRE_ALMACEN_RESERVAIsNull(const aValue: Boolean); virtual;
+ function GetID_EMPRESA_ALMACEN_RESERVAValue: Integer; virtual;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAValue(const aValue: Integer); virtual;
+ function GetID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID: Integer read GetIDValue write SetIDValue;
@@ -548,12 +560,14 @@ type
property FABRICANTEIsNull: Boolean read GetFABRICANTEIsNull write SetFABRICANTEIsNull;
property REFERENCIA_FABR: String read GetREFERENCIA_FABRValue write SetREFERENCIA_FABRValue;
property REFERENCIA_FABRIsNull: Boolean read GetREFERENCIA_FABRIsNull write SetREFERENCIA_FABRIsNull;
- property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue;
property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
property ID_ALMACEN_RESERVA: Integer read GetID_ALMACEN_RESERVAValue write SetID_ALMACEN_RESERVAValue;
property ID_ALMACEN_RESERVAIsNull: Boolean read GetID_ALMACEN_RESERVAIsNull write SetID_ALMACEN_RESERVAIsNull;
property NOMBRE_ALMACEN_RESERVA: String read GetNOMBRE_ALMACEN_RESERVAValue write SetNOMBRE_ALMACEN_RESERVAValue;
property NOMBRE_ALMACEN_RESERVAIsNull: Boolean read GetNOMBRE_ALMACEN_RESERVAIsNull write SetNOMBRE_ALMACEN_RESERVAIsNull;
+ property ID_EMPRESA_ALMACEN_RESERVA: Integer read GetID_EMPRESA_ALMACEN_RESERVAValue write SetID_EMPRESA_ALMACEN_RESERVAValue;
+ property ID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean read GetID_EMPRESA_ALMACEN_RESERVAIsNull write SetID_EMPRESA_ALMACEN_RESERVAIsNull;
public
constructor Create(aDataTable: TDADataTable); override;
@@ -1260,14 +1274,14 @@ begin
DataTable.Fields[idx_DetalleReservasREFERENCIA_FABR].AsVariant := Null;
end;
-function TDetalleReservasDataTableRules.GetCANTIDADValue: Float;
+function TDetalleReservasDataTableRules.GetCANTIDADValue: Currency;
begin
- result := DataTable.Fields[idx_DetalleReservasCANTIDAD].AsFloat;
+ result := DataTable.Fields[idx_DetalleReservasCANTIDAD].AsCurrency;
end;
-procedure TDetalleReservasDataTableRules.SetCANTIDADValue(const aValue: Float);
+procedure TDetalleReservasDataTableRules.SetCANTIDADValue(const aValue: Currency);
begin
- DataTable.Fields[idx_DetalleReservasCANTIDAD].AsFloat := aValue;
+ DataTable.Fields[idx_DetalleReservasCANTIDAD].AsCurrency := aValue;
end;
function TDetalleReservasDataTableRules.GetCANTIDADIsNull: boolean;
@@ -1323,6 +1337,27 @@ begin
DataTable.Fields[idx_DetalleReservasNOMBRE_ALMACEN_RESERVA].AsVariant := Null;
end;
+function TDetalleReservasDataTableRules.GetID_EMPRESA_ALMACEN_RESERVAValue: Integer;
+begin
+ result := DataTable.Fields[idx_DetalleReservasID_EMPRESA_ALMACEN_RESERVA].AsInteger;
+end;
+
+procedure TDetalleReservasDataTableRules.SetID_EMPRESA_ALMACEN_RESERVAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_DetalleReservasID_EMPRESA_ALMACEN_RESERVA].AsInteger := aValue;
+end;
+
+function TDetalleReservasDataTableRules.GetID_EMPRESA_ALMACEN_RESERVAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_DetalleReservasID_EMPRESA_ALMACEN_RESERVA].IsNull;
+end;
+
+procedure TDetalleReservasDataTableRules.SetID_EMPRESA_ALMACEN_RESERVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_DetalleReservasID_EMPRESA_ALMACEN_RESERVA].AsVariant := Null;
+end;
+
initialization
RegisterDataTableRules(RID_Inventario, TInventarioDataTableRules);
diff --git a/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas b/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
index 56559a1e..2a15fd55 100644
--- a/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
+++ b/Source/Modulos/Inventario/Model/schInventarioServer_Intf.pas
@@ -9,13 +9,13 @@ const
{ Delta rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_InventarioDelta = '{EEE94793-3B30-4C75-8A58-49D210D83C96}';
- RID_DetalleReservasDelta = '{9660A034-84F2-4E92-987A-3518CA2FB934}';
+ RID_InventarioDelta = '{D5FDE8E5-7FF7-4ABB-AE86-0650D9D28956}';
+ RID_DetalleReservasDelta = '{3087502E-1C78-45AA-9164-988726607EE9}';
type
{ IInventarioDelta }
IInventarioDelta = interface(IInventario)
- ['{EEE94793-3B30-4C75-8A58-49D210D83C96}']
+ ['{D5FDE8E5-7FF7-4ABB-AE86-0650D9D28956}']
{ Property getters and setters }
function GetOldID_ALMACENValue : Integer;
function GetOldID_ARTICULOValue : Integer;
@@ -265,7 +265,7 @@ type
{ IDetalleReservasDelta }
IDetalleReservasDelta = interface(IDetalleReservas)
- ['{9660A034-84F2-4E92-987A-3518CA2FB934}']
+ ['{3087502E-1C78-45AA-9164-988726607EE9}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -280,9 +280,10 @@ type
function GetOldUNIDAD_MEDIDAValue : String;
function GetOldFABRICANTEValue : String;
function GetOldREFERENCIA_FABRValue : String;
- function GetOldCANTIDADValue : Float;
+ function GetOldCANTIDADValue : Currency;
function GetOldID_ALMACEN_RESERVAValue : Integer;
function GetOldNOMBRE_ALMACEN_RESERVAValue : String;
+ function GetOldID_EMPRESA_ALMACEN_RESERVAValue : Integer;
{ Properties }
property OldID : Integer read GetOldIDValue;
@@ -298,9 +299,10 @@ type
property OldUNIDAD_MEDIDA : String read GetOldUNIDAD_MEDIDAValue;
property OldFABRICANTE : String read GetOldFABRICANTEValue;
property OldREFERENCIA_FABR : String read GetOldREFERENCIA_FABRValue;
- property OldCANTIDAD : Float read GetOldCANTIDADValue;
+ property OldCANTIDAD : Currency read GetOldCANTIDADValue;
property OldID_ALMACEN_RESERVA : Integer read GetOldID_ALMACEN_RESERVAValue;
property OldNOMBRE_ALMACEN_RESERVA : String read GetOldNOMBRE_ALMACEN_RESERVAValue;
+ property OldID_EMPRESA_ALMACEN_RESERVA : Integer read GetOldID_EMPRESA_ALMACEN_RESERVAValue;
end;
{ TDetalleReservasBusinessProcessorRules }
@@ -386,11 +388,11 @@ type
function GetOldREFERENCIA_FABRIsNull: Boolean; virtual;
procedure SetREFERENCIA_FABRValue(const aValue: String); virtual;
procedure SetREFERENCIA_FABRIsNull(const aValue: Boolean); virtual;
- function GetCANTIDADValue: Float; virtual;
+ function GetCANTIDADValue: Currency; virtual;
function GetCANTIDADIsNull: Boolean; virtual;
- function GetOldCANTIDADValue: Float; virtual;
+ function GetOldCANTIDADValue: Currency; virtual;
function GetOldCANTIDADIsNull: Boolean; virtual;
- procedure SetCANTIDADValue(const aValue: Float); virtual;
+ procedure SetCANTIDADValue(const aValue: Currency); virtual;
procedure SetCANTIDADIsNull(const aValue: Boolean); virtual;
function GetID_ALMACEN_RESERVAValue: Integer; virtual;
function GetID_ALMACEN_RESERVAIsNull: Boolean; virtual;
@@ -404,6 +406,12 @@ type
function GetOldNOMBRE_ALMACEN_RESERVAIsNull: Boolean; virtual;
procedure SetNOMBRE_ALMACEN_RESERVAValue(const aValue: String); virtual;
procedure SetNOMBRE_ALMACEN_RESERVAIsNull(const aValue: Boolean); virtual;
+ function GetID_EMPRESA_ALMACEN_RESERVAValue: Integer; virtual;
+ function GetID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean; virtual;
+ function GetOldID_EMPRESA_ALMACEN_RESERVAValue: Integer; virtual;
+ function GetOldID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAValue(const aValue: Integer); virtual;
+ procedure SetID_EMPRESA_ALMACEN_RESERVAIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID : Integer read GetIDValue write SetIDValue;
@@ -458,9 +466,9 @@ type
property REFERENCIA_FABRIsNull : Boolean read GetREFERENCIA_FABRIsNull write SetREFERENCIA_FABRIsNull;
property OldREFERENCIA_FABR : String read GetOldREFERENCIA_FABRValue;
property OldREFERENCIA_FABRIsNull : Boolean read GetOldREFERENCIA_FABRIsNull;
- property CANTIDAD : Float read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDAD : Currency read GetCANTIDADValue write SetCANTIDADValue;
property CANTIDADIsNull : Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
- property OldCANTIDAD : Float read GetOldCANTIDADValue;
+ property OldCANTIDAD : Currency read GetOldCANTIDADValue;
property OldCANTIDADIsNull : Boolean read GetOldCANTIDADIsNull;
property ID_ALMACEN_RESERVA : Integer read GetID_ALMACEN_RESERVAValue write SetID_ALMACEN_RESERVAValue;
property ID_ALMACEN_RESERVAIsNull : Boolean read GetID_ALMACEN_RESERVAIsNull write SetID_ALMACEN_RESERVAIsNull;
@@ -470,6 +478,10 @@ type
property NOMBRE_ALMACEN_RESERVAIsNull : Boolean read GetNOMBRE_ALMACEN_RESERVAIsNull write SetNOMBRE_ALMACEN_RESERVAIsNull;
property OldNOMBRE_ALMACEN_RESERVA : String read GetOldNOMBRE_ALMACEN_RESERVAValue;
property OldNOMBRE_ALMACEN_RESERVAIsNull : Boolean read GetOldNOMBRE_ALMACEN_RESERVAIsNull;
+ property ID_EMPRESA_ALMACEN_RESERVA : Integer read GetID_EMPRESA_ALMACEN_RESERVAValue write SetID_EMPRESA_ALMACEN_RESERVAValue;
+ property ID_EMPRESA_ALMACEN_RESERVAIsNull : Boolean read GetID_EMPRESA_ALMACEN_RESERVAIsNull write SetID_EMPRESA_ALMACEN_RESERVAIsNull;
+ property OldID_EMPRESA_ALMACEN_RESERVA : Integer read GetOldID_EMPRESA_ALMACEN_RESERVAValue;
+ property OldID_EMPRESA_ALMACEN_RESERVAIsNull : Boolean read GetOldID_EMPRESA_ALMACEN_RESERVAIsNull;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@@ -1497,7 +1509,7 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasREFERENCIA_FABR] := Null;
end;
-function TDetalleReservasBusinessProcessorRules.GetCANTIDADValue: Float;
+function TDetalleReservasBusinessProcessorRules.GetCANTIDADValue: Currency;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasCANTIDAD];
end;
@@ -1507,7 +1519,7 @@ begin
result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasCANTIDAD]);
end;
-function TDetalleReservasBusinessProcessorRules.GetOldCANTIDADValue: Float;
+function TDetalleReservasBusinessProcessorRules.GetOldCANTIDADValue: Currency;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetalleReservasCANTIDAD];
end;
@@ -1517,7 +1529,7 @@ begin
result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_DetalleReservasCANTIDAD]);
end;
-procedure TDetalleReservasBusinessProcessorRules.SetCANTIDADValue(const aValue: Float);
+procedure TDetalleReservasBusinessProcessorRules.SetCANTIDADValue(const aValue: Currency);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasCANTIDAD] := aValue;
end;
@@ -1590,6 +1602,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasNOMBRE_ALMACEN_RESERVA] := Null;
end;
+function TDetalleReservasBusinessProcessorRules.GetID_EMPRESA_ALMACEN_RESERVAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA];
+end;
+
+function TDetalleReservasBusinessProcessorRules.GetID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA]);
+end;
+
+function TDetalleReservasBusinessProcessorRules.GetOldID_EMPRESA_ALMACEN_RESERVAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA];
+end;
+
+function TDetalleReservasBusinessProcessorRules.GetOldID_EMPRESA_ALMACEN_RESERVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA]);
+end;
+
+procedure TDetalleReservasBusinessProcessorRules.SetID_EMPRESA_ALMACEN_RESERVAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA] := aValue;
+end;
+
+procedure TDetalleReservasBusinessProcessorRules.SetID_EMPRESA_ALMACEN_RESERVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_DetalleReservasID_EMPRESA_ALMACEN_RESERVA] := Null;
+end;
+
initialization
RegisterBusinessProcessorRules(RID_InventarioDelta, TInventarioBusinessProcessorRules);
diff --git a/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm b/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
index a669f164..1a89e5bf 100644
--- a/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
+++ b/Source/Modulos/Inventario/Servidor/srvInventario_Impl.dfm
@@ -292,6 +292,10 @@ object srvInventario: TsrvInventario
item
DatasetField = 'NOMBRE_ALMACEN_RESERVA'
TableField = 'NOMBRE_ALMACEN_RESERVA'
+ end
+ item
+ DatasetField = 'ID_EMPRESA_ALMACEN_RESERVA'
+ TableField = 'ID_EMPRESA_ALMACEN_RESERVA'
end>
end>
Name = 'DetalleReservas'
@@ -358,7 +362,7 @@ object srvInventario: TsrvInventario
end
item
Name = 'CANTIDAD'
- DataType = datFloat
+ DataType = datCurrency
end
item
Name = 'ID_ALMACEN_RESERVA'
@@ -368,6 +372,10 @@ object srvInventario: TsrvInventario
Name = 'NOMBRE_ALMACEN_RESERVA'
DataType = datString
Size = 255
+ end
+ item
+ Name = 'ID_EMPRESA_ALMACEN_RESERVA'
+ DataType = datInteger
end>
end>
JoinDataTables = <>
diff --git a/Source/Modulos/Inventario/Views/uEditorDetalleReservas.dfm b/Source/Modulos/Inventario/Views/uEditorDetalleReservas.dfm
index 671cc624..ddc00697 100644
--- a/Source/Modulos/Inventario/Views/uEditorDetalleReservas.dfm
+++ b/Source/Modulos/Inventario/Views/uEditorDetalleReservas.dfm
@@ -174,8 +174,6 @@ inherited fEditorDetalleReservas: TfEditorDetalleReservas
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitWidth = 510
- Width = 510
end
inherited edtFechaIniFiltro: TcxDateEdit
Style.LookAndFeel.SkinName = ''
@@ -184,16 +182,20 @@ inherited fEditorDetalleReservas: TfEditorDetalleReservas
StyleHot.LookAndFeel.SkinName = ''
end
inherited edtFechaFinFiltro: TcxDateEdit
+ Left = 358
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 358
end
inherited eLista: TcxComboBox
+ Left = 605
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 605
ExplicitWidth = 20
Width = 20
end
diff --git a/Source/Modulos/Inventario/Views/uEditorDetalleReservas.pas b/Source/Modulos/Inventario/Views/uEditorDetalleReservas.pas
index afe0ef57..e816004b 100644
--- a/Source/Modulos/Inventario/Views/uEditorDetalleReservas.pas
+++ b/Source/Modulos/Inventario/Views/uEditorDetalleReservas.pas
@@ -239,7 +239,7 @@ procedure TfEditorDetalleReservas.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
- FTitulo := 'Detalle de reservas en almacen - ' + AppFactuGES.EmpresaActiva.NOMBRE;
+ FTitulo := 'Detalle de reservas en almacen/obra - ' + frViewDetalleReservas1.cxListaAlmacenesObras.Text; //AppFactuGES.EmpresaActiva.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
diff --git a/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas b/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas
index d76193a0..d6d03777 100644
--- a/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas
+++ b/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas
@@ -60,7 +60,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente;
function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente;
- function BuscarRecibosARemesar: IBizRecibosCliente;
+ function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
procedure VerTodos(ARecibosCliente: IBizRecibosCliente;
const AVerModal : Boolean = False; const AWindowCaption: String = '';
@@ -130,7 +130,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente;
function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente;
- function BuscarRecibosARemesar: IBizRecibosCliente;
+ function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
procedure VerTodos(ARecibosCliente: IBizRecibosCliente;
const AVerModal : Boolean = False; const AWindowCaption: String = '';
@@ -361,9 +361,10 @@ begin
end;
end;
-function TRecibosClienteController.BuscarRecibosARemesar: IBizRecibosCliente;
+function TRecibosClienteController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente;
var
Condicion: TDAWhereExpression;
+ i: Integer;
begin
ShowHourglassCursor;
try
@@ -390,6 +391,26 @@ begin
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
+
+ //En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos
+ //añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD
+ for i := 0 to AListaNoVisibles.Count - 1 do
+ with Result.DataTable.DynamicWhere do
+ begin
+ //Solo dejaremos remesar aquellos recibos que no esten cobrados (Pendientes/Devueltos)
+ Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID), NewConstant(AListaNoVisibles.Strings[i], datString), dboNotEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ //En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa
+ //y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos
+ //secundarios puede provocar
+ //AListaVisibles
+
finally
HideHourglassCursor;
end;
diff --git a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas
index c5d8b9da..9de9797b 100644
--- a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas
+++ b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas
@@ -56,7 +56,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor;
function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor;
- function BuscarRecibosARemesar: IBizRecibosProveedor;
+ function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor;
const AVerModal : Boolean = False; const AWindowCaption: String = '';
@@ -125,7 +125,7 @@ type
function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor;
function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor;
function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor;
- function BuscarRecibosARemesar: IBizRecibosProveedor;
+ function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor;
const AVerModal : Boolean = False; const AWindowCaption: String = '';
@@ -337,9 +337,10 @@ begin
end;
end;
-function TRecibosProveedorController.BuscarRecibosARemesar: IBizRecibosProveedor;
+function TRecibosProveedorController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor;
var
Condicion: TDAWhereExpression;
+ i: Integer;
begin
ShowHourglassCursor;
try
@@ -366,6 +367,26 @@ begin
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
+
+ //En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos
+ //añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD
+ for i := 0 to AListaNoVisibles.Count - 1 do
+ with Result.DataTable.DynamicWhere do
+ begin
+ //Solo dejaremos remesar aquellos recibos que no esten cobrados (Pendientes/Devueltos)
+ Condicion := NewBinaryExpression(NewField('', fld_RecibosProveedorID), NewConstant(AListaNoVisibles.Strings[i], datString), dboNotEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ //En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa
+ //y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos
+ //secundarios puede provocar
+ //AListaVisibles
+
finally
HideHourglassCursor;
end;
diff --git a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas
index c201d251..9c84dc6b 100644
--- a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas
+++ b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas
@@ -28,7 +28,7 @@ type
function EsModificable(ARemesaProveedor : IBizRemesaCliente): Boolean;
function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean;
- function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean;
+ function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente);
function GetRecibosClienteController: IRecibosClienteController;
property RecibosClienteController: IRecibosClienteController read GetRecibosClienteController;
@@ -82,7 +82,7 @@ type
function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean;
function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente) : IBizRemesaCliente; virtual;
- function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean;
+ function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente);
function DarListaAnosRemesas: TStringList;
@@ -290,14 +290,39 @@ begin
ARemesaCliente := NIL;
end;
-function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente): Boolean;
+function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean;
var
ARecibosRemesa : IBizRecibosCliente;
ARecibosSeleccionados : IBizRecibosCliente;
+ ListaRecibosVisibles: TStringList;
+ ListaRecibosNoVisibles: TStringList;
+ i: Integer;
begin
Result := False;
- ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente);
+ ListaRecibosVisibles := TStringList.Create;
+ ListaRecibosNoVisibles := TStringList.Create;
+
+ //Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion
+ ARemesaCliente.Recibos.DataTable.First;
+ while not ARemesaCliente.Recibos.DataTable.eof do
+ begin
+ ListaRecibosNoVisibles.Add(IntToStr(ARemesaCliente.Recibos.ID));
+ ARemesaCliente.Recibos.DataTable.Next;
+ end;
+ ARemesaCliente.Recibos.DataTable.First;
+
+ //Si de la lista inicial hay alguno que no se encuentre en la lista de recibos de la
+ //remesa que tenemos en memoria dicho recibo debería verse por lo que lo añadimos a la lista de visibles
+ for i := 0 to AListaRecibosIniciales.Count - 1 do
+ begin
+ ARemesaCliente.Recibos.DataTable.First;
+ if not ARemesaCliente.Recibos.DataTable.Locate(fld_RecibosClienteID, AListaRecibosIniciales.strings[i], []) then
+ ListaRecibosVisibles.Add(AListaRecibosIniciales.strings[i]);
+ end;
+ ARemesaCliente.Recibos.DataTable.First;
+
+ ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar(ListaRecibosVisibles, ListaRecibosNoVisibles), 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente);
if Assigned(ARecibosSeleccionados) then
begin
ShowHourglassCursor;
@@ -313,6 +338,8 @@ begin
end;
end;
+ ListaRecibosVisibles.Free;
+ ListaRecibosNoVisibles.Free;
ARecibosRemesa := Nil;
ARecibosSeleccionados := Nil;
end;
diff --git a/Source/Modulos/Remesas de cliente/RemesasCliente_Group.groupproj b/Source/Modulos/Remesas de cliente/RemesasCliente_Group.groupproj
index ef6ffa9b..a1f22bb6 100644
--- a/Source/Modulos/Remesas de cliente/RemesasCliente_Group.groupproj
+++ b/Source/Modulos/Remesas de cliente/RemesasCliente_Group.groupproj
@@ -9,6 +9,7 @@
+
@@ -111,14 +112,23 @@
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm
index a5de831f..9c59b2d4 100644
--- a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm
+++ b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm
@@ -1,6 +1,7 @@
inherited frViewRecibosRemesaCliente: TfrViewRecibosRemesaCliente
Width = 549
Height = 376
+ OnShow = CustomViewShow
ExplicitWidth = 549
ExplicitHeight = 376
inherited cxGrid: TcxGrid
diff --git a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas
index b4cf553a..ac522672 100644
--- a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas
+++ b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas
@@ -27,10 +27,12 @@ type
cxGridViewIMPORTE: TcxGridDBColumn;
cxGridViewOTROS_GASTOS: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
+ procedure CustomViewShow(Sender: TObject);
protected
FHayCambios : Boolean;
FRemesa : IBizRemesaCliente;
FController : IRemesasClienteController;
+ FListaRecibosIniciales: TStringList;
procedure AnadirInterno; override;
procedure EliminarInterno; override;
@@ -43,6 +45,7 @@ type
function GetController : IRemesasClienteController;
procedure SetController (const Value : IRemesasClienteController);
+
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -63,7 +66,7 @@ uses
procedure TfrViewRecibosRemesaCliente.AnadirInterno;
begin
//inherited; // No hacer el comportamiento normal
- if FController.ElegirRecibosCliente(RemesaCliente) then
+ if FController.ElegirRecibosCliente(RemesaCliente, FListaRecibosIniciales) then
begin
Modified := True;
end;
@@ -73,10 +76,25 @@ constructor TfrViewRecibosRemesaCliente.Create(AOwner: TComponent);
begin
inherited;
FHayCambios := False;
+ FListaRecibosIniciales := TStringList.Create;
+end;
+
+procedure TfrViewRecibosRemesaCliente.CustomViewShow(Sender: TObject);
+begin
+ inherited;
+
+ FRemesa.Recibos.DataTable.First;
+ while not FRemesa.Recibos.DataTable.eof do
+ begin
+ FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID));
+ FRemesa.Recibos.DataTable.next;
+ end;
+ FRemesa.Recibos.DataTable.First;
end;
destructor TfrViewRecibosRemesaCliente.Destroy;
begin
+ FListaRecibosIniciales.Free;
inherited;
end;
diff --git a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas
index 75f5a648..a5d1463e 100644
--- a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas
+++ b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas
@@ -28,7 +28,7 @@ type
function EsModificable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
- function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean;
+ function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor);
function GetRecibosProveedorController: IRecibosProveedorController;
property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController;
@@ -82,7 +82,7 @@ type
function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean;
function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor) : IBizRemesaProveedor; virtual;
- function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean;
+ function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor);
function DarListaAnosRemesas: TStringList;
@@ -292,14 +292,40 @@ begin
ARemesaProveedor := NIL;
end;
-function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean;
+function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean;
var
ARecibosRemesa : IBizRecibosProveedor;
ARecibosSeleccionados : IBizRecibosProveedor;
+ ListaRecibosVisibles: TStringList;
+ ListaRecibosNoVisibles: TStringList;
+ i: Integer;
+
begin
Result := False;
- ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor);
+ ListaRecibosVisibles := TStringList.Create;
+ ListaRecibosNoVisibles := TStringList.Create;
+
+ //Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion
+ ARemesaProveedor.Recibos.DataTable.First;
+ while not ARemesaProveedor.Recibos.DataTable.eof do
+ begin
+ ListaRecibosNoVisibles.Add(IntToStr(ARemesaProveedor.Recibos.ID));
+ ARemesaProveedor.Recibos.DataTable.Next;
+ end;
+ ARemesaProveedor.Recibos.DataTable.First;
+
+ //Si de la lista inicial hay alguno que no se encuentre en la lista de recibos de la
+ //remesa que tenemos en memoria dicho recibo debería verse por lo que lo añadimos a la lista de visibles
+ for i := 0 to AListaRecibosIniciales.Count - 1 do
+ begin
+ ARemesaProveedor.Recibos.DataTable.First;
+ if not ARemesaProveedor.Recibos.DataTable.Locate(fld_RecibosProveedorID, AListaRecibosIniciales.strings[i], []) then
+ ListaRecibosVisibles.Add(AListaRecibosIniciales.strings[i]);
+ end;
+ ARemesaProveedor.Recibos.DataTable.First;
+
+ ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarRecibosARemesar(ListaRecibosVisibles, ListaRecibosNoVisibles), 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor);
if Assigned(ARecibosSeleccionados) then
begin
ShowHourglassCursor;
@@ -315,6 +341,8 @@ begin
end;
end;
+ ListaRecibosVisibles.Free;
+ ListaRecibosNoVisibles.Free;
ARecibosRemesa := Nil;
ARecibosSeleccionados := Nil;
end;
diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm
index 82afb2eb..dd18a896 100644
--- a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm
+++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm
@@ -1,6 +1,7 @@
inherited frViewRecibosRemesaProveedor: TfrViewRecibosRemesaProveedor
Width = 549
Height = 376
+ OnShow = CustomViewShow
ExplicitWidth = 549
ExplicitHeight = 376
inherited cxGrid: TcxGrid
diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas
index 6e404d70..a331d92c 100644
--- a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas
+++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas
@@ -27,10 +27,12 @@ type
cxGridViewIMPORTE: TcxGridDBColumn;
cxGridViewOTROS_GASTOS: TcxGridDBColumn;
cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
+ procedure CustomViewShow(Sender: TObject);
protected
FHayCambios : Boolean;
FRemesa : IBizRemesaProveedor;
FController : IRemesasProveedorController;
+ FListaRecibosIniciales: TStringList;
procedure AnadirInterno; override;
procedure EliminarInterno; override;
@@ -63,7 +65,7 @@ uses
procedure TfrViewRecibosRemesaProveedor.AnadirInterno;
begin
//inherited; // No hacer el comportamiento normal
- if FController.ElegirRecibosProveedor(RemesaProveedor) then
+ if FController.ElegirRecibosProveedor(RemesaProveedor, FListaRecibosIniciales) then
begin
Modified := True;
end;
@@ -73,10 +75,25 @@ constructor TfrViewRecibosRemesaProveedor.Create(AOwner: TComponent);
begin
inherited;
FHayCambios := False;
+ FListaRecibosIniciales := TStringList.Create;
+end;
+
+procedure TfrViewRecibosRemesaProveedor.CustomViewShow(Sender: TObject);
+begin
+ inherited;
+
+ FRemesa.Recibos.DataTable.First;
+ while not FRemesa.Recibos.DataTable.eof do
+ begin
+ FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID));
+ FRemesa.Recibos.DataTable.next;
+ end;
+ FRemesa.Recibos.DataTable.First;
end;
destructor TfrViewRecibosRemesaProveedor.Destroy;
begin
+ FListaRecibosIniciales.Free;
inherited;
end;
diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES
index 2e0e03b5..30f6afb6 100644
Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ
diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr
index eb07a1ca..2cd01239 100644
--- a/Source/Servidor/FactuGES_Server.dpr
+++ b/Source/Servidor/FactuGES_Server.dpr
@@ -102,8 +102,6 @@ uses
uRptPresupuestosCliente_Server in '..\Modulos\Presupuestos de cliente\Reports\uRptPresupuestosCliente_Server.pas' {RptPresupuestosCliente: TDataModule},
uRptWordPresupuestoCliente in '..\Modulos\Presupuestos de cliente\Reports\uRptWordPresupuestoCliente.pas' {RptWordPresupuestoCliente: TDataModule},
srvGestorDocumentos_Impl in '..\Modulos\Gestion de documentos\Servidor\srvGestorDocumentos_Impl.pas' {srvGestorDocumentos: TDataAbstractService},
- schInventarioClient_Intf in '..\Modulos\Inventario\Model\schInventarioClient_Intf.pas',
- schInventarioServer_Intf in '..\Modulos\Inventario\Model\schInventarioServer_Intf.pas',
schHistoricoMovimientosClient_Intf in '..\Modulos\Historico de movimientos\Model\schHistoricoMovimientosClient_Intf.pas',
schHistoricoMovimientosServer_Intf in '..\Modulos\Historico de movimientos\Model\schHistoricoMovimientosServer_Intf.pas',
schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas',
@@ -135,7 +133,9 @@ uses
uRptWordAlbaranProveedor in '..\Modulos\Albaranes de proveedor\Reports\uRptWordAlbaranProveedor.pas' {RptWordAlbaranProveedor: TDataModule},
MidasSpeedFix in 'Utiles\MidasSpeedFix.pas',
schAlbaranesProveedorClient_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorClient_Intf.pas',
- schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas';
+ schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas',
+ schInventarioClient_Intf in '..\Modulos\Inventario\Model\schInventarioClient_Intf.pas',
+ schInventarioServer_Intf in '..\Modulos\Inventario\Model\schInventarioServer_Intf.pas';
{$R *.res}
{$R ..\Servicios\RODLFile.res}
diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj
index 9ee76245..c5fe7cc8 100644
--- a/Source/Servidor/FactuGES_Server.dproj
+++ b/Source/Servidor/FactuGES_Server.dproj
@@ -1,334 +1,334 @@
-
+
-
- {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
- FactuGES_Server.dpr
- Debug
- AnyCPU
- DCC32
- ..\..\Output\Debug\Servidor\FactuGES_Server.exe
- vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100
-
-
- 7.0
- False
- False
- 0
- 3
- ..\..\Output\Release\Servidor
- RELEASE
-
-
- 7.0
- 3
- ..\..\Output\Debug\Servidor
- DEBUG;
- True
- True
- True
- C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
- C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
- C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
- C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
-
-
- Delphi.Personality
-
-
- FalseTrueFalse/standaloneTrueFalse1760FalseFalseFalseFalseFalse308212521.7.6.01.7.6.0martes, 05 de mayo de 2009 16:47
- ExpressPrinting System by Developer Express Inc.
- FactuGES_Server.dpr
-
-
-
-
- MainSource
-
-
-
-
-
-
- TDARemoteService
-
-
-
- TDataModule
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDARemoteService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TFrame
-
-
-
- TFrame
-
-
-
- TForm
-
-
-
- TFrame
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
+ FactuGES_Server.dpr
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\Output\Debug\Servidor\FactuGES_Server.exe
+ vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ ..\..\Output\Release\Servidor
+ RELEASE
+
+
+ 7.0
+ 3
+ ..\..\Output\Debug\Servidor
+ DEBUG;
+ True
+ True
+ True
+ C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
+ C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
+ C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
+ C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10
+
+
+ Delphi.Personality
+
+
+FalseTrueFalse/standaloneTrueFalse1760FalseFalseFalseFalseFalse308212521.7.6.01.7.6.0martes, 05 de mayo de 2009 16:47
+ ExpressPrinting System by Developer Express Inc.
+ FactuGES_Server.dpr
+
+
+
+
+ MainSource
+
+
+
+
+
+
+ TDARemoteService
+
+
+
+ TDataModule
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDARemoteService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TForm
+
+
+
+ TFrame
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+