diff --git a/Build/Build.fbl6 b/Build/Build.fbl6
index a0cf8f0..fef5ed6 100644
Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ
diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql
index 63c07d2..04be030 100644
--- a/Database/scripts/factuges.sql
+++ b/Database/scripts/factuges.sql
@@ -127,6 +127,9 @@ SET GENERATOR GEN_CLIENTES_DTOS_ART_ID TO 1;
CREATE GENERATOR GEN_CLIENTES_GRUPOS_ID;
SET GENERATOR GEN_CLIENTES_GRUPOS_ID TO 1;
+CREATE GENERATOR GEN_CLIENTES_TIPOS_ID;
+SET GENERATOR GEN_CLIENTES_TIPOS_ID TO 1;
+
CREATE GENERATOR GEN_COMISIONES_LIQUID_ID;
SET GENERATOR GEN_COMISIONES_LIQUID_ID TO 1;
@@ -157,9 +160,6 @@ SET GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID TO 1;
CREATE GENERATOR GEN_EMPRESAS_ID;
SET GENERATOR GEN_EMPRESAS_ID TO 1;
-CREATE GENERATOR GEN_EMPRESAS_USUARIOS_ID;
-SET GENERATOR GEN_EMPRESAS_USUARIOS_ID TO 1;
-
CREATE GENERATOR GEN_FABRICANTES_ID;
SET GENERATOR GEN_FABRICANTES_ID TO 1;
@@ -509,7 +509,8 @@ CREATE TABLE CLIENTES_DATOS (
VENCIMIENTO_FACTURAS_1 SMALLINT,
VENCIMIENTO_FACTURAS_2 SMALLINT,
VENCIMIENTO_FACTURAS_3 SMALLINT,
- FELICITACION TIPO_BOOLEANO
+ FELICITACION TIPO_BOOLEANO,
+ TIPO_CLIENTE VARCHAR(255) COLLATE ES_ES
);
CREATE TABLE CLIENTES_DTOS_PROVEEDORES (
@@ -531,6 +532,11 @@ CREATE TABLE CLIENTES_GRUPOS (
DESCRIPCION VARCHAR(255)
);
+CREATE TABLE CLIENTES_TIPOS (
+ ID TIPO_ID NOT NULL,
+ DESCRIPCION VARCHAR(255)
+);
+
CREATE TABLE COMISIONES_LIQUIDADAS (
ID TIPO_ID NOT NULL,
ID_EMPRESA TIPO_ID,
@@ -701,12 +707,6 @@ CREATE TABLE EMPRESAS_DATOS_BANCO (
SWIFT VARCHAR(255) COLLATE ES_ES
);
-CREATE TABLE EMPRESAS_USUARIOS (
- ID TIPO_ID NOT NULL,
- ID_EMPRESA TIPO_ID NOT NULL,
- ID_USUARIO TIPO_ID NOT NULL
-);
-
CREATE TABLE FABRICANTES (
ID TIPO_ID NOT NULL,
DESCRIPCION VARCHAR(255)
@@ -1308,6 +1308,44 @@ CREATE TABLE AGENTES_OBJETIVOS_FAC (
/**** Views ****/
/******************************************************************************/
+CREATE VIEW V_EMPRESAS(
+ ID,
+ NIF_CIF,
+ NOMBRE,
+ RAZON_SOCIAL,
+ CALLE,
+ POBLACION,
+ PROVINCIA,
+ CODIGO_POSTAL,
+ TELEFONO_1,
+ TELEFONO_2,
+ MOVIL_1,
+ MOVIL_2,
+ FAX,
+ EMAIL_1,
+ EMAIL_2,
+ PAGINA_WEB,
+ NOTAS,
+ FECHA_ALTA,
+ FECHA_MODIFICACION,
+ USUARIO,
+ LOGOTIPO,
+ REGISTRO_MERCANTIL,
+ PARAM_TIEMPO,
+ PARAM_MARGEN,
+ ID_TIPO_IVA,
+ ID_FORMA_PAGO,
+ ID_ALMACEN,
+ ID_PERFIL)
+AS
+select E.ID, E.NIF_CIF, E.NOMBRE, E.RAZON_SOCIAL, E.CALLE, E.POBLACION,
+E.PROVINCIA, E.CODIGO_POSTAL, E.TELEFONO_1, E.TELEFONO_2, E.MOVIL_1, E.MOVIL_2,
+E.FAX, E.EMAIL_1, E.EMAIL_2, E.PAGINA_WEB, E.NOTAS, E.FECHA_ALTA, E.FECHA_MODIFICACION,
+E.USUARIO, E.LOGOTIPO, E.REGISTRO_MERCANTIL, E.PARAM_TIEMPO, E.PARAM_MARGEN, E.ID_TIPO_IVA,
+E.ID_FORMA_PAGO, E.ID_ALMACEN, EP.id_perfil
+from empresas E
+left join empresas_PERFILES EP on (EP.ID_EMPRESA = E.ID)
+;
/* View: V_ALB_CLI_SITUACION */
CREATE VIEW V_ALB_CLI_SITUACION(
@@ -1915,7 +1953,6 @@ FROM CONTACTOS
-/* View: V_CLIENTES */
/* View: V_CLIENTES */
CREATE VIEW V_CLIENTES(
ID,
@@ -1939,7 +1976,7 @@ CREATE VIEW V_CLIENTES(
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
- ID_EMPRESA,
+ ID_EMPRESA,
REFERENCIA,
ID_AGENTE,
GRUPO_CLIENTE,
@@ -1950,7 +1987,7 @@ CREATE VIEW V_CLIENTES(
BLOQUEADO,
AGENTE,
RAPEL,
- EMAIL_ADMINISTRACION,
+ EMAIL_ADMINISTRACION,
REGIMEN_IVA,
MOTIVO_BLOQUEO,
RECARGO_EQUIVALENCIA,
@@ -1959,7 +1996,8 @@ CREATE VIEW V_CLIENTES(
TIENDA_WEB,
CODIGO_ASIGNADO,
DESCUENTO,
- FELICITACION)
+ FELICITACION,
+ TIPO_CLIENTE)
AS
SELECT
V_CONTACTOS.ID,
@@ -2003,7 +2041,8 @@ SELECT
CLIENTES_DATOS.TIENDA_WEB,
CLIENTES_DATOS.CODIGO_ASIGNADO,
CLIENTES_DATOS.DESCUENTO,
- CLIENTES_DATOS.FELICITACION
+ CLIENTES_DATOS.FELICITACION,
+ CLIENTES_DATOS.TIPO_CLIENTE
FROM
V_CONTACTOS
LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE)
@@ -5027,6 +5066,7 @@ ALTER TABLE CLIENTES_DATOS ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIE
ALTER TABLE CLIENTES_DTOS_PROVEEDORES ADD CONSTRAINT PK_CLIENTES_DTOS_PROV PRIMARY KEY (ID);
ALTER TABLE CLIENTES_DTOS_ARTICULOS ADD CONSTRAINT PK_CLIENTES_DTOS_ART PRIMARY KEY (ID);
ALTER TABLE CLIENTES_GRUPOS ADD CONSTRAINT PK_CLIENTES_GRUPOS PRIMARY KEY (ID);
+ALTER TABLE CLIENTES_TIPOS ADD CONSTRAINT PK_CLIENTES_TIPOS PRIMARY KEY (ID);
ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS PRIMARY KEY (ID);
ALTER TABLE CONFIGURACION ADD CONSTRAINT PK_CONFIGURACION PRIMARY KEY (ID);
ALTER TABLE CONTACTOS ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID);
@@ -5040,7 +5080,6 @@ ALTER TABLE EMPLEADOS_GRUPOS ADD CONSTRAINT PK_EMPLEADOS_GRUPOS PRIMARY KEY (ID)
ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID);
-ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID);
ALTER TABLE FABRICANTES ADD PRIMARY KEY (ID);
ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID);
ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID);
@@ -5170,7 +5209,6 @@ CREATE INDEX IDX_CONTACTOS_DATOS_BANCO ON CONTACTOS_DATOS_BANCO (ID_CONTACTO);
CREATE INDEX IDX_CONTACTOS_PER_ID_CONTACTO ON CONTACTOS_DATOS_PERSONAL (ID_CONTACTO);
CREATE INDEX IDX_CONTACTOS_DIR_ID_CONTACTO ON CONTACTOS_DIRECCIONES (ID_CONTACTO);
CREATE INDEX IDX_EMPRESAS_CONTACTOS ON EMPRESAS_CONTACTOS (ID_EMPRESA, ID_CONTACTO);
-CREATE INDEX IDX_EMPRESAS_USUARIOS ON EMPRESAS_USUARIOS (ID_EMPRESA, ID_USUARIO);
CREATE INDEX IDX_FACTURAS_CLIENTE ON FACTURAS_CLIENTE (ID_FORMA_PAGO);
CREATE INDEX IDX_FACTURAS_CLIENTE1 ON FACTURAS_CLIENTE (ID_TIPO_IVA);
CREATE INDEX IDX_FACTURAS_CLIENTE2 ON FACTURAS_CLIENTE (ID_COMISION_LIQUIDADA);
diff --git a/Database/scripts/factuges_sysdata.sql b/Database/scripts/factuges_sysdata.sql
index 91d50f1..5a7bee2 100644
--- a/Database/scripts/factuges_sysdata.sql
+++ b/Database/scripts/factuges_sysdata.sql
@@ -2,6 +2,10 @@ SET SQL DIALECT 3;
SET NAMES UTF8;
+INSERT INTO PERFILES (ID, DESCRIPCION) VALUES (1, 'usuario');
+INSERT INTO PERFILES (ID, DESCRIPCION) VALUES (2, 'administrador');
+COMMIT WORK;
+
INSERT INTO PERIODOS_AUX (ID, PERIODO, VALOR, DESCRIPCION) VALUES (1, 'MENSUAL', 1, 'Ene');
INSERT INTO PERIODOS_AUX (ID, PERIODO, VALOR, DESCRIPCION) VALUES (2, 'MENSUAL', 2, 'Feb');
INSERT INTO PERIODOS_AUX (ID, PERIODO, VALOR, DESCRIPCION) VALUES (3, 'MENSUAL', 3, 'Mar');
diff --git a/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas b/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
index 7c1b6fd..502df52 100644
--- a/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
+++ b/Source/ApplicationBase/Empresas/Controller/uEmpresasController.pas
@@ -11,7 +11,8 @@ type
IEmpresasController = interface(IControllerBase)
['{2F0AB21C-4F19-446E-87C4-B9C1038850FC}']
function Buscar(const ID: Integer): IBizEmpresa;
- function BuscarTodos: IBizEmpresa;
+ function BuscarTodos: IBizEmpresa; overload;
+ function BuscarTodos(const ID_PERFIL: Integer): IBizEmpresa; overload;
procedure Ver(AEmpresa : IBizEmpresa);
procedure VerTodos(AEmpresas: IBizEmpresa);
function Nuevo : IBizEmpresa;
@@ -49,7 +50,8 @@ type
procedure Anadir(AEmpresa : IBizEmpresa); virtual;
function Buscar(const ID: Integer): IBizEmpresa; virtual;
- function BuscarTodos: IBizEmpresa; virtual;
+ function BuscarTodos: IBizEmpresa; overload; virtual;
+ function BuscarTodos(const ID_PERFIL: Integer): IBizEmpresa; overload;
function Nuevo : IBizEmpresa; virtual;
procedure Ver(AEmpresa : IBizEmpresa); virtual;
procedure VerTodos(AEmpresas: IBizEmpresa); virtual;
@@ -68,8 +70,8 @@ type
implementation
uses
- uEditorRegistryUtils, cxControls, DB, uFactuGES_App, uStringsUtils,
- uDataModuleEmpresas, uIEditorEmpresa, uBizEmpresasDatosBancarios;
+ uDAInterfaces, uEditorRegistryUtils, cxControls, DB, uFactuGES_App, uStringsUtils,
+ uDataModuleEmpresas, uIEditorEmpresa, uBizEmpresasDatosBancarios, schEmpresasClient_Intf;
{ TEmpresasController }
@@ -133,6 +135,30 @@ begin
Result := FDataModule.GetItem(ID)
end;
+function TEmpresasController.BuscarTodos(const ID_PERFIL: Integer): IBizEmpresa;
+var
+ Condicion: TDAWhereExpression;
+begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+
+ with Result.DataTable.DynamicWhere do
+ begin
+ // ID_PERFIL
+ Condicion := NewBinaryExpression(NewField('', fld_EmpresasID_PERFIL), NewConstant(ID_PERFIL, datInteger), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+Result.open;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
function TEmpresasController.BuscarTodos: IBizEmpresa;
begin
Result := FDataModule.GetItems;
diff --git a/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm b/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
index 1ccfd12..2dbfb1d 100644
--- a/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
+++ b/Source/ApplicationBase/Empresas/Data/uDataModuleEmpresas.dfm
@@ -207,6 +207,10 @@ inherited DataModuleEmpresas: TDataModuleEmpresas
DataType = datSmallInt
DisplayLabel = 'Empresas_ID_ALMACEN'
DictionaryEntry = 'Empresas_ID_ALMACEN'
+ end
+ item
+ Name = 'ID_PERFIL'
+ DataType = datInteger
end>
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
diff --git a/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas b/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
index c376b57..b02d645 100644
--- a/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
+++ b/Source/ApplicationBase/Empresas/Model/schEmpresasClient_Intf.pas
@@ -9,8 +9,8 @@ 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_Empresas = '{88621D33-852A-4B38-8FFB-0894C98719CA}';
- RID_EmpresasDatosBanco = '{E2ABA941-53D7-41CD-9755-CCBD66A72247}';
+ RID_Empresas = '{293CB9A8-A5CC-4A9C-80D0-74E9DC888BD8}';
+ RID_EmpresasDatosBanco = '{DA3363E9-7834-447F-8266-B7410A41CEDB}';
{ Data table names }
nme_Empresas = 'Empresas';
@@ -44,6 +44,7 @@ const
fld_EmpresasID_TIPO_IVA = 'ID_TIPO_IVA';
fld_EmpresasID_FORMA_PAGO = 'ID_FORMA_PAGO';
fld_EmpresasID_ALMACEN = 'ID_ALMACEN';
+ fld_EmpresasID_PERFIL = 'ID_PERFIL';
{ Empresas field indexes }
idx_EmpresasID = 0;
@@ -73,6 +74,7 @@ const
idx_EmpresasID_TIPO_IVA = 24;
idx_EmpresasID_FORMA_PAGO = 25;
idx_EmpresasID_ALMACEN = 26;
+ idx_EmpresasID_PERFIL = 27;
{ EmpresasDatosBanco fields }
fld_EmpresasDatosBancoID = 'ID';
@@ -103,7 +105,7 @@ const
type
{ IEmpresas }
IEmpresas = interface(IDAStronglyTypedDataTable)
- ['{50BEAD2C-AEF9-4858-AF21-E427E1B39CC6}']
+ ['{A0B6BA3C-6931-4E7C-94B1-4E916B0F6E1D}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -211,6 +213,10 @@ type
procedure SetID_ALMACENValue(const aValue: SmallInt);
function GetID_ALMACENIsNull: Boolean;
procedure SetID_ALMACENIsNull(const aValue: Boolean);
+ function GetID_PERFILValue: Integer;
+ procedure SetID_PERFILValue(const aValue: Integer);
+ function GetID_PERFILIsNull: Boolean;
+ procedure SetID_PERFILIsNull(const aValue: Boolean);
{ Properties }
@@ -268,6 +274,8 @@ type
property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull;
property ID_ALMACEN: SmallInt read GetID_ALMACENValue write SetID_ALMACENValue;
property ID_ALMACENIsNull: Boolean read GetID_ALMACENIsNull write SetID_ALMACENIsNull;
+ property ID_PERFIL: Integer read GetID_PERFILValue write SetID_PERFILValue;
+ property ID_PERFILIsNull: Boolean read GetID_PERFILIsNull write SetID_PERFILIsNull;
end;
{ TEmpresasDataTableRules }
@@ -385,6 +393,10 @@ type
procedure SetID_ALMACENValue(const aValue: SmallInt); virtual;
function GetID_ALMACENIsNull: Boolean; virtual;
procedure SetID_ALMACENIsNull(const aValue: Boolean); virtual;
+ function GetID_PERFILValue: Integer; virtual;
+ procedure SetID_PERFILValue(const aValue: Integer); virtual;
+ function GetID_PERFILIsNull: Boolean; virtual;
+ procedure SetID_PERFILIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID: Integer read GetIDValue write SetIDValue;
@@ -441,6 +453,8 @@ type
property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull;
property ID_ALMACEN: SmallInt read GetID_ALMACENValue write SetID_ALMACENValue;
property ID_ALMACENIsNull: Boolean read GetID_ALMACENIsNull write SetID_ALMACENIsNull;
+ property ID_PERFIL: Integer read GetID_PERFILValue write SetID_PERFILValue;
+ property ID_PERFILIsNull: Boolean read GetID_PERFILIsNull write SetID_PERFILIsNull;
public
constructor Create(aDataTable: TDADataTable); override;
@@ -450,7 +464,7 @@ type
{ IEmpresasDatosBanco }
IEmpresasDatosBanco = interface(IDAStronglyTypedDataTable)
- ['{092FC338-3912-4550-982D-89A97A0ACFDD}']
+ ['{AB33F3C2-E3BB-41C1-AC47-543080C0A67B}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -1202,6 +1216,27 @@ begin
DataTable.Fields[idx_EmpresasID_ALMACEN].AsVariant := Null;
end;
+function TEmpresasDataTableRules.GetID_PERFILValue: Integer;
+begin
+ result := DataTable.Fields[idx_EmpresasID_PERFIL].AsInteger;
+end;
+
+procedure TEmpresasDataTableRules.SetID_PERFILValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_EmpresasID_PERFIL].AsInteger := aValue;
+end;
+
+function TEmpresasDataTableRules.GetID_PERFILIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EmpresasID_PERFIL].IsNull;
+end;
+
+procedure TEmpresasDataTableRules.SetID_PERFILIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EmpresasID_PERFIL].AsVariant := Null;
+end;
+
{ TEmpresasDatosBancoDataTableRules }
constructor TEmpresasDatosBancoDataTableRules.Create(aDataTable: TDADataTable);
diff --git a/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas b/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas
index 2990e35..0f31fa1 100644
--- a/Source/ApplicationBase/Empresas/Model/schEmpresasServer_Intf.pas
+++ b/Source/ApplicationBase/Empresas/Model/schEmpresasServer_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_EmpresasDelta = '{43119B6A-7006-4045-B378-1516B8CA32E1}';
- RID_EmpresasDatosBancoDelta = '{A79108BB-E362-4338-9188-6D5683DCE289}';
+ RID_EmpresasDelta = '{78465C96-13EC-4CAE-806F-50EFEE766C85}';
+ RID_EmpresasDatosBancoDelta = '{E4194A47-772D-40BC-8DF0-9D4C7AFDEC77}';
type
{ IEmpresasDelta }
IEmpresasDelta = interface(IEmpresas)
- ['{43119B6A-7006-4045-B378-1516B8CA32E1}']
+ ['{78465C96-13EC-4CAE-806F-50EFEE766C85}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldNIF_CIFValue : String;
@@ -44,6 +44,7 @@ type
function GetOldID_TIPO_IVAValue : SmallInt;
function GetOldID_FORMA_PAGOValue : SmallInt;
function GetOldID_ALMACENValue : SmallInt;
+ function GetOldID_PERFILValue : Integer;
{ Properties }
property OldID : Integer read GetOldIDValue;
@@ -73,6 +74,7 @@ type
property OldID_TIPO_IVA : SmallInt read GetOldID_TIPO_IVAValue;
property OldID_FORMA_PAGO : SmallInt read GetOldID_FORMA_PAGOValue;
property OldID_ALMACEN : SmallInt read GetOldID_ALMACENValue;
+ property OldID_PERFIL : Integer read GetOldID_PERFILValue;
end;
{ TEmpresasBusinessProcessorRules }
@@ -244,6 +246,12 @@ type
function GetOldID_ALMACENIsNull: Boolean; virtual;
procedure SetID_ALMACENValue(const aValue: SmallInt); virtual;
procedure SetID_ALMACENIsNull(const aValue: Boolean); virtual;
+ function GetID_PERFILValue: Integer; virtual;
+ function GetID_PERFILIsNull: Boolean; virtual;
+ function GetOldID_PERFILValue: Integer; virtual;
+ function GetOldID_PERFILIsNull: Boolean; virtual;
+ procedure SetID_PERFILValue(const aValue: Integer); virtual;
+ procedure SetID_PERFILIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID : Integer read GetIDValue write SetIDValue;
@@ -354,6 +362,10 @@ type
property ID_ALMACENIsNull : Boolean read GetID_ALMACENIsNull write SetID_ALMACENIsNull;
property OldID_ALMACEN : SmallInt read GetOldID_ALMACENValue;
property OldID_ALMACENIsNull : Boolean read GetOldID_ALMACENIsNull;
+ property ID_PERFIL : Integer read GetID_PERFILValue write SetID_PERFILValue;
+ property ID_PERFILIsNull : Boolean read GetID_PERFILIsNull write SetID_PERFILIsNull;
+ property OldID_PERFIL : Integer read GetOldID_PERFILValue;
+ property OldID_PERFILIsNull : Boolean read GetOldID_PERFILIsNull;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@@ -363,7 +375,7 @@ type
{ IEmpresasDatosBancoDelta }
IEmpresasDatosBancoDelta = interface(IEmpresasDatosBanco)
- ['{A79108BB-E362-4338-9188-6D5683DCE289}']
+ ['{E4194A47-772D-40BC-8DF0-9D4C7AFDEC77}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -1387,6 +1399,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID_ALMACEN] := Null;
end;
+function TEmpresasBusinessProcessorRules.GetID_PERFILValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID_PERFIL];
+end;
+
+function TEmpresasBusinessProcessorRules.GetID_PERFILIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID_PERFIL]);
+end;
+
+function TEmpresasBusinessProcessorRules.GetOldID_PERFILValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasID_PERFIL];
+end;
+
+function TEmpresasBusinessProcessorRules.GetOldID_PERFILIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasID_PERFIL]);
+end;
+
+procedure TEmpresasBusinessProcessorRules.SetID_PERFILValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID_PERFIL] := aValue;
+end;
+
+procedure TEmpresasBusinessProcessorRules.SetID_PERFILIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID_PERFIL] := Null;
+end;
+
{ TEmpresasDatosBancoBusinessProcessorRules }
constructor TEmpresasDatosBancoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
diff --git a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
index 1628f3b..901715d 100644
--- a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
+++ b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm
@@ -21,7 +21,7 @@ object srvEmpresas: TsrvEmpresas
item
Connection = 'IBX'
Default = True
- TargetTable = 'EMPRESAS'
+ TargetTable = 'V_EMPRESAS'
Name = 'IBX'
StatementType = stAutoSQL
ColumnMappings = <
@@ -132,6 +132,10 @@ object srvEmpresas: TsrvEmpresas
item
DatasetField = 'ID_ALMACEN'
TableField = 'ID_ALMACEN'
+ end
+ item
+ DatasetField = 'ID_PERFIL'
+ TableField = 'ID_PERFIL'
end>
end>
Name = 'Empresas'
@@ -291,6 +295,10 @@ object srvEmpresas: TsrvEmpresas
Name = 'ID_ALMACEN'
DataType = datSmallInt
DictionaryEntry = 'Empresas_ID_ALMACEN'
+ end
+ item
+ Name = 'ID_PERFIL'
+ DataType = datInteger
end>
end
item
@@ -463,6 +471,380 @@ object srvEmpresas: TsrvEmpresas
ColumnMappings = <>
end>
Name = 'AnadirReferenciasEmpresa'
+ end
+ item
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_EMPRESAS_ID'
+ Value = ''
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ Value = ''
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'RAZON_SOCIAL'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ Value = ''
+ end
+ item
+ Name = 'TELEFONO_1'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'TELEFONO_2'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'MOVIL_1'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'MOVIL_2'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'FAX'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'EMAIL_1'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'EMAIL_2'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PAGINA_WEB'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'NOTAS'
+ DataType = datMemo
+ Value = ''
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ Value = ''
+ end
+ item
+ Name = 'LOGOTIPO'
+ DataType = datBlob
+ Value = ''
+ end
+ item
+ Name = 'REGISTRO_MERCANTIL'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PARAM_TIEMPO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'PARAM_MARGEN'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_ALMACEN'
+ DataType = datSmallInt
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ Default = True
+ TargetTable = 'EMPRESAS'
+ SQL =
+ 'INSERT'#10' INTO EMPRESAS'#10' (ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, C' +
+ 'ALLE, POBLACION, PROVINCIA,'#10' CODIGO_POSTAL, TELEFONO_1, TELE' +
+ 'FONO_2, MOVIL_1, MOVIL_2, '#10' FAX, EMAIL_1, EMAIL_2, PAGINA_WE' +
+ 'B, NOTAS, FECHA_ALTA, '#10' FECHA_MODIFICACION, USUARIO, LOGOTIP' +
+ 'O, REGISTRO_MERCANTIL, '#10' PARAM_TIEMPO, PARAM_MARGEN, ID_TIPO' +
+ '_IVA, ID_FORMA_PAGO, '#10' ID_ALMACEN)'#10' VALUES'#10' (:ID, :NIF_C' +
+ 'IF, :NOMBRE, :RAZON_SOCIAL, :CALLE, :POBLACION,'#10' :PROVINCIA,' +
+ ' :CODIGO_POSTAL, :TELEFONO_1, :TELEFONO_2, '#10' :MOVIL_1, :MOVI' +
+ 'L_2, :FAX, :EMAIL_1, :EMAIL_2, :PAGINA_WEB, '#10' :NOTAS, :FECHA' +
+ '_ALTA, :FECHA_MODIFICACION, :USUARIO, '#10' :LOGOTIPO, :REGISTRO' +
+ '_MERCANTIL, :PARAM_TIEMPO, :PARAM_MARGEN, '#10' :ID_TIPO_IVA, :I' +
+ 'D_FORMA_PAGO, :ID_ALMACEN)'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Insert_Empresas'
+ end
+ item
+ Params = <
+ item
+ Name = 'OLD_ID'
+ DataType = datAutoInc
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ Default = True
+ TargetTable = 'EMPRESAS'
+ SQL = 'DELETE '#10' FROM'#10' EMPRESAS'#10' WHERE'#10' (ID = :OLD_ID)'
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Delete_Empresas'
+ end
+ item
+ Params = <
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ Value = ''
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'RAZON_SOCIAL'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ Value = ''
+ end
+ item
+ Name = 'TELEFONO_1'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'TELEFONO_2'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'MOVIL_1'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'MOVIL_2'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'FAX'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'EMAIL_1'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'EMAIL_2'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PAGINA_WEB'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'NOTAS'
+ DataType = datMemo
+ Value = ''
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ Value = ''
+ end
+ item
+ Name = 'LOGOTIPO'
+ DataType = datBlob
+ Value = ''
+ end
+ item
+ Name = 'REGISTRO_MERCANTIL'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PARAM_TIEMPO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'PARAM_MARGEN'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_ALMACEN'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'OLD_ID'
+ DataType = datAutoInc
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ Default = True
+ TargetTable = 'EMPRESAS'
+ SQL =
+ 'UPDATE EMPRESAS'#10' SET '#10' NIF_CIF = :NIF_CIF, '#10' NOMBRE = :NO' +
+ 'MBRE, '#10' RAZON_SOCIAL = :RAZON_SOCIAL, '#10' CALLE = :CALLE, '#10' ' +
+ ' POBLACION = :POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' COD' +
+ 'IGO_POSTAL = :CODIGO_POSTAL, '#10' TELEFONO_1 = :TELEFONO_1, '#10' ' +
+ ' TELEFONO_2 = :TELEFONO_2, '#10' MOVIL_1 = :MOVIL_1, '#10' MOVIL_2' +
+ ' = :MOVIL_2, '#10' FAX = :FAX, '#10' EMAIL_1 = :EMAIL_1, '#10' EMAI' +
+ 'L_2 = :EMAIL_2, '#10' PAGINA_WEB = :PAGINA_WEB, '#10' NOTAS = :NOT' +
+ 'AS, '#10' FECHA_ALTA = :FECHA_ALTA, '#10' FECHA_MODIFICACION = :FE' +
+ 'CHA_MODIFICACION, '#10' USUARIO = :USUARIO, '#10' LOGOTIPO = :LOGO' +
+ 'TIPO, '#10' REGISTRO_MERCANTIL = :REGISTRO_MERCANTIL, '#10' PARAM_' +
+ 'TIEMPO = :PARAM_TIEMPO, '#10' PARAM_MARGEN = :PARAM_MARGEN, '#10' ' +
+ 'ID_TIPO_IVA = :ID_TIPO_IVA, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO,' +
+ ' '#10' ID_ALMACEN = :ID_ALMACEN'#10' WHERE'#10' (ID = :OLD_ID)'
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Update_Empresas'
end>
RelationShips = <
item
@@ -751,8 +1133,11 @@ object srvEmpresas: TsrvEmpresas
end
object bpEmpresas: TDABusinessProcessor
Schema = schEmpresas
+ InsertCommandName = 'Insert_Empresas'
+ DeleteCommandName = 'Delete_Empresas'
+ UpdateCommandName = 'Update_Empresas'
ReferencedDataset = 'Empresas'
- ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands]
+ ProcessorOptions = [poAutoGenerateRefreshDataset]
UpdateMode = updWhereKeyOnly
Left = 264
Top = 24
diff --git a/Source/ApplicationBase/Usuarios/Views/uEditorLogin.dfm b/Source/ApplicationBase/Usuarios/Views/uEditorLogin.dfm
index 38db70d..439ebca 100644
--- a/Source/ApplicationBase/Usuarios/Views/uEditorLogin.dfm
+++ b/Source/ApplicationBase/Usuarios/Views/uEditorLogin.dfm
@@ -1074,28 +1074,4 @@ object fEditorLogin: TfEditorLogin
Left = 344
Top = 64
end
- object JvAppRegistryStorage1: TJvAppRegistryStorage
- StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
- StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
- StorageOptions.BooleanAsString = False
- Root = 'Software\%APPL_NAME%'
- SubStorages = <>
- Left = 14
- Top = 168
- end
- object JvFormStorage1: TJvFormStorage
- AppStorage = JvAppRegistryStorage1
- AppStoragePath = '\'
- Options = []
- StoredProps.Strings = (
- 'edtUser.Text'
- 'edtPassword.Text')
- StoredValues = <
- item
- Name = 'Ruta'
- Value = ''
- end>
- Left = 48
- Top = 168
- end
end
diff --git a/Source/ApplicationBase/Usuarios/Views/uEditorLogin.pas b/Source/ApplicationBase/Usuarios/Views/uEditorLogin.pas
index c7d030e..ced385f 100644
--- a/Source/ApplicationBase/Usuarios/Views/uEditorLogin.pas
+++ b/Source/ApplicationBase/Usuarios/Views/uEditorLogin.pas
@@ -23,8 +23,6 @@ type
JvGradient1: TJvGradient;
Button1: TButton;
Timer1: TTimer;
- JvAppRegistryStorage1: TJvAppRegistryStorage;
- JvFormStorage1: TJvFormStorage;
Image1: TImage;
procedure bAceptarClick(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
@@ -113,7 +111,7 @@ end;
procedure TfEditorLogin.FormShow(Sender: TObject);
begin
Self.Caption := AppFactuGES.AppFullName;
- JvFormStorage1.RestoreFormPlacement;
+// JvFormStorage1.RestoreFormPlacement; Que se meta usuario y contraseña siempre
// Hacer login automática si hay usuario/password y no hay más de una base
// de datos como opción para conectarse.
diff --git a/Source/ApplicationBase/uFactuGES_App.pas b/Source/ApplicationBase/uFactuGES_App.pas
index c094037..0aa2935 100644
--- a/Source/ApplicationBase/uFactuGES_App.pas
+++ b/Source/ApplicationBase/uFactuGES_App.pas
@@ -386,7 +386,7 @@ begin
//Añadimos las diferentes empresas que existan
AEmpresasController := TEmpresasController.Create;
- AEmpresas := AEmpresasController.BuscarTodos;
+ AEmpresas := AEmpresasController.BuscarTodos(AppFactuGES.UsuarioActivo.ID_PERFIL);
AEmpresas.DataTable.Active := True;
AEmpresas.Datatable.First;
diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index 24cf524..4abc4a4 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -56,62 +56,62 @@
MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
TDataModule
diff --git a/Source/Cliente/uMainMenuController.pas b/Source/Cliente/uMainMenuController.pas
index a6eda53..10eb0aa 100644
--- a/Source/Cliente/uMainMenuController.pas
+++ b/Source/Cliente/uMainMenuController.pas
@@ -78,7 +78,7 @@ begin
if Assigned(AListaEmpresasItem) then
begin
- AEmpresas := AppFactuGES.EmpresasController.BuscarTodos;
+ AEmpresas := AppFactuGES.EmpresasController.BuscarTodos(AppFactuGES.UsuarioActivo.ID_PERFIL);
try
AEmpresas.DataTable.Active := True;
while not AEmpresas.DataTable.EOF do
diff --git a/Source/Cliente/uNavPaneController.pas b/Source/Cliente/uNavPaneController.pas
index b624303..a004bce 100644
--- a/Source/Cliente/uNavPaneController.pas
+++ b/Source/Cliente/uNavPaneController.pas
@@ -127,7 +127,7 @@ begin
end;
// Crear páginas con empresas y rellenarlas
- AEmpresas := AppFactuGES.EmpresasController.BuscarTodos;
+ AEmpresas := AppFactuGES.EmpresasController.BuscarTodos(AppFactuGES.UsuarioActivo.ID_PERFIL);
try
AEmpresas.DataTable.Active := True;
diff --git a/Source/Cliente/uPantallaPrincipal.pas b/Source/Cliente/uPantallaPrincipal.pas
index 91926be..41673e2 100644
--- a/Source/Cliente/uPantallaPrincipal.pas
+++ b/Source/Cliente/uPantallaPrincipal.pas
@@ -193,10 +193,17 @@ procedure TfPantallaPrincipal.FormShow(Sender: TObject);
begin
InicializarUI;
- //Solo verá Luis los informes
- if (AppFactuGES.UsuarioActivo.ID <> 1)
- and (AppFactuGES.UsuarioActivo.ID <> 3) then
- actMenuInformes.Visible := False;
+ //Solo verá los informes el perfil SuperAdministrador(11) y Administrador(9), están en la tabla usuarios
+ if (AppFactuGES.UsuarioActivo.ID_PERFIL <> 11) then
+ begin
+ Perfiles1.Visible := False;
+ actAnadirEmpresa.Visible := False;
+ if (AppFactuGES.UsuarioActivo.ID_PERFIL <> 9) then
+ begin
+ Administracin1.Visible := False;
+ actMenuInformes.Visible := False;
+ end;
+ end;
end;
procedure TfPantallaPrincipal.RefrescarUI;
@@ -337,7 +344,7 @@ begin
NavPaneController.InitNavPane;
try
- AListaEmpresas := AppFactuGES.EmpresasController.BuscarTodos;
+ AListaEmpresas := AppFactuGES.EmpresasController.BuscarTodos(AppFactuGES.UsuarioActivo.ID_PERFIL);
if Assigned(AListaEmpresas) then
begin
AListaEmpresas.Active := True;
diff --git a/Source/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj
index 6758ec5..39f4304 100644
--- a/Source/GUIBase/GUIBase.dproj
+++ b/Source/GUIBase/GUIBase.dproj
@@ -59,30 +59,30 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/1/InfAlbaranCliente.fr3 b/Source/Informes/1/InfAlbaranCliente.fr3
index e3f219a..bf4ad29 100644
--- a/Source/Informes/1/InfAlbaranCliente.fr3
+++ b/Source/Informes/1/InfAlbaranCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -57,5 +57,6 @@
+
diff --git a/Source/Informes/1/InfPedidoCliente.fr3 b/Source/Informes/1/InfPedidoCliente.fr3
index dcd5fce..d8f4a1a 100644
--- a/Source/Informes/1/InfPedidoCliente.fr3
+++ b/Source/Informes/1/InfPedidoCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -44,5 +44,6 @@
+
diff --git a/Source/Informes/4/InfAlbaranProveedor.fr3 b/Source/Informes/4/InfAlbaranProveedor.fr3
index 1ee403d..7ef403d 100644
--- a/Source/Informes/4/InfAlbaranProveedor.fr3
+++ b/Source/Informes/4/InfAlbaranProveedor.fr3
@@ -1,5 +1,5 @@
-
+
@@ -25,9 +25,9 @@
-
+
-
+
diff --git a/Source/Informes/6/InfAlbaranCliente.fr3 b/Source/Informes/6/InfAlbaranCliente.fr3
index e8cd08d..a90897e 100644
--- a/Source/Informes/6/InfAlbaranCliente.fr3
+++ b/Source/Informes/6/InfAlbaranCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -57,6 +57,7 @@
+
diff --git a/Source/Informes/8/InfAlbaranCliente.fr3 b/Source/Informes/8/InfAlbaranCliente.fr3
new file mode 100644
index 0000000..bcf90c9
--- /dev/null
+++ b/Source/Informes/8/InfAlbaranCliente.fr3
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfAlbaranProveedor.fr3 b/Source/Informes/8/InfAlbaranProveedor.fr3
new file mode 100644
index 0000000..7b8dca2
--- /dev/null
+++ b/Source/Informes/8/InfAlbaranProveedor.fr3
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfComisiones.fr3 b/Source/Informes/8/InfComisiones.fr3
new file mode 100644
index 0000000..c2b898b
--- /dev/null
+++ b/Source/Informes/8/InfComisiones.fr3
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfComisionesDesglosado.fr3 b/Source/Informes/8/InfComisionesDesglosado.fr3
new file mode 100644
index 0000000..a476a8b
--- /dev/null
+++ b/Source/Informes/8/InfComisionesDesglosado.fr3
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfFacturaCliente.fr3 b/Source/Informes/8/InfFacturaCliente.fr3
new file mode 100644
index 0000000..564a907
--- /dev/null
+++ b/Source/Informes/8/InfFacturaCliente.fr3
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfFacturaProveedor.fr3 b/Source/Informes/8/InfFacturaProveedor.fr3
new file mode 100644
index 0000000..44c9612
--- /dev/null
+++ b/Source/Informes/8/InfFacturaProveedor.fr3
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfPedidoCliente.fr3 b/Source/Informes/8/InfPedidoCliente.fr3
new file mode 100644
index 0000000..32cff63
--- /dev/null
+++ b/Source/Informes/8/InfPedidoCliente.fr3
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfPedidoProveedor.fr3 b/Source/Informes/8/InfPedidoProveedor.fr3
new file mode 100644
index 0000000..03ec46e
--- /dev/null
+++ b/Source/Informes/8/InfPedidoProveedor.fr3
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfReciboCliente.fr3 b/Source/Informes/8/InfReciboCliente.fr3
new file mode 100644
index 0000000..5e31a7a
--- /dev/null
+++ b/Source/Informes/8/InfReciboCliente.fr3
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfRemesaCliente.fr3 b/Source/Informes/8/InfRemesaCliente.fr3
new file mode 100644
index 0000000..6c0ee71
--- /dev/null
+++ b/Source/Informes/8/InfRemesaCliente.fr3
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InfRemesaProveedor.fr3 b/Source/Informes/8/InfRemesaProveedor.fr3
new file mode 100644
index 0000000..e922334
--- /dev/null
+++ b/Source/Informes/8/InfRemesaProveedor.fr3
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeIVAClientes.fr3 b/Source/Informes/8/InformeIVAClientes.fr3
new file mode 100644
index 0000000..9228acf
--- /dev/null
+++ b/Source/Informes/8/InformeIVAClientes.fr3
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeIVAClientesDesglosado.fr3 b/Source/Informes/8/InformeIVAClientesDesglosado.fr3
new file mode 100644
index 0000000..8fdb2c3
--- /dev/null
+++ b/Source/Informes/8/InformeIVAClientesDesglosado.fr3
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeIVAProveedores.fr3 b/Source/Informes/8/InformeIVAProveedores.fr3
new file mode 100644
index 0000000..6a7a040
--- /dev/null
+++ b/Source/Informes/8/InformeIVAProveedores.fr3
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeIVAProveedoresDesglosado.fr3 b/Source/Informes/8/InformeIVAProveedoresDesglosado.fr3
new file mode 100644
index 0000000..b7f52f8
--- /dev/null
+++ b/Source/Informes/8/InformeIVAProveedoresDesglosado.fr3
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoAlbaranesClienteGrafComp.fr3 b/Source/Informes/8/InformeListadoAlbaranesClienteGrafComp.fr3
new file mode 100644
index 0000000..abc92e2
--- /dev/null
+++ b/Source/Informes/8/InformeListadoAlbaranesClienteGrafComp.fr3
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoBeneficiosGrafComp.fr3 b/Source/Informes/8/InformeListadoBeneficiosGrafComp.fr3
new file mode 100644
index 0000000..ccb88f3
--- /dev/null
+++ b/Source/Informes/8/InformeListadoBeneficiosGrafComp.fr3
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasCliente.fr3 b/Source/Informes/8/InformeListadoFacturasCliente.fr3
new file mode 100644
index 0000000..cf2cb06
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasCliente.fr3
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasClienteDesglosado.fr3 b/Source/Informes/8/InformeListadoFacturasClienteDesglosado.fr3
new file mode 100644
index 0000000..0da747a
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasClienteDesglosado.fr3
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasClienteGrafComp.fr3 b/Source/Informes/8/InformeListadoFacturasClienteGrafComp.fr3
new file mode 100644
index 0000000..ab11386
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasClienteGrafComp.fr3
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasClientePendientes.fr3 b/Source/Informes/8/InformeListadoFacturasClientePendientes.fr3
new file mode 100644
index 0000000..04878a5
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasClientePendientes.fr3
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasClientePendientesDesglosado.fr3 b/Source/Informes/8/InformeListadoFacturasClientePendientesDesglosado.fr3
new file mode 100644
index 0000000..2adf9b2
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasClientePendientesDesglosado.fr3
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasProveedor.fr3 b/Source/Informes/8/InformeListadoFacturasProveedor.fr3
new file mode 100644
index 0000000..5cfb246
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasProveedor.fr3
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasProveedorDesglosado.fr3 b/Source/Informes/8/InformeListadoFacturasProveedorDesglosado.fr3
new file mode 100644
index 0000000..dda1102
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasProveedorDesglosado.fr3
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasProveedorGrafComp.fr3 b/Source/Informes/8/InformeListadoFacturasProveedorGrafComp.fr3
new file mode 100644
index 0000000..590d9cf
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasProveedorGrafComp.fr3
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasProveedorPendientes.fr3 b/Source/Informes/8/InformeListadoFacturasProveedorPendientes.fr3
new file mode 100644
index 0000000..3755b76
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasProveedorPendientes.fr3
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoFacturasProveedorPendientesDesglosado.fr3 b/Source/Informes/8/InformeListadoFacturasProveedorPendientesDesglosado.fr3
new file mode 100644
index 0000000..90e57a3
--- /dev/null
+++ b/Source/Informes/8/InformeListadoFacturasProveedorPendientesDesglosado.fr3
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoPedidos.fr3 b/Source/Informes/8/InformeListadoPedidos.fr3
new file mode 100644
index 0000000..c98e69d
--- /dev/null
+++ b/Source/Informes/8/InformeListadoPedidos.fr3
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoPedidosDesglosado.fr3 b/Source/Informes/8/InformeListadoPedidosDesglosado.fr3
new file mode 100644
index 0000000..1b8b4eb
--- /dev/null
+++ b/Source/Informes/8/InformeListadoPedidosDesglosado.fr3
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoPresupuestos.fr3 b/Source/Informes/8/InformeListadoPresupuestos.fr3
new file mode 100644
index 0000000..cb4a8f6
--- /dev/null
+++ b/Source/Informes/8/InformeListadoPresupuestos.fr3
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoPresupuestosDesglosado.fr3 b/Source/Informes/8/InformeListadoPresupuestosDesglosado.fr3
new file mode 100644
index 0000000..f6e5b32
--- /dev/null
+++ b/Source/Informes/8/InformeListadoPresupuestosDesglosado.fr3
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosCliPendientes.fr3 b/Source/Informes/8/InformeListadoRecibosCliPendientes.fr3
new file mode 100644
index 0000000..126d1e5
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosCliPendientes.fr3
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosCliPendientesDesglosado.fr3 b/Source/Informes/8/InformeListadoRecibosCliPendientesDesglosado.fr3
new file mode 100644
index 0000000..d65cc73
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosCliPendientesDesglosado.fr3
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosCliente.fr3 b/Source/Informes/8/InformeListadoRecibosCliente.fr3
new file mode 100644
index 0000000..6dfc975
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosCliente.fr3
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosClienteDesglosado.fr3 b/Source/Informes/8/InformeListadoRecibosClienteDesglosado.fr3
new file mode 100644
index 0000000..46d67e0
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosClienteDesglosado.fr3
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosProvPendientes.fr3 b/Source/Informes/8/InformeListadoRecibosProvPendientes.fr3
new file mode 100644
index 0000000..342e477
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosProvPendientes.fr3
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosProvPendientesDesglosado.fr3 b/Source/Informes/8/InformeListadoRecibosProvPendientesDesglosado.fr3
new file mode 100644
index 0000000..c135f24
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosProvPendientesDesglosado.fr3
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosProveedor.fr3 b/Source/Informes/8/InformeListadoRecibosProveedor.fr3
new file mode 100644
index 0000000..325e646
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosProveedor.fr3
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeListadoRecibosProveedorDesglosado.fr3 b/Source/Informes/8/InformeListadoRecibosProveedorDesglosado.fr3
new file mode 100644
index 0000000..b268fc3
--- /dev/null
+++ b/Source/Informes/8/InformeListadoRecibosProveedorDesglosado.fr3
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeObjetivosAgentesAlbaranes.fr3 b/Source/Informes/8/InformeObjetivosAgentesAlbaranes.fr3
new file mode 100644
index 0000000..c2e8f7a
--- /dev/null
+++ b/Source/Informes/8/InformeObjetivosAgentesAlbaranes.fr3
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/8/InformeObjetivosAgentesFacturas.fr3 b/Source/Informes/8/InformeObjetivosAgentesFacturas.fr3
new file mode 100644
index 0000000..9ac6a2b
--- /dev/null
+++ b/Source/Informes/8/InformeObjetivosAgentesFacturas.fr3
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
index f4c0449..9b0a5ac 100644
--- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
+++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
@@ -198,8 +198,8 @@ begin
AEditor.ListaID := AListaID;
AEditor.VerPrecios := VerImprimirPrecios;
AEditor.VerRefProveedor := VerImprimirRefProveedor;
- AEditor.VerPrecios := VerImprimirObservaciones;
- AEditor.VerRefProveedor := VerImprimirIncidencias;
+ AEditor.VerObservaciones := VerImprimirObservaciones;
+ AEditor.VerIncidencias := VerImprimirIncidencias;
AEditor.Title := 'Albarán - ' + AppFactuGES.EmpresaActiva.NOMBRE;
AEditor.LoadFromStream(AStream);
AEditor.Preview;
@@ -240,8 +240,8 @@ begin
AEditor.ListaID := AListaID;
AEditor.VerPrecios := VerImprimirPrecios;
AEditor.VerRefProveedor := VerImprimirRefProveedor;
- AEditor.VerPrecios := VerImprimirObservaciones;
- AEditor.VerRefProveedor := VerImprimirIncidencias;
+ AEditor.VerObservaciones := VerImprimirObservaciones;
+ AEditor.VerIncidencias := VerImprimirIncidencias;
AEditor.Title := 'Albarán - ' + AppFactuGES.EmpresaActiva.NOMBRE;
AEditor.LoadFromStream(AStream);
AEditor.TablaImpresion := nme_AlbaranesCliente;
diff --git a/Source/Modulos/Albaranes de proveedor/AlbaranesProveedor_Group.groupproj b/Source/Modulos/Albaranes de proveedor/AlbaranesProveedor_Group.groupproj
index f87851e..06ba999 100644
--- a/Source/Modulos/Albaranes de proveedor/AlbaranesProveedor_Group.groupproj
+++ b/Source/Modulos/Albaranes de proveedor/AlbaranesProveedor_Group.groupproj
@@ -14,6 +14,8 @@
+
+
@@ -191,14 +193,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/View/uIEditorAlbaranesProveedorPreview.pas b/Source/Modulos/Albaranes de proveedor/Controller/View/uIEditorAlbaranesProveedorPreview.pas
index 8dde31b..e507594 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/View/uIEditorAlbaranesProveedorPreview.pas
+++ b/Source/Modulos/Albaranes de proveedor/Controller/View/uIEditorAlbaranesProveedorPreview.pas
@@ -15,6 +15,14 @@ type
function GetVerRefProveedor: Boolean;
procedure SetVerRefProveedor(const Value: Boolean);
property VerRefProveedor : Boolean read GetVerRefProveedor write SetVerRefProveedor;
+
+ function GetVerIncidencias: Boolean;
+ procedure SetVerIncidencias(const Value: Boolean);
+ property VerIncidencias : Boolean read GetVerIncidencias write SetVerIncidencias;
+
+ function GetVerObservaciones: Boolean;
+ procedure SetObservaciones(const Value: Boolean);
+ property VerObservaciones : Boolean read GetVerObservaciones write SetObservaciones;
end;
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
index 7b42233..e7a64d3 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
+++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas
@@ -61,9 +61,11 @@ type
function EsEliminable(AAlbaran: IBizAlbaranProveedor): Boolean;
procedure Preview(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
function Print(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
procedure GenerarEmailAlbaran(AAlbaran : IBizAlbaranProveedor;
const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
@@ -157,9 +159,11 @@ type
function EsEliminable(AAlbaran: IBizAlbaranProveedor): Boolean;
procedure Preview(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
function Print(AAlbaran : IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
procedure GenerarEmailAlbaran(AAlbaran : IBizAlbaranProveedor;
const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
@@ -495,7 +499,7 @@ var
begin
ShowHourglassCursor;
try
- Result := BuscarAlbaranesNormales;
+ Result := BuscarTodos;
with Result.DataTable.DynamicWhere do
begin
@@ -1019,8 +1023,7 @@ begin
end;
function TAlbaranesProveedorController.EnviarEmailAlbaranes(
- AAlbaranes: IBizAlbaranProveedor; const VerPrecios: Boolean;
- const VerRefProveedor: Boolean): Boolean;
+ AAlbaranes: IBizAlbaranProveedor; const VerPrecios: Boolean; const VerRefProveedor: Boolean): Boolean;
var
ADialog : IDialogListaAlbaranesProveedorEnvioEMail;
ARespuesta : Integer;
@@ -1256,7 +1259,8 @@ begin
end;
procedure TAlbaranesProveedorController.Preview(AAlbaran: IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
var
AReportController : IAlbaranesProveedorReportController;
ID_Albaranes: TIntegerList;
@@ -1282,7 +1286,7 @@ begin
else
ID_Albaranes.Add(AAlbaran.ID);
- AReportController.Preview(ID_Albaranes, VerPrecios, VerRefProveedor);
+ AReportController.Preview(ID_Albaranes, VerPrecios, VerRefProveedor, VerImprimirObservaciones, VerImprimirIncidencias);
finally
AReportController := NIL;
FreeANDNIL(ID_Albaranes)
@@ -1290,7 +1294,8 @@ begin
end;
function TAlbaranesProveedorController.Print(AAlbaran: IBizAlbaranProveedor; AllItems: Boolean = false;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
var
AReportController : IAlbaranesProveedorReportController;
ID_Albaranes: TIntegerList;
@@ -1316,7 +1321,7 @@ begin
else
ID_Albaranes.Add(AAlbaran.ID);
- Result := AReportController.Print(ID_Albaranes, VerPrecios, VerRefProveedor);
+ Result := AReportController.Print(ID_Albaranes, VerPrecios, VerRefProveedor, VerImprimirObservaciones, VerImprimirIncidencias);
finally
AReportController := NIL;
FreeANDNIL(ID_Albaranes)
diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorReportController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorReportController.pas
index 3855936..f0d722c 100644
--- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorReportController.pas
+++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorReportController.pas
@@ -11,9 +11,11 @@ type
IAlbaranesProveedorReportController = interface(IControllerBase)
['{11F9D087-C6BE-4401-AB13-4342025D62BB}']
procedure Preview(const AListaID : TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
function Print(const AListaID : TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
function ExportToWord(const AID: Integer; const AFileName : String = '';
const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
function ExportToPDF(const AID: Integer; const AFileName : String = '';
@@ -29,9 +31,11 @@ type
destructor Destroy; override;
procedure Preview(const AListaID : TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
function Print(const AListaID : TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
function ExportToWord(const AID: Integer; const AFileName : String = '';
const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
function ExportToPDF(const AID: Integer; const AFileName : String = '';
@@ -117,7 +121,8 @@ begin
end;
procedure TAlbaranesProveedorReportController.Preview(const AListaID: TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True);
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False);
var
AStream: Binary;
AEditor : IEditorAlbaranesProveedorPreview;
@@ -126,7 +131,7 @@ begin
ShowHourglassCursor;
try
- AStream := FDataModule.GetReport(AListaID, VerPrecios, VerRefProveedor);
+ AStream := FDataModule.GetReport(AListaID, VerPrecios, VerRefProveedor, VerImprimirObservaciones, VerImprimirIncidencias);
try
CreateEditor('EditorAlbaranesProveedorPreview', IEditorAlbaranesProveedorPreview, AEditor);
if Assigned(AEditor) then
@@ -136,6 +141,8 @@ begin
AEditor.ListaID := AListaID;
AEditor.VerPrecios := VerPrecios;
AEditor.VerRefProveedor := VerRefProveedor;
+ AEditor.VerObservaciones := VerImprimirObservaciones;
+ AEditor.VerIncidencias := VerImprimirIncidencias;
AEditor.Title := 'Albarán de proveedor - ' + AppFactuGES.EmpresaActiva.NOMBRE;
AEditor.LoadFromStream(AStream);
AEditor.Preview;
@@ -153,7 +160,8 @@ begin
end;
function TAlbaranesProveedorReportController.Print(const AListaID: TIntegerList;
- const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True): Boolean;
+ const VerPrecios: Boolean = True; const VerRefProveedor: Boolean = True;
+ const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean;
var
AStream: Binary;
AEditor : IEditorAlbaranesProveedorPreview;
@@ -163,7 +171,7 @@ begin
ShowHourglassCursor;
try
- AStream := FDataModule.GetReport(AListaID, VerPrecios, VerRefProveedor);
+ AStream := FDataModule.GetReport(AListaID, VerPrecios, VerRefProveedor, VerImprimirObservaciones, VerImprimirIncidencias);
try
CreateEditor('EditorAlbaranesProveedorPreview', IEditorAlbaranesProveedorPreview, AEditor);
if Assigned(AEditor) then
@@ -173,6 +181,8 @@ begin
AEditor.ListaID := AListaID;
AEditor.VerPrecios := VerPrecios;
AEditor.VerRefProveedor := VerRefProveedor;
+ AEditor.VerObservaciones := VerImprimirObservaciones;
+ AEditor.VerIncidencias := VerImprimirIncidencias;
AEditor.Title := 'Albarán de proveedor - ' + AppFactuGES.EmpresaActiva.NOMBRE;
AEditor.LoadFromStream(AStream);
AEditor.TablaImpresion := nme_AlbaranesProveedor;
diff --git a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas
index f293695..da693ea 100644
--- a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas
+++ b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas
@@ -37,11 +37,11 @@ type
// Report
function GetReport(const ListaID: TIntegerList; const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirRefProveedor: Boolean = True; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
function GetRptWordAlbaran(const AID: Integer; const ImprimirPrecio: Boolean = True;
const ImprimirRefProveedor: Boolean = True): Binary;
function GetRptPDFAlbaran(const AID: Integer; const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirRefProveedor: Boolean = True; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
function GetAnosItems : TStringList;
end;
@@ -68,23 +68,23 @@ begin
end;
function TDataModuleAlbaranesProveedor.GetReport(const ListaID: TIntegerList;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean = True; const ImprimirRefProveedor: Boolean = True;
+ const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
var
AParam : TIntegerArray;
begin
AParam := ListaID.ToIntegerArray;
try
Result := (RORemoteService as IsrvAlbaranesProveedor).GenerarInforme(AParam,
- ImprimirPrecio, ImprimirRefProveedor);
+ ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
finally
FreeANDNil(AParam);
end;
end;
function TDataModuleAlbaranesProveedor.GetRptPDFAlbaran(const AID: Integer;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean = True; const ImprimirRefProveedor: Boolean = True;
+ const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
var
AParam : TIntegerArray;
begin
@@ -92,7 +92,7 @@ begin
try
AParam.Add(AID);
Result := (RORemoteService as IsrvAlbaranesProveedor).GenerarInformeEnPDF(AParam,
- ImprimirPrecio, ImprimirRefProveedor);
+ ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
finally
FreeANDNil(AParam);
end;
diff --git a/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedorReport.pas b/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedorReport.pas
index 1b49e69..7006aea 100644
--- a/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedorReport.pas
+++ b/Source/Modulos/Albaranes de proveedor/Model/Data/uIDataModuleAlbaranesProveedorReport.pas
@@ -9,11 +9,11 @@ type
IDataModuleAlbaranesProveedorReport = interface
['{FC37B698-7FBF-4658-BBD0-CBD4F6891CDF}']
function GetReport(const ListaID: TIntegerList; const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirRefProveedor: Boolean = True; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
function GetRptWordAlbaran(const AID: Integer; const ImprimirPrecio: Boolean = True;
const ImprimirRefProveedor: Boolean = True): Binary;
function GetRptPDFAlbaran(const AID: Integer; const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirRefProveedor: Boolean = True; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary;
end;
implementation
diff --git a/Source/Modulos/Albaranes de proveedor/Reports/uRptAlbaranesProveedor_Server.pas b/Source/Modulos/Albaranes de proveedor/Reports/uRptAlbaranesProveedor_Server.pas
index 19c0046..a1c1c7c 100644
--- a/Source/Modulos/Albaranes de proveedor/Reports/uRptAlbaranesProveedor_Server.pas
+++ b/Source/Modulos/Albaranes de proveedor/Reports/uRptAlbaranesProveedor_Server.pas
@@ -51,15 +51,18 @@ type
FConnection: IDAConnection;
FImprimirPrecio : Boolean;
FImprimirRefProveedor : Boolean;
+ FVerObservaciones : Boolean;
+ FVerIncidencias : Boolean;
+
//Genera cada uno de los albaranes a imprimir
procedure _GenerarAlbaran(const AID: Integer);
public
function GenerarAlbaran(const AListaID : TIntegerArray;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
function GenerarAlbaranEnPDF(const ListaID : TIntegerArray;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
end;
implementation
@@ -106,17 +109,24 @@ begin
Value := FImprimirPrecio;
if VarName = 'ImprimirRefProveedor' then
Value := FImprimirRefProveedor;
+ if VarName = 'VerObservaciones' then
+ Value := FVerObservaciones;
+ if VarName = 'VerIncidencias' then
+ Value := FVerIncidencias;
end;
function TRptAlbaranesProveedor.GenerarAlbaran(const AListaID : TIntegerArray;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
var
i: Integer;
begin
Result := Binary.Create;
FImprimirPrecio := ImprimirPrecio;
FImprimirRefProveedor := ImprimirRefProveedor;
+ FVerObservaciones := VerObservaciones;
+ FVerIncidencias := VerIncidencias;
+
try
//Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to AListaID.Count - 1 do
@@ -127,14 +137,17 @@ begin
end;
function TRptAlbaranesProveedor.GenerarAlbaranEnPDF(const ListaID: TIntegerArray;
- const ImprimirPrecio: Boolean = True;
- const ImprimirRefProveedor: Boolean = True): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
var
i: Integer;
begin
Result := Binary.Create;
FImprimirPrecio := ImprimirPrecio;
FImprimirRefProveedor := ImprimirRefProveedor;
+ FVerObservaciones := VerObservaciones;
+ FVerIncidencias := VerIncidencias;
+
try
//Vamos generando todos y cada uno de los presupuestos recibidos
for i := 0 to ListaID.Count - 1 do
diff --git a/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.pas b/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.pas
index 7261427..56e48df 100644
--- a/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.pas
+++ b/Source/Modulos/Albaranes de proveedor/Servidor/srvAlbaranesProveedor_Impl.pas
@@ -33,9 +33,11 @@ type
var aConnectionName: string);
protected
function GenerarInforme(const ListaID: TIntegerArray;
- const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
function GenerarInformeEnPDF(const ListaID: TIntegerArray;
- const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
end;
@@ -83,28 +85,29 @@ begin
end;
function TsrvAlbaranesProveedor.GenerarInforme(const ListaID: TIntegerArray;
- const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
var
AReportGenerator : TRptAlbaranesProveedor;
begin
AReportGenerator := TRptAlbaranesProveedor.Create(nil);
try
- Result := AReportGenerator.GenerarAlbaran(ListaID,
- ImprimirPrecio, ImprimirRefProveedor);
+ Result := AReportGenerator.GenerarAlbaran(ListaID, ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
finally
FreeAndNIL(AReportGenerator);
end;
end;
function TsrvAlbaranesProveedor.GenerarInformeEnPDF(const ListaID: TIntegerArray;
- const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean;
+ const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary;
var
AReportGenerator : TRptAlbaranesProveedor;
begin
AReportGenerator := TRptAlbaranesProveedor.Create(nil);
try
Result := AReportGenerator.GenerarAlbaranEnPDF(ListaID,
- ImprimirPrecio, ImprimirRefProveedor);
+ ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
finally
FreeAndNIL(AReportGenerator);
end;
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.dfm
index 610b38c..c6c9856 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.dfm
+++ b/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.dfm
@@ -1,9 +1,9 @@
inherited fDialogOpcionesImpresionAlbaranesProveedor: TfDialogOpcionesImpresionAlbaranesProveedor
Caption = 'Opciones para albar'#225'n a proveedor'
- ClientHeight = 186
+ ClientHeight = 247
ClientWidth = 393
ExplicitWidth = 399
- ExplicitHeight = 218
+ ExplicitHeight = 279
PixelsPerInch = 96
TextHeight = 13
inherited Bevel2: TBevel
@@ -11,15 +11,15 @@ inherited fDialogOpcionesImpresionAlbaranesProveedor: TfDialogOpcionesImpresionA
ExplicitWidth = 393
end
inherited Bevel3: TBevel
- Top = 142
+ Top = 203
Width = 393
ExplicitTop = 195
ExplicitWidth = 393
end
inherited pnlBotones: TPanel
- Top = 144
+ Top = 205
Width = 393
- ExplicitTop = 197
+ ExplicitTop = 144
ExplicitWidth = 393
inherited btnAceptar: TButton
Left = 229
@@ -49,9 +49,9 @@ inherited fDialogOpcionesImpresionAlbaranesProveedor: TfDialogOpcionesImpresionA
end
inherited pnlCuerpo: TPanel
Width = 393
- Height = 76
+ Height = 137
ExplicitWidth = 393
- ExplicitHeight = 129
+ ExplicitHeight = 76
object cbVerPrecios: TCheckBox
AlignWithMargins = True
Left = 50
@@ -66,7 +66,7 @@ inherited fDialogOpcionesImpresionAlbaranesProveedor: TfDialogOpcionesImpresionA
object cbVerRefProveedor: TCheckBox
AlignWithMargins = True
Left = 50
- Top = 52
+ Top = 98
Width = 441
Height = 17
Caption = 'Mostrar las referencias de proveedor de los conceptos'
@@ -75,6 +75,28 @@ inherited fDialogOpcionesImpresionAlbaranesProveedor: TfDialogOpcionesImpresionA
TabOrder = 1
Visible = False
end
+ object cbVerIncidencias: TCheckBox
+ AlignWithMargins = True
+ Left = 50
+ Top = 52
+ Width = 441
+ Height = 17
+ Caption = 'Mostrar las incidencias del albar'#225'n'
+ Checked = True
+ State = cbChecked
+ TabOrder = 2
+ end
+ object cbVerObservaciones: TCheckBox
+ AlignWithMargins = True
+ Left = 50
+ Top = 75
+ Width = 441
+ Height = 17
+ Caption = 'Mostrar las observaciones del albar'#225'n'
+ Checked = True
+ State = cbChecked
+ TabOrder = 3
+ end
end
inherited ActionList1: TActionList
Top = 16
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.pas
index 6aa590e..895c07b 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.pas
+++ b/Source/Modulos/Albaranes de proveedor/Views/uDialogOpcionesImpresionAlbaranesProveedor.pas
@@ -10,6 +10,8 @@ type
TfDialogOpcionesImpresionAlbaranesProveedor = class(TfDialogBase)
cbVerPrecios: TCheckBox;
cbVerRefProveedor: TCheckBox;
+ cbVerIncidencias: TCheckBox;
+ cbVerObservaciones: TCheckBox;
procedure actAceptarExecute(Sender: TObject);
procedure actCancelarExecute(Sender: TObject);
private
@@ -18,13 +20,13 @@ type
{ Public declarations }
end;
- function ElegirOpcionesImpresionAlbaranProveedor(var AVerPrecios : Boolean; var AVerRefProveedor : Boolean): Boolean;
+ function ElegirOpcionesImpresionAlbaranProveedor(var AVerPrecios : Boolean; var AVerRefProveedor : Boolean; var AVerObservaciones : Boolean; var AVerIncidencias : Boolean): Boolean;
implementation
{$R *.dfm}
-function ElegirOpcionesImpresionAlbaranProveedor(var AVerPrecios : Boolean; var AVerRefProveedor : Boolean): Boolean;
+function ElegirOpcionesImpresionAlbaranProveedor(var AVerPrecios : Boolean; var AVerRefProveedor : Boolean; var AVerObservaciones : Boolean; var AVerIncidencias : Boolean): Boolean;
var
AEditor : TfDialogOpcionesImpresionAlbaranesProveedor;
begin
@@ -32,12 +34,17 @@ begin
try
AEditor.cbVerPrecios.Checked := AVerPrecios;
AEditor.cbVerRefProveedor.Checked := AVerRefProveedor;
+ AEditor.cbVerObservaciones.Checked := AVerObservaciones;
+ AEditor.cbVerIncidencias.Checked := AVerIncidencias;
+
Result := (AEditor.ShowModal = mrOk);
if Result then
begin
AVerPrecios := AEditor.cbVerPrecios.Checked;
AVerRefProveedor := AEditor.cbVerRefProveedor.Checked;
+ AVerObservaciones := AEditor.cbVerObservaciones.Checked;
+ AVerIncidencias := AEditor.cbVerIncidencias.Checked;
end;
finally
AEditor.Release;
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.dfm
index 7501fc0..ba8c26d 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.dfm
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.dfm
@@ -166,6 +166,10 @@ inherited fEditorAlbaranProveedor: TfEditorAlbaranProveedor
object pagContenido: TTabSheet
Caption = 'Contenido'
ImageIndex = 1
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
inline frViewDetallesAlbaranProveedor1: TfrViewDetallesAlbaranProveedor
Left = 0
Top = 0
@@ -218,7 +222,13 @@ inherited fEditorAlbaranProveedor: TfEditorAlbaranProveedor
ExplicitTop = 0
ExplicitWidth = 170
end
- inherited ToolButton13: TToolButton [7]
+ inherited UpDown1: TUpDown
+ Left = 714
+ Top = 0
+ ExplicitLeft = 714
+ ExplicitTop = 0
+ end
+ inherited ToolButton13: TToolButton
Left = 0
Top = 0
Wrap = True
@@ -226,55 +236,47 @@ inherited fEditorAlbaranProveedor: TfEditorAlbaranProveedor
ExplicitTop = 0
ExplicitHeight = 27
end
- inherited UpDown1: TUpDown [8]
+ inherited ToolButton6: TToolButton [9]
Left = 0
Top = 27
ExplicitLeft = 0
ExplicitTop = 27
end
- inherited ToolButton6: TToolButton [9]
- Left = 17
- Top = 27
- ExplicitLeft = 17
- ExplicitTop = 27
- end
inherited ToolButton7: TToolButton [10]
- Left = 83
+ Left = 66
Top = 27
- Wrap = False
- ExplicitLeft = 83
+ ExplicitLeft = 66
ExplicitTop = 27
end
inherited ToolButton8: TToolButton [11]
- Left = 150
+ Left = 133
Top = 27
- ExplicitLeft = 150
+ ExplicitLeft = 133
ExplicitTop = 27
end
inherited ToolButton12: TToolButton [12]
- Left = 233
+ Left = 216
Top = 27
- Wrap = False
- ExplicitLeft = 233
+ ExplicitLeft = 216
ExplicitTop = 27
ExplicitHeight = 22
end
inherited ToolButton9: TToolButton [13]
- Left = 241
+ Left = 224
Top = 27
- ExplicitLeft = 241
+ ExplicitLeft = 224
ExplicitTop = 27
end
inherited ToolButton10: TToolButton [14]
- Left = 386
+ Left = 369
Top = 27
- ExplicitLeft = 386
+ ExplicitLeft = 369
ExplicitTop = 27
end
inherited ToolButton11: TToolButton [15]
- Left = 511
+ Left = 494
Top = 27
- ExplicitLeft = 511
+ ExplicitLeft = 494
ExplicitTop = 27
end
end
@@ -309,6 +311,10 @@ inherited fEditorAlbaranProveedor: TfEditorAlbaranProveedor
object pagInicidencias: TTabSheet
Caption = 'Incidencias'
ImageIndex = 2
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
inline frViewIncidenciasCli: TfrViewIncidencias
Left = 0
Top = 0
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.pas
index 716fe33..e98bbe8 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.pas
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.pas
@@ -243,15 +243,19 @@ var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
+ FVerObservaciones : Boolean;
+ FVerIncidencias: Boolean;
begin
inherited;
AllItems := False;
FImprimirPrecios := False;
FImprimirRefProveedor := True;
+ FVerObservaciones := True;
+ FVerIncidencias := False;
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
- FController.Preview(FAlbaran, AllItems, FImprimirPrecios, FImprimirRefProveedor);
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias) then
+ FController.Preview(FAlbaran, AllItems, FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias);
end;
procedure TfEditorAlbaranProveedor.OnClienteFinalChanged(Sender: TObject);
@@ -318,15 +322,19 @@ var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
+ FVerObservaciones : Boolean;
+ FVerIncidencias: Boolean;
begin
inherited;
AllItems := False;
FImprimirPrecios := False;
FImprimirRefProveedor := True;
+ FVerObservaciones := True;
+ FVerIncidencias := False;
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
- FController.Preview(FAlbaran, AllItems, FImprimirPrecios, FImprimirRefProveedor);
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias) then
+ FController.Preview(FAlbaran, AllItems, FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias);
end;
procedure TfEditorAlbaranProveedor.RecalcularPortePorUnidad;
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas
index 50f29ee..4cfbd1f 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas
@@ -99,14 +99,18 @@ var
AAlbaranes : IBizAlbaranProveedor;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
+ FVerObservaciones : Boolean;
+ FVerIncidencias : Boolean;
begin
inherited;
FImprimirPrecios := False;
FImprimirRefProveedor := True;
+ FVerObservaciones := True;
+ FVerIncidencias := False;
if ViewGrid.NumSeleccionados = 1 then begin
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias) then
FController.GenerarEmailAlbaran(FAlbaranes, FImprimirPrecios, FImprimirRefProveedor)
end
else begin
@@ -116,7 +120,7 @@ begin
AAlbaranes := (Controller as IAlbaranesProveedorController).ExtraerSeleccionados(Albaranes) as IBizAlbaranProveedor;
if Assigned(AAlbaranes) then begin
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FVerObservaciones, FVerIncidencias) then
if FController.EnviarEmailAlbaranes(AAlbaranes, FImprimirPrecios, FImprimirRefProveedor) then
RefrescarInterno;
end;
@@ -284,12 +288,16 @@ var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
+ FImprimirObservaciones: Boolean;
+ FImprimirIncidencias: Boolean;
begin
AAlbaranes := Nil;
AllItems := False;
FImprimirPrecios := False;
FImprimirRefProveedor := True;
+ FImprimirObservaciones := True;
+ FImprimirIncidencias := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
@@ -317,8 +325,8 @@ begin
if Assigned(AAlbaranes) then
begin
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
- if FController.Print(AAlbaranes, AllItems, FImprimirPrecios, FImprimirRefProveedor) then
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias) then
+ if FController.Print(AAlbaranes, AllItems, FImprimirPrecios, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias) then
RefrescarInterno;
end;
end;
@@ -384,13 +392,16 @@ var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
+ FImprimirObservaciones: Boolean;
+ FImprimirIncidencias: Boolean;
begin
AAlbaranes := Nil;
AllItems := False;
FImprimirPrecios := False;
FImprimirRefProveedor := True;
-
+ FImprimirObservaciones := True;
+ FImprimirIncidencias := False;
if MultiSelect and Assigned(ViewGrid) then
AllItems := (ViewGrid.NumSeleccionados > 1);
@@ -419,8 +430,8 @@ begin
if Assigned(AAlbaranes) then
begin
- if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor) then
- FController.Preview(AAlbaranes, AllItems, FImprimirPrecios, FImprimirRefProveedor);
+ if ElegirOpcionesImpresionAlbaranProveedor(FImprimirPrecios, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias) then
+ FController.Preview(AAlbaranes, AllItems, FImprimirPrecios, FImprimirRefProveedor, FImprimirObservaciones, FImprimirIncidencias);
end;
end;
end;
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.dfm b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.dfm
index b4313f9..035d56a 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.dfm
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.dfm
@@ -4,7 +4,6 @@ inherited fEditorAlbaranesProveedorPreview: TfEditorAlbaranesProveedorPreview
TextHeight = 13
inherited TBXDock: TTBXDock
inherited TBXToolbar1: TTBXToolbar
- ExplicitWidth = 540
object TBXItem58: TTBXItem [1]
Action = actExportarRTF
Images = SmallImages
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.pas
index f33fd72..0947228 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.pas
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedorReport.pas
@@ -19,14 +19,25 @@ type
private
FVerPrecios : Boolean;
FVerRefProveedor : Boolean;
+ FVerObservaciones : Boolean;
+ FVerIncidencias : Boolean;
function GetVerPrecios: Boolean;
function GetVerRefProveedor: Boolean;
+ function GetVerIncidencias: Boolean;
+ function GetVerObservaciones: Boolean;
+
procedure SetVerPrecios(const Value: Boolean);
procedure SetVerRefProveedor(const Value: Boolean);
+ procedure SetObservaciones(const Value: Boolean);
+ procedure SetVerIncidencias(const Value: Boolean);
+
{ Private declarations }
public
property VerPrecios : Boolean read GetVerPrecios write SetVerPrecios;
property VerRefProveedor : Boolean read GetVerRefProveedor write SetVerRefProveedor;
+ property VerObservaciones : Boolean read GetVerObservaciones write SetObservaciones;
+ property VerIncidencias : Boolean read GetVerIncidencias write SetVerIncidencias;
+
end;
@@ -53,6 +64,16 @@ begin
end;
+function TfEditorAlbaranesProveedorPreview.GetVerIncidencias: Boolean;
+begin
+Result := FVerIncidencias;
+end;
+
+function TfEditorAlbaranesProveedorPreview.GetVerObservaciones: Boolean;
+begin
+Result := FVerObservaciones;
+end;
+
function TfEditorAlbaranesProveedorPreview.GetVerPrecios: Boolean;
begin
Result := FVerPrecios;
@@ -63,6 +84,18 @@ begin
Result := FVerRefProveedor;
end;
+procedure TfEditorAlbaranesProveedorPreview.SetObservaciones(
+ const Value: Boolean);
+begin
+ FVerObservaciones := Value;
+end;
+
+procedure TfEditorAlbaranesProveedorPreview.SetVerIncidencias(
+ const Value: Boolean);
+begin
+ FVerIncidencias := Value;
+end;
+
procedure TfEditorAlbaranesProveedorPreview.SetVerPrecios(const Value: Boolean);
begin
FVerPrecios := Value;
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm
index 8bf378d..b69923d 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm
+++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm
@@ -2,57 +2,8 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor
Caption = 'Seleccionar albar'#225'n de proveedor'
ClientWidth = 790
ExplicitWidth = 798
- ExplicitHeight = 538
PixelsPerInch = 96
TextHeight = 13
- object pnlHeader: TPanel
- Left = 0
- Top = 0
- Width = 656
- Height = 64
- Align = alTop
- BevelOuter = bvNone
- Color = clWhite
- Padding.Left = 25
- Padding.Top = 8
- Padding.Right = 25
- Padding.Bottom = 8
- ParentBackground = False
- TabOrder = 5
- object lblTitle: TLabel
- AlignWithMargins = True
- Left = 25
- Top = 8
- Width = 606
- Height = 13
- Margins.Left = 0
- Margins.Top = 0
- Margins.Right = 0
- Margins.Bottom = 8
- Align = alTop
- Caption = 'Seleccione el albar'#225'n de proveedor'
- Font.Charset = DEFAULT_CHARSET
- Font.Color = clWindowText
- Font.Height = -11
- Font.Name = 'Tahoma'
- Font.Style = [fsBold]
- ParentFont = False
- ExplicitWidth = 135
- end
- object lblComments: TLabel
- AlignWithMargins = True
- Left = 50
- Top = 29
- Width = 581
- Height = 27
- Margins.Left = 25
- Margins.Top = 0
- Margins.Right = 0
- Align = alClient
- ExplicitWidth = 3
- ExplicitHeight = 13
- end
- end
inherited JvNavPanelHeader: TJvNavPanelHeader
Width = 790
Visible = False
@@ -63,14 +14,14 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor
end
end
inherited TBXDock: TTBXDock
- Top = 87
+ Top = 91
Width = 790
- ExplicitTop = 87
+ ExplicitTop = 91
ExplicitWidth = 790
inherited tbxMain: TTBXToolbar
Left = 427
ExplicitLeft = 427
- ExplicitWidth = 126
+ ExplicitWidth = 228
inherited TBXItem2: TTBXItem
Visible = False
end
@@ -128,6 +79,54 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor
Width = 790
ExplicitWidth = 790
end
+ object pnlHeader: TPanel [3]
+ Left = 0
+ Top = 27
+ Width = 790
+ Height = 64
+ Align = alTop
+ BevelOuter = bvNone
+ Color = clWhite
+ Padding.Left = 25
+ Padding.Top = 8
+ Padding.Right = 25
+ Padding.Bottom = 8
+ ParentBackground = False
+ TabOrder = 4
+ object lblTitle: TLabel
+ AlignWithMargins = True
+ Left = 25
+ Top = 8
+ Width = 740
+ Height = 13
+ Margins.Left = 0
+ Margins.Top = 0
+ Margins.Right = 0
+ Margins.Bottom = 8
+ Align = alTop
+ Caption = 'Seleccione el albar'#225'n de proveedor'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = [fsBold]
+ ParentFont = False
+ ExplicitWidth = 198
+ end
+ object lblComments: TLabel
+ AlignWithMargins = True
+ Left = 50
+ Top = 29
+ Width = 715
+ Height = 24
+ Margins.Left = 25
+ Margins.Top = 0
+ Margins.Right = 0
+ Align = alClient
+ ExplicitWidth = 3
+ ExplicitHeight = 13
+ end
+ end
inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4]
Left = 0
Top = 449
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uViewAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uViewAlbaranesProveedor.dfm
index fdaa610..2fdd710 100644
--- a/Source/Modulos/Albaranes de proveedor/Views/uViewAlbaranesProveedor.dfm
+++ b/Source/Modulos/Albaranes de proveedor/Views/uViewAlbaranesProveedor.dfm
@@ -37,10 +37,6 @@ inherited frViewAlbaranesProveedor: TfrViewAlbaranesProveedor
end>
DataController.OnCompare = cxGridViewDataControllerCompare
OptionsView.GroupFooters = gfAlwaysVisible
- inherited cxGridViewICONO: TcxGridDBColumn
- Visible = False
- VisibleForCustomization = False
- end
object cxGridViewNUM_COPIAS: TcxGridDBColumn
DataBinding.FieldName = 'NUM_COPIAS'
MinWidth = 30
@@ -213,24 +209,22 @@ inherited frViewAlbaranesProveedor: TfrViewAlbaranesProveedor
Width = 188
end
inherited edtFechaFinFiltro: TcxDateEdit
- Left = 210
+ Left = 229
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitLeft = 210
+ ExplicitLeft = 229
ExplicitWidth = 294
Width = 294
end
inherited eLista: TcxComboBox
- Left = 447
+ Left = 487
Style.LookAndFeel.SkinName = ''
StyleDisabled.LookAndFeel.SkinName = ''
StyleFocused.LookAndFeel.SkinName = ''
StyleHot.LookAndFeel.SkinName = ''
- ExplicitLeft = 447
- ExplicitWidth = 215
- Width = 215
+ ExplicitLeft = 487
end
end
inherited TBXAlignmentPanel1: TTBXAlignmentPanel
@@ -535,6 +529,31 @@ inherited frViewAlbaranesProveedor: TfrViewAlbaranesProveedor
AE426082}
Name = 'PngImage3'
Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000001974455874536F6674776172650041646F626520496D616765526561
+ 647971C9653C000002034944415478DA63FCFFFF3FC394C53BFE33900172623D
+ 1819610600394469FAF3F71FC3EF3F7F19ACFDF319CEED98866A806DD17E14C5
+ 87FB1CC134B2F8AE761B86B9ABF632CC5BBA09D3007CE0D7EFBF609B4178C986
+ 83D80D40770136B0AED69461E59623B80D80391B04FE01E5FEFCF907B7D9B7FE
+ 04C3AA4A6386B53B8EE13700E692BD9D760CCEE587E03607359F66585A6AC0B0
+ 69CF49FC06C06CFE7CFB30C3CBC5B1F87CE48261C0C15E0706FBE20360D999EC
+ 710C5CD2D60C3C37FF333C0DCF66D0B7B1038B7F7D709FE14E4B3CC385339718
+ 300C00391BE6E7676D6A0C5C6FCD19642EEF60782BABC1F035CF9581E3D53B86
+ A78DEB186E73A9327C927A88302023CA8DC1B1F4208AFB402E502EB9C0702FC5
+ 9A81E3F22D86DF02620CAF9EBF6360B6546538EBD7C3C0BC230D6140729833D8
+ 5658A887B49E011BA0D5FE98E1C1A54686CF213D0C1FDE7D61F8CCC8C2603A2D
+ 8861E58F4406E6EDA90803E2821C50A22CB2F33CD800F9D28B0C379AA2197EAF
+ 3BC8F0919191E1D3BB9F0C2C527C0C4FF36730301F29461810E587F03BDCA019
+ 460CA2FFBC18DEEDDCC870F7CD6706E33667861F4F5E331CE9BFC0F0894B8A81
+ C1E83BC280502F6B86D5DB8EA28481D3B55486FFFBFE313CB8FE8CE1715C25C3
+ 1F73482C307CFEC4C0BC643A03E39B3308034009031D68F3BE61B07DB28781E9
+ E36F86DF060298F2BFBE4700003F4A71F77ECF59220000000049454E44AE4260
+ 82}
+ Name = 'PngImage4'
+ Background = clWindow
end>
Bitmap = {}
end
diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dpk b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk
index da7dc11..19b4724 100644
--- a/Source/Modulos/Contactos/Controller/Contactos_controller.dpk
+++ b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk
@@ -87,6 +87,8 @@ contains
uAgentesController in 'uAgentesController.pas',
uIEditorAgente in 'View\uIEditorAgente.pas',
uIEditorAgentes in 'View\uIEditorAgentes.pas',
- uIEditorElegirAgentes in 'View\uIEditorElegirAgentes.pas';
+ uIEditorElegirAgentes in 'View\uIEditorElegirAgentes.pas',
+ uTiposClienteController in 'uTiposClienteController.pas',
+ uIEditorTiposCliente in 'View\uIEditorTiposCliente.pas';
end.
diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dproj b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj
index 00806ec..bef8dc0 100644
--- a/Source/Modulos/Contactos/Controller/Contactos_controller.dproj
+++ b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj
@@ -43,6 +43,18 @@
Package
FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
JCL Debug IDE extension
JCL Project Analyzer
JCL Open and Save IDE dialogs with favorite folders
@@ -66,6 +78,7 @@
+
@@ -109,6 +122,7 @@
+
diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.identcache b/Source/Modulos/Contactos/Controller/Contactos_controller.identcache
index 16d6d7e..8ff2c49 100644
Binary files a/Source/Modulos/Contactos/Controller/Contactos_controller.identcache and b/Source/Modulos/Contactos/Controller/Contactos_controller.identcache differ
diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorTiposCliente.pas b/Source/Modulos/Contactos/Controller/View/uIEditorTiposCliente.pas
new file mode 100644
index 0000000..0d9d36f
--- /dev/null
+++ b/Source/Modulos/Contactos/Controller/View/uIEditorTiposCliente.pas
@@ -0,0 +1,26 @@
+unit uIEditorTiposCliente;
+
+interface
+
+uses
+ uEditorDBBase, uBizTiposCliente, uTiposClienteController, uGUIBase;
+
+type
+ IEditorTiposCliente = interface(ICustomEditor)
+ ['{144F2713-B4CC-47EA-B3F0-40E1674F93EF}']
+ function ShowModal : Integer;
+ procedure Show;
+
+ function GetTiposCliente: IBizTipoCliente;
+ procedure SetTiposCliente(const Value: IBizTipoCliente);
+ property TiposCliente: IBizTipoCliente read GetTiposCliente write SetTiposCliente;
+
+ function GetController : ITiposClienteController;
+ procedure SetController (const Value : ITiposClienteController);
+ property Controller : ITiposClienteController read GetController write SetController;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Contactos/Controller/uTiposClienteController.pas b/Source/Modulos/Contactos/Controller/uTiposClienteController.pas
new file mode 100644
index 0000000..6c0a43c
--- /dev/null
+++ b/Source/Modulos/Contactos/Controller/uTiposClienteController.pas
@@ -0,0 +1,219 @@
+unit uTiposClienteController;
+
+interface
+
+
+uses
+ Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
+ uIDataModuleClientes, uBizTiposCliente;
+
+type
+ ITiposClienteController = interface(IControllerBase)
+ ['{2A0278F1-6C90-4040-84A7-BB91C5700239}']
+ function BuscarTodos: IBizTipoCliente;
+ procedure VerTodos(ATiposCliente: IBizTipoCliente);
+ procedure Anadir(ATipoCliente : IBizTipoCliente);
+ function Eliminar(ATipoCliente : IBizTipoCliente): Boolean;
+ function Guardar(ATipoCliente : IBizTipoCliente): Boolean;
+ procedure DescartarCambios(ATipoCliente : IBizTipoCliente);
+ function Localizar(ATiposCliente: IBizTipoCliente; ADescripcion:String): Boolean;
+ function DarListaTiposCliente: TStringList;
+ end;
+
+ TTiposClienteController = class(TControllerBase, ITiposClienteController)
+ protected
+ FDataModule : IDataModuleClientes;
+ procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
+ function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
+ function ValidarTipoCliente(ATipoCliente: IBizTipoCliente): Boolean;
+ procedure AsignarDataModule; virtual;
+ public
+ constructor Create; override;
+ destructor Destroy; override;
+
+ function Eliminar(ATipoCliente : IBizTipoCliente): Boolean;
+ function Guardar(ATipoCliente : IBizTipoCliente): Boolean;
+ procedure DescartarCambios(ATipoCliente : IBizTipoCliente); virtual;
+ procedure Anadir(ATipoCliente : IBizTipoCliente);
+ function BuscarTodos: IBizTipoCliente;
+ procedure VerTodos(ATiposCliente: IBizTipoCliente);
+ function Localizar(ATiposCliente: IBizTipoCliente; ADescripcion:String): Boolean;
+ function DarListaTiposCliente: TStringList;
+ end;
+
+implementation
+
+uses
+ cxControls, DB, uEditorRegistryUtils,
+ uIEditorTiposCliente, uDataModuleClientes,
+ uDAInterfaces, uDataTableUtils,
+ uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf;
+
+{ TTiposClienteController }
+
+procedure TTiposClienteController.Anadir(ATipoCliente: IBizTipoCliente);
+begin
+ ATipoCliente.Insert;
+end;
+
+procedure TTiposClienteController.AsignarDataModule;
+begin
+ FDataModule := TDataModuleClientes.Create(Nil);
+end;
+
+function TTiposClienteController.BuscarTodos: IBizTipoCliente;
+begin
+ Result := FDataModule.GetTiposCliente;
+end;
+
+constructor TTiposClienteController.Create;
+begin
+ inherited;
+ AsignarDataModule;
+end;
+
+function TTiposClienteController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
+begin
+ Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
+end;
+
+function TTiposClienteController.DarListaTiposCliente: TStringList;
+var
+ ATiposCliente: IBizTipoCliente;
+begin
+ ATiposCliente := BuscarTodos;
+ ATiposCliente.DataTable.Active := True;
+ Result := TStringList.Create;
+ try
+ with Result do
+ begin
+ ATiposCliente.DataTable.First;
+ while not ATiposCliente.DataTable.EOF do
+ begin
+ Add(ATiposCliente.DESCRIPCION);
+ ATiposCliente.DataTable.Next;
+ end;
+ end;
+ finally
+ ATiposCliente := NIL;
+ end;
+end;
+
+procedure TTiposClienteController.DescartarCambios(ATipoCliente: IBizTipoCliente);
+begin
+ if not Assigned(ATipoCliente) then
+ raise Exception.Create ('GrupoCliente no asignado');
+
+ ShowHourglassCursor;
+ try
+ if (ATipoCliente.State in dsEditModes) then
+ ATipoCliente.Cancel;
+
+ ATipoCliente.DataTable.CancelUpdates;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+destructor TTiposClienteController.Destroy;
+begin
+ FDataModule := Nil;
+ inherited;
+end;
+
+function TTiposClienteController.ValidarTipoCliente(ATipoCliente: IBizTipoCliente): Boolean;
+begin
+ if not Assigned(ATipoCliente) then
+ raise Exception.Create ('TipoCliente no asignada');
+
+ if (ATipoCliente.DataTable.State in dsEditModes) then
+ ATipoCliente.DataTable.Post;
+
+ if Length(ATipoCliente.DESCRIPCION) = 0 then
+ raise Exception.Create('Debe indicar al menos la descripción de este tipo.');
+
+ Result := True;
+end;
+
+procedure TTiposClienteController.VerTodos(ATiposCliente: IBizTipoCliente);
+var
+ AEditor : IEditorTiposCliente;
+begin
+ AEditor := NIL;
+
+ CreateEditor('EditorTiposCliente', IEditorTiposCliente, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ AEditor.TiposCliente := ATiposCliente;
+ AEditor.ShowModal;
+ finally
+ AEditor.Release;
+ AEditor := NIL;
+ end;
+end;
+
+function TTiposClienteController.Eliminar(ATipoCliente: IBizTipoCliente): Boolean;
+begin
+ if not Assigned(ATipoCliente) then
+ raise Exception.Create ('TipoCliente no asignada');
+
+ ShowHourglassCursor;
+ try
+ if (ATipoCliente.State in dsEditModes) then
+ ATipoCliente.Cancel;
+
+ ATipoCliente.Delete;
+ ATipoCliente.DataTable.ApplyUpdates;
+ HideHourglassCursor;
+ Result := True;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+procedure TTiposClienteController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
+begin
+ inherited;
+//
+end;
+
+function TTiposClienteController.Guardar(ATipoCliente: IBizTipoCliente): Boolean;
+begin
+ Result := False;
+
+ if ValidarTipoCliente(ATipoCliente) then
+ begin
+ ShowHourglassCursor;
+ try
+ if (ATipoCliente.DataTable.State in dsEditModes) then
+ ATipoCliente.DataTable.Post;
+
+ ATipoCliente.DataTable.ApplyUpdates;
+
+ Result := True;
+ finally
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+function TTiposClienteController.Localizar(ATiposCliente: IBizTipoCliente; ADescripcion: String): Boolean;
+begin
+ Result := True;
+ ShowHourglassCursor;
+ try
+ with ATiposCliente.DataTable do
+ begin
+ DisableControls;
+ First;
+ if not Locate(fld_TiposClienteDESCRIPCION, ADescripcion, []) then
+ Result := False;
+ EnableControls;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm
index f02f3c4..c74b2cd 100644
--- a/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm
+++ b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm
@@ -23,6 +23,9 @@ inherited DataModuleClientes: TDataModuleClientes
DataSet = tbl_PersonalContacto.Dataset
Left = 440
end
+ inherited ds_ListaAnosObjetivosAlb: TDADataSource
+ DataSet = tbl_ListaAnosObjetivosAlb.Dataset
+ end
object tbl_Clientes: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
@@ -278,6 +281,11 @@ inherited DataModuleClientes: TDataModuleClientes
DataType = datSmallInt
DisplayLabel = #191'Felicitaci'#243'n?'
DictionaryEntry = 'Clientes_FELICITACION'
+ end
+ item
+ Name = 'TIPO_CLIENTE'
+ DataType = datString
+ Size = 255
end>
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
@@ -463,4 +471,36 @@ inherited DataModuleClientes: TDataModuleClientes
Left = 448
Top = 336
end
+ object tbl_TiposCliente: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_CLIENTES_TIPOS_ID'
+ Required = True
+ DictionaryEntry = 'TiposCliente_ID'
+ InPrimaryKey = True
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'TiposCliente_DESCRIPCION'
+ DictionaryEntry = 'TiposCliente_DESCRIPCION'
+ end>
+ Params = <>
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_Contactos
+ LogicalName = 'TiposCliente'
+ IndexDefs = <>
+ Left = 560
+ Top = 80
+ end
+ object ds_TiposCliente: TDADataSource
+ DataSet = tbl_TiposCliente.Dataset
+ DataTable = tbl_TiposCliente
+ Left = 560
+ Top = 32
+ end
end
diff --git a/Source/Modulos/Contactos/Data/uDataModuleClientes.pas b/Source/Modulos/Contactos/Data/uDataModuleClientes.pas
index bb00f31..84db79b 100644
--- a/Source/Modulos/Contactos/Data/uDataModuleClientes.pas
+++ b/Source/Modulos/Contactos/Data/uDataModuleClientes.pas
@@ -8,7 +8,7 @@ uses
uDACDSDataTable, uDABINAdapter, uRORemoteService,
uROClient, uROBinMessage, uROWinInetHttpChannel,
uBizClientesDescuentos, uBizClientesDescuentosArt,
- uBizGruposCliente, uBizContactos, uDataModuleContactos,
+ uBizGruposCliente, uBizTiposCliente, uBizContactos, uDataModuleContactos,
uIDataModuleClientes, uDADesigntimeCall, uDARemoteDataAdapter,
uDADataStreamer, uRODynamicRequest, uDAInterfaces, uDAMemDataTable,
uDABin2DataStreamer, uControllerBase, uBizContactosDatosBancarios,
@@ -24,6 +24,8 @@ type
ds_GruposCliente: TDADataSource;
tbl_ClientesDescuentosArticulos: TDAMemDataTable;
ds_ClientesDescuentosArticulos: TDADataSource;
+ tbl_TiposCliente: TDAMemDataTable;
+ ds_TiposCliente: TDADataSource;
protected
function _GetDescuentos: IBizClienteDescuentos;
function _GetDescuentosArticulos: IBizClienteDescuentosArticulos;
@@ -34,6 +36,7 @@ type
function GetItemsTiendaWeb : IBizCliente;
function GetItemsFelicitacion : IBizCliente;
function GetGruposCliente : IBizGrupoCliente;
+ function GetTiposCliente : IBizTipoCliente;
end;
implementation
@@ -151,6 +154,20 @@ begin
end;
end;
+function TDataModuleClientes.GetTiposCliente: IBizTipoCliente;
+var
+ ATipoCliente : TDAMemDataTable;
+begin
+ ShowHourglassCursor;
+ try
+ ATipoCliente := CloneDataTable(tbl_TiposCliente);
+ ATipoCliente.BusinessRulesID := BIZ_CLIENT_TIPOSCLIENTE;
+ Result := (ATipoCliente as IBizTipoCliente);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
function TDataModuleClientes.NewItem: IBizCliente;
begin
Result := GetItem(ID_NULO)
diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dpk b/Source/Modulos/Contactos/Model/Contactos_model.dpk
index d5dd4ed..aa25b09 100644
--- a/Source/Modulos/Contactos/Model/Contactos_model.dpk
+++ b/Source/Modulos/Contactos/Model/Contactos_model.dpk
@@ -59,6 +59,7 @@ contains
uBizAgentesComisiones in 'uBizAgentesComisiones.pas',
uBizClientesDescuentos in 'uBizClientesDescuentos.pas',
uBizAgentesObjetivosFacturas in 'uBizAgentesObjetivosFacturas.pas',
- uBizAgentesObjetivosAlbaranes in 'uBizAgentesObjetivosAlbaranes.pas';
+ uBizAgentesObjetivosAlbaranes in 'uBizAgentesObjetivosAlbaranes.pas',
+ uBizTiposCliente in 'uBizTiposCliente.pas';
end.
diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dproj b/Source/Modulos/Contactos/Model/Contactos_model.dproj
index 2c9025c..394f782 100644
--- a/Source/Modulos/Contactos/Model/Contactos_model.dproj
+++ b/Source/Modulos/Contactos/Model/Contactos_model.dproj
@@ -80,6 +80,7 @@
+
diff --git a/Source/Modulos/Contactos/Model/Contactos_model.identcache b/Source/Modulos/Contactos/Model/Contactos_model.identcache
index 58f81fc..6c778be 100644
Binary files a/Source/Modulos/Contactos/Model/Contactos_model.identcache and b/Source/Modulos/Contactos/Model/Contactos_model.identcache differ
diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas
index 9fd5cf7..b262f41 100644
--- a/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas
+++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas
@@ -3,7 +3,8 @@ unit uIDataModuleClientes;
interface
uses
- uBizContactos, uIDataModuleContactos, uBizGruposCliente, uBizContactosDatosBancarios;
+ uBizContactos, uIDataModuleContactos, uBizGruposCliente,
+ uBizTiposCliente, uBizContactosDatosBancarios;
type
IDataModuleClientes = interface(IDataModuleContactos)
@@ -17,6 +18,7 @@ type
function GetItemsTiendaWeb : IBizCliente;
function GetItemsFelicitacion : IBizCliente;
function GetGruposCliente : IBizGrupoCliente;
+ function GetTiposCliente : IBizTipoCliente;
end;
diff --git a/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas b/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas
index 2ed2f22..927ff94 100644
--- a/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas
+++ b/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas
@@ -9,27 +9,28 @@ 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_Contactos = '{291D5023-2485-4738-BA4B-8CFD1087564D}';
- RID_GruposCliente = '{3202886D-ABFE-4D93-8B7C-DCC767B8E13E}';
- RID_DatosBancarios = '{48378F5C-39D8-4F3E-AF60-30E3B15C1BD6}';
- RID_Clientes = '{6BB9F834-2CD8-4CE1-AEF2-2F632139E4E6}';
- RID_Proveedores = '{64948969-32BB-4EE9-B51E-798A988B6BB9}';
- RID_Empleados = '{EC0F7AAD-8090-489F-A5C7-004A80A7682A}';
- RID_DireccionesContacto = '{497F22D7-6679-4BF4-B909-4F0DD68F1B0D}';
- RID_ClientesDescuentos = '{DD4D5290-DC73-45F2-AA7D-FB799D9AE6AE}';
- RID_GruposProveedor = '{3C14F4A5-17DB-44DC-8E26-0AD2F3231245}';
- RID_GruposEmpleado = '{D7511C4F-EE3D-4C78-B5EF-A3935874DD92}';
- RID_Contactos_Refresh = '{76C8D865-64CD-4DD5-8A80-F82AA6683E27}';
- RID_ContratosEmpleados = '{6DB2FA18-7E29-43FF-8D71-67A5481B8E84}';
- RID_DescripcionesProveedores = '{D3734658-7727-47E1-9C43-AB4D4BD58EF4}';
- RID_PersonalContacto = '{B3F92D0E-5DCC-4723-BDC0-E2045C0B4F74}';
- RID_Agentes_Comisiones = '{716B55E8-F461-4131-A90A-3E5291CF1319}';
- RID_ListaAnosObjetivosAlb = '{492D6536-8A33-44D0-86B9-A4512BD54E62}';
- RID_Agentes = '{271490F9-AFF6-4904-9F85-097B4CB0AAA2}';
- RID_ClientesDescuentosArticulos = '{20759DA3-0B2D-4A5D-852F-6DB6725E7D19}';
- RID_Agentes_Objetivos_albaranes = '{DFE878FE-9DF3-46C4-BFF1-90CF546A31EF}';
- RID_Agentes_Objetivos_facturas = '{73C0859D-9EFA-45A8-AA4C-F8F6572C985B}';
- RID_ListaAnosObjetivosFac = '{5A1B02F6-EA0E-4B3D-8067-DAAA0FE5178D}';
+ RID_Contactos = '{FC98FC9D-2174-484A-84DB-29A5FF522A49}';
+ RID_GruposCliente = '{FAE5A018-A73D-4F40-BC2B-D43431C80929}';
+ RID_DatosBancarios = '{204762D1-0752-48E4-8D13-73A6E478ABC2}';
+ RID_Clientes = '{9BE4C879-165C-4D3F-9BBA-526B77860B3F}';
+ RID_Proveedores = '{7B7762CE-6B42-4B50-A194-78BE5FFB71E5}';
+ RID_Empleados = '{0B610962-07D1-4C7D-BC7B-65AC8824DDC4}';
+ RID_DireccionesContacto = '{68C042FD-68F6-440A-B10F-0314491B1100}';
+ RID_ClientesDescuentos = '{845D6324-B528-4907-923D-7A1E0517F59A}';
+ RID_GruposProveedor = '{B5573F10-E1CB-400B-8595-F5E7E6812CAE}';
+ RID_GruposEmpleado = '{6EF2382C-65F9-4429-8EFE-7BBE4F35FEED}';
+ RID_Contactos_Refresh = '{5A18AE89-0712-468F-A606-94C4B8BBF4DE}';
+ RID_ContratosEmpleados = '{D4DDC2BA-74CF-4EBC-AEF9-476BDE3FDFE7}';
+ RID_DescripcionesProveedores = '{8F5E1C48-6D57-4DBB-9621-EEEF38163532}';
+ RID_PersonalContacto = '{8CBD048B-EEF4-46F3-A027-B66E39125D87}';
+ RID_Agentes_Comisiones = '{3FEA025A-89BF-4B2F-84DB-29BECC676846}';
+ RID_ListaAnosObjetivosAlb = '{67328F62-088C-4B54-A4EA-256CEAEE2D1A}';
+ RID_Agentes = '{8F775E20-FF8D-4966-94D4-CAA4B3EDE612}';
+ RID_ClientesDescuentosArticulos = '{5A7F7F18-FFC7-4BBD-9632-0EF2C3A855C9}';
+ RID_Agentes_Objetivos_albaranes = '{6C51A34C-790F-477E-8F90-341B0FE11746}';
+ RID_Agentes_Objetivos_facturas = '{F8E77A40-78F2-44F5-BA10-4DA0BF8FE0CE}';
+ RID_ListaAnosObjetivosFac = '{4A823B2D-CD57-404E-A7DD-587779C21C84}';
+ RID_TiposCliente = '{E6135AF1-7B14-4726-979D-7DDC74BFB4D2}';
{ Data table names }
nme_Contactos = 'Contactos';
@@ -53,6 +54,7 @@ const
nme_Agentes_Objetivos_albaranes = 'Agentes_Objetivos_albaranes';
nme_Agentes_Objetivos_facturas = 'Agentes_Objetivos_facturas';
nme_ListaAnosObjetivosFac = 'ListaAnosObjetivosFac';
+ nme_TiposCliente = 'TiposCliente';
{ Contactos fields }
fld_ContactosID = 'ID';
@@ -177,6 +179,7 @@ const
fld_ClientesCODIGO_ASIGNADO = 'CODIGO_ASIGNADO';
fld_ClientesDESCUENTO = 'DESCUENTO';
fld_ClientesFELICITACION = 'FELICITACION';
+ fld_ClientesTIPO_CLIENTE = 'TIPO_CLIENTE';
{ Clientes field indexes }
idx_ClientesID = 0;
@@ -221,6 +224,7 @@ const
idx_ClientesCODIGO_ASIGNADO = 39;
idx_ClientesDESCUENTO = 40;
idx_ClientesFELICITACION = 41;
+ idx_ClientesTIPO_CLIENTE = 42;
{ Proveedores fields }
fld_ProveedoresID = 'ID';
@@ -664,10 +668,18 @@ const
{ ListaAnosObjetivosFac field indexes }
idx_ListaAnosObjetivosFacANO = 0;
+ { TiposCliente fields }
+ fld_TiposClienteID = 'ID';
+ fld_TiposClienteDESCRIPCION = 'DESCRIPCION';
+
+ { TiposCliente field indexes }
+ idx_TiposClienteID = 0;
+ idx_TiposClienteDESCRIPCION = 1;
+
type
{ IContactos }
IContactos = interface(IDAStronglyTypedDataTable)
- ['{1CBC2D1C-3449-4C91-B2C6-6AF07E1EABCB}']
+ ['{DFDDB687-2921-467A-BB23-198E5B922F84}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -966,7 +978,7 @@ type
{ IGruposCliente }
IGruposCliente = interface(IDAStronglyTypedDataTable)
- ['{B9DBD6F1-AE60-44F7-8E0B-A6093CD02F7E}']
+ ['{1AE838BB-826E-4CA2-AAA1-D6049D08A77B}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -1013,7 +1025,7 @@ type
{ IDatosBancarios }
IDatosBancarios = interface(IDAStronglyTypedDataTable)
- ['{B6A49401-06FA-450A-B833-31DB18866E07}']
+ ['{AEB463FE-AD2E-442F-BAAB-D8AD664AC39D}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -1144,7 +1156,7 @@ type
{ IClientes }
IClientes = interface(IDAStronglyTypedDataTable)
- ['{1B30B5ED-D974-4FF4-ACEF-83E365A1D686}']
+ ['{4F9EC316-7AC6-4C71-968A-5BAA61CAFCA4}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -1313,6 +1325,10 @@ type
procedure SetFELICITACIONValue(const aValue: SmallInt);
function GetFELICITACIONIsNull: Boolean;
procedure SetFELICITACIONIsNull(const aValue: Boolean);
+ function GetTIPO_CLIENTEValue: String;
+ procedure SetTIPO_CLIENTEValue(const aValue: String);
+ function GetTIPO_CLIENTEIsNull: Boolean;
+ procedure SetTIPO_CLIENTEIsNull(const aValue: Boolean);
{ Properties }
@@ -1400,6 +1416,8 @@ type
property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
property FELICITACION: SmallInt read GetFELICITACIONValue write SetFELICITACIONValue;
property FELICITACIONIsNull: Boolean read GetFELICITACIONIsNull write SetFELICITACIONIsNull;
+ property TIPO_CLIENTE: String read GetTIPO_CLIENTEValue write SetTIPO_CLIENTEValue;
+ property TIPO_CLIENTEIsNull: Boolean read GetTIPO_CLIENTEIsNull write SetTIPO_CLIENTEIsNull;
end;
{ TClientesDataTableRules }
@@ -1576,6 +1594,10 @@ type
procedure SetFELICITACIONValue(const aValue: SmallInt); virtual;
function GetFELICITACIONIsNull: Boolean; virtual;
procedure SetFELICITACIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_CLIENTEValue: String; virtual;
+ procedure SetTIPO_CLIENTEValue(const aValue: String); virtual;
+ function GetTIPO_CLIENTEIsNull: Boolean; virtual;
+ procedure SetTIPO_CLIENTEIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID: Integer read GetIDValue write SetIDValue;
@@ -1662,6 +1684,8 @@ type
property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
property FELICITACION: SmallInt read GetFELICITACIONValue write SetFELICITACIONValue;
property FELICITACIONIsNull: Boolean read GetFELICITACIONIsNull write SetFELICITACIONIsNull;
+ property TIPO_CLIENTE: String read GetTIPO_CLIENTEValue write SetTIPO_CLIENTEValue;
+ property TIPO_CLIENTEIsNull: Boolean read GetTIPO_CLIENTEIsNull write SetTIPO_CLIENTEIsNull;
public
constructor Create(aDataTable: TDADataTable); override;
@@ -1671,7 +1695,7 @@ type
{ IProveedores }
IProveedores = interface(IDAStronglyTypedDataTable)
- ['{36A8200A-5E50-497C-A0F2-BAFAD4B5A2C9}']
+ ['{62DCC209-287A-4380-8D4B-83913824D08F}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2162,7 +2186,7 @@ type
{ IEmpleados }
IEmpleados = interface(IDAStronglyTypedDataTable)
- ['{DE26478A-6B56-40DD-9CFF-176D1B41AFE0}']
+ ['{A5050F92-4FC8-4B4F-BCFF-7BBA2CB4EDEE}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2593,7 +2617,7 @@ type
{ IDireccionesContacto }
IDireccionesContacto = interface(IDAStronglyTypedDataTable)
- ['{2A82A155-3A4B-44BF-9A1B-C197A50F39B1}']
+ ['{907598A0-83B2-4A54-A19D-82FF0656D8F8}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2808,7 +2832,7 @@ type
{ IClientesDescuentos }
IClientesDescuentos = interface(IDAStronglyTypedDataTable)
- ['{DCD380B7-39A2-446F-9ACF-53057F43F28C}']
+ ['{C7856FE7-0714-4949-B67D-882FFB8DC44E}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2891,7 +2915,7 @@ type
{ IGruposProveedor }
IGruposProveedor = interface(IDAStronglyTypedDataTable)
- ['{EC66CD85-3FE0-4DE0-A543-8FA1DBCF33E0}']
+ ['{3B8825BB-FF71-47C9-A232-E0931855228A}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2938,7 +2962,7 @@ type
{ IGruposEmpleado }
IGruposEmpleado = interface(IDAStronglyTypedDataTable)
- ['{37D061A4-7D65-41B8-9DAF-33B393EE50E5}']
+ ['{F6D330DB-5908-4E6C-9063-62CDA0A13EF7}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -2985,7 +3009,7 @@ type
{ IContactos_Refresh }
IContactos_Refresh = interface(IDAStronglyTypedDataTable)
- ['{47A29D73-F2AF-4DA5-BA66-FC09A1FA7DA6}']
+ ['{DA718CA5-E280-45E1-A143-299A9CCCE433}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -3260,7 +3284,7 @@ type
{ IContratosEmpleados }
IContratosEmpleados = interface(IDAStronglyTypedDataTable)
- ['{01E65909-DD8B-44B1-AB39-73F2047DC2FF}']
+ ['{137AAE38-80D8-469E-AD22-9627330E7B2F}']
{ Property getters and setters }
function GetCONTRATOValue: String;
procedure SetCONTRATOValue(const aValue: String);
@@ -3295,7 +3319,7 @@ type
{ IDescripcionesProveedores }
IDescripcionesProveedores = interface(IDAStronglyTypedDataTable)
- ['{EF6069F3-8A7F-49A7-9AA6-FCB4FD7BC6F2}']
+ ['{8172171A-10E0-409A-8E0B-D5D9365ABB23}']
{ Property getters and setters }
function GetDESCRIPCION_PROVEEDORValue: String;
procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String);
@@ -3330,7 +3354,7 @@ type
{ IPersonalContacto }
IPersonalContacto = interface(IDAStronglyTypedDataTable)
- ['{24490A3B-6DEC-4546-8433-2B73B85E5B93}']
+ ['{02E89BFD-3160-4164-BF61-221FF595CB3A}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -3473,7 +3497,7 @@ type
{ IAgentes_Comisiones }
IAgentes_Comisiones = interface(IDAStronglyTypedDataTable)
- ['{191150F9-E106-4E8A-8124-32860D4F8894}']
+ ['{B2B154B4-F8DA-46FB-A06F-5000849254F6}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -3556,7 +3580,7 @@ type
{ IListaAnosObjetivosAlb }
IListaAnosObjetivosAlb = interface(IDAStronglyTypedDataTable)
- ['{B8BF52B7-476E-410A-9720-8B30EB132FCD}']
+ ['{53124C57-F091-4204-AD95-FB2195C92120}']
{ Property getters and setters }
function GetANOValue: SmallInt;
procedure SetANOValue(const aValue: SmallInt);
@@ -3591,7 +3615,7 @@ type
{ IAgentes }
IAgentes = interface(IDAStronglyTypedDataTable)
- ['{FD432FBB-8219-433D-924F-22901565FFF3}']
+ ['{535CB005-A65B-46CB-9265-8D882CF9BC29}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -3926,7 +3950,7 @@ type
{ IClientesDescuentosArticulos }
IClientesDescuentosArticulos = interface(IDAStronglyTypedDataTable)
- ['{007089E4-2A88-4E59-9F39-DBA5E0DD0C57}']
+ ['{BF0D2DCF-FE11-4DB2-8860-5234FD2EA0B4}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -4057,7 +4081,7 @@ type
{ IAgentes_Objetivos_albaranes }
IAgentes_Objetivos_albaranes = interface(IDAStronglyTypedDataTable)
- ['{93BAC2FE-520D-454C-95D2-15A72D48968A}']
+ ['{A4F09DDA-8A26-4DA2-925F-EE02B2E6D290}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -4164,7 +4188,7 @@ type
{ IAgentes_Objetivos_facturas }
IAgentes_Objetivos_facturas = interface(IDAStronglyTypedDataTable)
- ['{B28387E5-80DE-4340-9114-CC7AE7ECF05A}']
+ ['{F0B134F6-AE87-4835-B443-997AD16988DB}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -4271,7 +4295,7 @@ type
{ IListaAnosObjetivosFac }
IListaAnosObjetivosFac = interface(IDAStronglyTypedDataTable)
- ['{8E1FC0F1-1AFF-47F6-8FCB-619723CC5DA6}']
+ ['{E2EB26D2-2409-4320-AF04-A0A4834E1D84}']
{ Property getters and setters }
function GetANOValue: SmallInt;
procedure SetANOValue(const aValue: SmallInt);
@@ -4304,6 +4328,53 @@ type
end;
+ { ITiposCliente }
+ ITiposCliente = interface(IDAStronglyTypedDataTable)
+ ['{C44A4DE6-41B4-436D-9CA7-7165BD25595A}']
+ { Property getters and setters }
+ function GetIDValue: Integer;
+ procedure SetIDValue(const aValue: Integer);
+ function GetIDIsNull: Boolean;
+ procedure SetIDIsNull(const aValue: Boolean);
+ function GetDESCRIPCIONValue: String;
+ procedure SetDESCRIPCIONValue(const aValue: String);
+ function GetDESCRIPCIONIsNull: Boolean;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ end;
+
+ { TTiposClienteDataTableRules }
+ TTiposClienteDataTableRules = class(TIntfObjectDADataTableRules, ITiposCliente)
+ private
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ function GetIDIsNull: Boolean; virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetDESCRIPCIONValue: String; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
implementation
uses Variants, uROBinaryHelpers;
@@ -5965,6 +6036,27 @@ begin
DataTable.Fields[idx_ClientesFELICITACION].AsVariant := Null;
end;
+function TClientesDataTableRules.GetTIPO_CLIENTEValue: String;
+begin
+ result := DataTable.Fields[idx_ClientesTIPO_CLIENTE].AsString;
+end;
+
+procedure TClientesDataTableRules.SetTIPO_CLIENTEValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ClientesTIPO_CLIENTE].AsString := aValue;
+end;
+
+function TClientesDataTableRules.GetTIPO_CLIENTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ClientesTIPO_CLIENTE].IsNull;
+end;
+
+procedure TClientesDataTableRules.SetTIPO_CLIENTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ClientesTIPO_CLIENTE].AsVariant := Null;
+end;
+
{ TProveedoresDataTableRules }
constructor TProveedoresDataTableRules.Create(aDataTable: TDADataTable);
@@ -10152,6 +10244,60 @@ begin
end;
+{ TTiposClienteDataTableRules }
+constructor TTiposClienteDataTableRules.Create(aDataTable: TDADataTable);
+begin
+ inherited;
+end;
+
+destructor TTiposClienteDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+function TTiposClienteDataTableRules.GetIDValue: Integer;
+begin
+ result := DataTable.Fields[idx_TiposClienteID].AsInteger;
+end;
+
+procedure TTiposClienteDataTableRules.SetIDValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_TiposClienteID].AsInteger := aValue;
+end;
+
+function TTiposClienteDataTableRules.GetIDIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_TiposClienteID].IsNull;
+end;
+
+procedure TTiposClienteDataTableRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_TiposClienteID].AsVariant := Null;
+end;
+
+function TTiposClienteDataTableRules.GetDESCRIPCIONValue: String;
+begin
+ result := DataTable.Fields[idx_TiposClienteDESCRIPCION].AsString;
+end;
+
+procedure TTiposClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ DataTable.Fields[idx_TiposClienteDESCRIPCION].AsString := aValue;
+end;
+
+function TTiposClienteDataTableRules.GetDESCRIPCIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_TiposClienteDESCRIPCION].IsNull;
+end;
+
+procedure TTiposClienteDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_TiposClienteDESCRIPCION].AsVariant := Null;
+end;
+
+
initialization
RegisterDataTableRules(RID_Contactos, TContactosDataTableRules);
RegisterDataTableRules(RID_GruposCliente, TGruposClienteDataTableRules);
@@ -10174,5 +10320,6 @@ initialization
RegisterDataTableRules(RID_Agentes_Objetivos_albaranes, TAgentes_Objetivos_albaranesDataTableRules);
RegisterDataTableRules(RID_Agentes_Objetivos_facturas, TAgentes_Objetivos_facturasDataTableRules);
RegisterDataTableRules(RID_ListaAnosObjetivosFac, TListaAnosObjetivosFacDataTableRules);
+ RegisterDataTableRules(RID_TiposCliente, TTiposClienteDataTableRules);
end.
diff --git a/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas b/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas
index 842745c..70ad408 100644
--- a/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas
+++ b/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas
@@ -9,32 +9,33 @@ 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_ContactosDelta = '{924489BD-4BF1-490A-80E1-292384CDE36B}';
- RID_GruposClienteDelta = '{00B6FC09-D8A1-4AF6-B6DF-2BCEF361091C}';
- RID_DatosBancariosDelta = '{359B215D-847C-407A-9553-F0E7AE268DAE}';
- RID_ClientesDelta = '{71CCE505-5A15-4B1E-A807-8DA7DFE6C36C}';
- RID_ProveedoresDelta = '{F3854348-13E9-465B-9E6E-67EC43F26D2E}';
- RID_EmpleadosDelta = '{8A94BFD2-C61E-46A8-9620-CF7E1C97D7B5}';
- RID_DireccionesContactoDelta = '{C480F508-E137-4093-8BF2-DF49EF2AB3DE}';
- RID_ClientesDescuentosDelta = '{B4C0F049-8B81-4EFB-9E8E-592A72FE25A6}';
- RID_GruposProveedorDelta = '{129AA285-FCCC-42C8-B31E-288EDB9500DA}';
- RID_GruposEmpleadoDelta = '{F6F9AD04-610E-4F13-AC1F-7ACDB1761FE8}';
- RID_Contactos_RefreshDelta = '{755CB99F-48D6-47A3-B95B-0580F7586656}';
- RID_ContratosEmpleadosDelta = '{7E590734-DDA2-4025-ACC6-0F16255B130A}';
- RID_DescripcionesProveedoresDelta = '{57434ABA-AADE-4CD2-930E-6309C476941F}';
- RID_PersonalContactoDelta = '{8B6FE0F0-8635-483F-8FCC-0D386BF286DD}';
- RID_Agentes_ComisionesDelta = '{A136E396-E02A-4776-BB9D-6C2AF7228D09}';
- RID_ListaAnosObjetivosAlbDelta = '{FC0A5B37-290A-4872-93FD-EDA0FCCEC000}';
- RID_AgentesDelta = '{A42667F1-F22B-4E4C-A840-C80695B7291C}';
- RID_ClientesDescuentosArticulosDelta = '{49185AEC-BA8D-4CDE-9F02-1C02A34FEF09}';
- RID_Agentes_Objetivos_albaranesDelta = '{1CF088C7-E0C8-4090-85A1-14A3838B781F}';
- RID_Agentes_Objetivos_facturasDelta = '{B10C7599-1FB6-4CA6-AADF-0FFB60329EC9}';
- RID_ListaAnosObjetivosFacDelta = '{01C5B570-6CCD-4680-B6C9-CFC0DB37A4DE}';
+ RID_ContactosDelta = '{0D14A3EF-8221-4271-BB6E-C28975FF9384}';
+ RID_GruposClienteDelta = '{A90F7994-1ABF-4A46-8CD2-1397FA5FA695}';
+ RID_DatosBancariosDelta = '{9137AF65-F02A-46E3-8E69-439A2138AEDA}';
+ RID_ClientesDelta = '{AE74F38D-EC62-478C-9009-91DFA765C1BA}';
+ RID_ProveedoresDelta = '{007E9A07-B1B7-449A-88D5-E230A1268906}';
+ RID_EmpleadosDelta = '{E44640BF-985F-493D-9681-A58B1E9C5048}';
+ RID_DireccionesContactoDelta = '{CD29AE32-0F09-43B0-BD60-0BABB4F28F91}';
+ RID_ClientesDescuentosDelta = '{95022EA1-5BE2-4708-BA5B-77536F57D331}';
+ RID_GruposProveedorDelta = '{0ABA7E39-36B3-44E2-B3E1-8BFF6D38B7CA}';
+ RID_GruposEmpleadoDelta = '{6BD3D176-0D39-439D-8782-8F79DC7C2C90}';
+ RID_Contactos_RefreshDelta = '{2FA063C0-9DCA-4BF6-A9A7-FD4D319ECF88}';
+ RID_ContratosEmpleadosDelta = '{D0F4C06F-1363-49E5-8094-158E6E33781A}';
+ RID_DescripcionesProveedoresDelta = '{30864B1C-279D-4203-95F3-38A1D42044E0}';
+ RID_PersonalContactoDelta = '{E60BCF43-0FAA-4EF1-BD68-0BC8328AE3A9}';
+ RID_Agentes_ComisionesDelta = '{A4522C74-DA90-4B25-9757-FC901C4297C0}';
+ RID_ListaAnosObjetivosAlbDelta = '{2D43A4A9-A60F-4847-90D8-506A9E438E8F}';
+ RID_AgentesDelta = '{B0FC98F6-07E3-4186-ACF7-4525A8B771C7}';
+ RID_ClientesDescuentosArticulosDelta = '{FC2F2307-6B92-4C15-BDC7-5A140CBF00F0}';
+ RID_Agentes_Objetivos_albaranesDelta = '{BF428235-7C8E-4ABB-B20A-4CAD58BD98EC}';
+ RID_Agentes_Objetivos_facturasDelta = '{BC496438-46AC-4530-83E8-558F3ACDFB57}';
+ RID_ListaAnosObjetivosFacDelta = '{292DE1F7-DE87-44ED-AB50-050BC49C8CB1}';
+ RID_TiposClienteDelta = '{FA885475-ECC3-45C8-BF6B-DBE4E19F6C00}';
type
{ IContactosDelta }
IContactosDelta = interface(IContactos)
- ['{924489BD-4BF1-490A-80E1-292384CDE36B}']
+ ['{0D14A3EF-8221-4271-BB6E-C28975FF9384}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CATEGORIAValue : Integer;
@@ -333,7 +334,7 @@ type
{ IGruposClienteDelta }
IGruposClienteDelta = interface(IGruposCliente)
- ['{00B6FC09-D8A1-4AF6-B6DF-2BCEF361091C}']
+ ['{A90F7994-1ABF-4A46-8CD2-1397FA5FA695}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldDESCRIPCIONValue : String;
@@ -379,7 +380,7 @@ type
{ IDatosBancariosDelta }
IDatosBancariosDelta = interface(IDatosBancarios)
- ['{359B215D-847C-407A-9553-F0E7AE268DAE}']
+ ['{9137AF65-F02A-46E3-8E69-439A2138AEDA}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CONTACTOValue : Integer;
@@ -509,7 +510,7 @@ type
{ IClientesDelta }
IClientesDelta = interface(IClientes)
- ['{71CCE505-5A15-4B1E-A807-8DA7DFE6C36C}']
+ ['{AE74F38D-EC62-478C-9009-91DFA765C1BA}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CATEGORIAValue : Integer;
@@ -553,6 +554,7 @@ type
function GetOldCODIGO_ASIGNADOValue : String;
function GetOldDESCUENTOValue : Float;
function GetOldFELICITACIONValue : SmallInt;
+ function GetOldTIPO_CLIENTEValue : String;
{ Properties }
property OldID : Integer read GetOldIDValue;
@@ -597,6 +599,7 @@ type
property OldCODIGO_ASIGNADO : String read GetOldCODIGO_ASIGNADOValue;
property OldDESCUENTO : Float read GetOldDESCUENTOValue;
property OldFELICITACION : SmallInt read GetOldFELICITACIONValue;
+ property OldTIPO_CLIENTE : String read GetOldTIPO_CLIENTEValue;
end;
{ TClientesBusinessProcessorRules }
@@ -857,6 +860,12 @@ type
function GetOldFELICITACIONIsNull: Boolean; virtual;
procedure SetFELICITACIONValue(const aValue: SmallInt); virtual;
procedure SetFELICITACIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_CLIENTEValue: String; virtual;
+ function GetTIPO_CLIENTEIsNull: Boolean; virtual;
+ function GetOldTIPO_CLIENTEValue: String; virtual;
+ function GetOldTIPO_CLIENTEIsNull: Boolean; virtual;
+ procedure SetTIPO_CLIENTEValue(const aValue: String); virtual;
+ procedure SetTIPO_CLIENTEIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID : Integer read GetIDValue write SetIDValue;
@@ -1027,6 +1036,10 @@ type
property FELICITACIONIsNull : Boolean read GetFELICITACIONIsNull write SetFELICITACIONIsNull;
property OldFELICITACION : SmallInt read GetOldFELICITACIONValue;
property OldFELICITACIONIsNull : Boolean read GetOldFELICITACIONIsNull;
+ property TIPO_CLIENTE : String read GetTIPO_CLIENTEValue write SetTIPO_CLIENTEValue;
+ property TIPO_CLIENTEIsNull : Boolean read GetTIPO_CLIENTEIsNull write SetTIPO_CLIENTEIsNull;
+ property OldTIPO_CLIENTE : String read GetOldTIPO_CLIENTEValue;
+ property OldTIPO_CLIENTEIsNull : Boolean read GetOldTIPO_CLIENTEIsNull;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@@ -1036,7 +1049,7 @@ type
{ IProveedoresDelta }
IProveedoresDelta = interface(IProveedores)
- ['{F3854348-13E9-465B-9E6E-67EC43F26D2E}']
+ ['{007E9A07-B1B7-449A-88D5-E230A1268906}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CATEGORIAValue : Integer;
@@ -1527,7 +1540,7 @@ type
{ IEmpleadosDelta }
IEmpleadosDelta = interface(IEmpleados)
- ['{8A94BFD2-C61E-46A8-9620-CF7E1C97D7B5}']
+ ['{E44640BF-985F-493D-9681-A58B1E9C5048}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CATEGORIAValue : Integer;
@@ -1962,7 +1975,7 @@ type
{ IDireccionesContactoDelta }
IDireccionesContactoDelta = interface(IDireccionesContacto)
- ['{C480F508-E137-4093-8BF2-DF49EF2AB3DE}']
+ ['{CD29AE32-0F09-43B0-BD60-0BABB4F28F91}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CONTACTOValue : Integer;
@@ -2177,7 +2190,7 @@ type
{ IClientesDescuentosDelta }
IClientesDescuentosDelta = interface(IClientesDescuentos)
- ['{B4C0F049-8B81-4EFB-9E8E-592A72FE25A6}']
+ ['{95022EA1-5BE2-4708-BA5B-77536F57D331}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CLIENTEValue : Integer;
@@ -2259,7 +2272,7 @@ type
{ IGruposProveedorDelta }
IGruposProveedorDelta = interface(IGruposProveedor)
- ['{129AA285-FCCC-42C8-B31E-288EDB9500DA}']
+ ['{0ABA7E39-36B3-44E2-B3E1-8BFF6D38B7CA}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldDESCRIPCIONValue : String;
@@ -2305,7 +2318,7 @@ type
{ IGruposEmpleadoDelta }
IGruposEmpleadoDelta = interface(IGruposEmpleado)
- ['{F6F9AD04-610E-4F13-AC1F-7ACDB1761FE8}']
+ ['{6BD3D176-0D39-439D-8782-8F79DC7C2C90}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldDESCRIPCIONValue : String;
@@ -2351,7 +2364,7 @@ type
{ IContactos_RefreshDelta }
IContactos_RefreshDelta = interface(IContactos_Refresh)
- ['{755CB99F-48D6-47A3-B95B-0580F7586656}']
+ ['{2FA063C0-9DCA-4BF6-A9A7-FD4D319ECF88}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldNIF_CIFValue : String;
@@ -2626,7 +2639,7 @@ type
{ IContratosEmpleadosDelta }
IContratosEmpleadosDelta = interface(IContratosEmpleados)
- ['{7E590734-DDA2-4025-ACC6-0F16255B130A}']
+ ['{D0F4C06F-1363-49E5-8094-158E6E33781A}']
{ Property getters and setters }
function GetOldCONTRATOValue : String;
@@ -2660,7 +2673,7 @@ type
{ IDescripcionesProveedoresDelta }
IDescripcionesProveedoresDelta = interface(IDescripcionesProveedores)
- ['{57434ABA-AADE-4CD2-930E-6309C476941F}']
+ ['{30864B1C-279D-4203-95F3-38A1D42044E0}']
{ Property getters and setters }
function GetOldDESCRIPCION_PROVEEDORValue : String;
@@ -2694,7 +2707,7 @@ type
{ IPersonalContactoDelta }
IPersonalContactoDelta = interface(IPersonalContacto)
- ['{8B6FE0F0-8635-483F-8FCC-0D386BF286DD}']
+ ['{E60BCF43-0FAA-4EF1-BD68-0BC8328AE3A9}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CONTACTOValue : Integer;
@@ -2836,7 +2849,7 @@ type
{ IAgentes_ComisionesDelta }
IAgentes_ComisionesDelta = interface(IAgentes_Comisiones)
- ['{A136E396-E02A-4776-BB9D-6C2AF7228D09}']
+ ['{A4522C74-DA90-4B25-9757-FC901C4297C0}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_AGENTEValue : Integer;
@@ -2918,7 +2931,7 @@ type
{ IListaAnosObjetivosAlbDelta }
IListaAnosObjetivosAlbDelta = interface(IListaAnosObjetivosAlb)
- ['{FC0A5B37-290A-4872-93FD-EDA0FCCEC000}']
+ ['{2D43A4A9-A60F-4847-90D8-506A9E438E8F}']
{ Property getters and setters }
function GetOldANOValue : SmallInt;
@@ -2952,7 +2965,7 @@ type
{ IAgentesDelta }
IAgentesDelta = interface(IAgentes)
- ['{A42667F1-F22B-4E4C-A840-C80695B7291C}']
+ ['{B0FC98F6-07E3-4186-ACF7-4525A8B771C7}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CATEGORIAValue : Integer;
@@ -3287,7 +3300,7 @@ type
{ IClientesDescuentosArticulosDelta }
IClientesDescuentosArticulosDelta = interface(IClientesDescuentosArticulos)
- ['{49185AEC-BA8D-4CDE-9F02-1C02A34FEF09}']
+ ['{FC2F2307-6B92-4C15-BDC7-5A140CBF00F0}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_CLIENTEValue : Integer;
@@ -3417,7 +3430,7 @@ type
{ IAgentes_Objetivos_albaranesDelta }
IAgentes_Objetivos_albaranesDelta = interface(IAgentes_Objetivos_albaranes)
- ['{1CF088C7-E0C8-4090-85A1-14A3838B781F}']
+ ['{BF428235-7C8E-4ABB-B20A-4CAD58BD98EC}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_AGENTEValue : Integer;
@@ -3523,7 +3536,7 @@ type
{ IAgentes_Objetivos_facturasDelta }
IAgentes_Objetivos_facturasDelta = interface(IAgentes_Objetivos_facturas)
- ['{B10C7599-1FB6-4CA6-AADF-0FFB60329EC9}']
+ ['{BC496438-46AC-4530-83E8-558F3ACDFB57}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_AGENTEValue : Integer;
@@ -3629,7 +3642,7 @@ type
{ IListaAnosObjetivosFacDelta }
IListaAnosObjetivosFacDelta = interface(IListaAnosObjetivosFac)
- ['{01C5B570-6CCD-4680-B6C9-CFC0DB37A4DE}']
+ ['{292DE1F7-DE87-44ED-AB50-050BC49C8CB1}']
{ Property getters and setters }
function GetOldANOValue : SmallInt;
@@ -3661,6 +3674,52 @@ type
end;
+ { ITiposClienteDelta }
+ ITiposClienteDelta = interface(ITiposCliente)
+ ['{FA885475-ECC3-45C8-BF6B-DBE4E19F6C00}']
+ { Property getters and setters }
+ function GetOldIDValue : Integer;
+ function GetOldDESCRIPCIONValue : String;
+
+ { Properties }
+ property OldID : Integer read GetOldIDValue;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ end;
+
+ { TTiposClienteBusinessProcessorRules }
+ TTiposClienteBusinessProcessorRules = class(TDABusinessProcessorRules, ITiposCliente, ITiposClienteDelta)
+ private
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ function GetIDIsNull: Boolean; virtual;
+ function GetOldIDValue: Integer; virtual;
+ function GetOldIDIsNull: Boolean; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetDESCRIPCIONValue: String; virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ function GetOldDESCRIPCIONValue: String; virtual;
+ function GetOldDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID : Integer read GetIDValue write SetIDValue;
+ property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull;
+ property OldID : Integer read GetOldIDValue;
+ property OldIDIsNull : Boolean read GetOldIDIsNull;
+ property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
implementation
uses
@@ -6085,6 +6144,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesFELICITACION] := Null;
end;
+function TClientesBusinessProcessorRules.GetTIPO_CLIENTEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIPO_CLIENTE];
+end;
+
+function TClientesBusinessProcessorRules.GetTIPO_CLIENTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIPO_CLIENTE]);
+end;
+
+function TClientesBusinessProcessorRules.GetOldTIPO_CLIENTEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesTIPO_CLIENTE];
+end;
+
+function TClientesBusinessProcessorRules.GetOldTIPO_CLIENTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesTIPO_CLIENTE]);
+end;
+
+procedure TClientesBusinessProcessorRules.SetTIPO_CLIENTEValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIPO_CLIENTE] := aValue;
+end;
+
+procedure TClientesBusinessProcessorRules.SetTIPO_CLIENTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIPO_CLIENTE] := Null;
+end;
+
{ TProveedoresBusinessProcessorRules }
constructor TProveedoresBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
@@ -12151,6 +12241,80 @@ begin
end;
+{ TTiposClienteBusinessProcessorRules }
+constructor TTiposClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+begin
+ inherited;
+end;
+
+destructor TTiposClienteBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+function TTiposClienteBusinessProcessorRules.GetIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteID];
+end;
+
+function TTiposClienteBusinessProcessorRules.GetIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteID]);
+end;
+
+function TTiposClienteBusinessProcessorRules.GetOldIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposClienteID];
+end;
+
+function TTiposClienteBusinessProcessorRules.GetOldIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_TiposClienteID]);
+end;
+
+procedure TTiposClienteBusinessProcessorRules.SetIDValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteID] := aValue;
+end;
+
+procedure TTiposClienteBusinessProcessorRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteID] := Null;
+end;
+
+function TTiposClienteBusinessProcessorRules.GetDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteDESCRIPCION];
+end;
+
+function TTiposClienteBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteDESCRIPCION]);
+end;
+
+function TTiposClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposClienteDESCRIPCION];
+end;
+
+function TTiposClienteBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_TiposClienteDESCRIPCION]);
+end;
+
+procedure TTiposClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteDESCRIPCION] := aValue;
+end;
+
+procedure TTiposClienteBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_TiposClienteDESCRIPCION] := Null;
+end;
+
+
initialization
RegisterBusinessProcessorRules(RID_ContactosDelta, TContactosBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_GruposClienteDelta, TGruposClienteBusinessProcessorRules);
@@ -12173,5 +12337,6 @@ initialization
RegisterBusinessProcessorRules(RID_Agentes_Objetivos_albaranesDelta, TAgentes_Objetivos_albaranesBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_Agentes_Objetivos_facturasDelta, TAgentes_Objetivos_facturasBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_ListaAnosObjetivosFacDelta, TListaAnosObjetivosFacBusinessProcessorRules);
+ RegisterBusinessProcessorRules(RID_TiposClienteDelta, TTiposClienteBusinessProcessorRules);
end.
diff --git a/Source/Modulos/Contactos/Model/uBizContactos.pas b/Source/Modulos/Contactos/Model/uBizContactos.pas
index a94322d..0e45fb2 100644
--- a/Source/Modulos/Contactos/Model/uBizContactos.pas
+++ b/Source/Modulos/Contactos/Model/uBizContactos.pas
@@ -56,6 +56,9 @@ type
function GetGRUPO_CLIENTEValue: String;
procedure SetGRUPO_CLIENTEValue(const aValue: String);
+ function GetTIPO_CLIENTEValue: String;
+ procedure SetTIPO_CLIENTEValue(const aValue: String);
+
function GetNOMBRE_COMERCIALValue: String;
procedure SetNOMBRE_COMERCIALValue(const aValue: String);
@@ -107,6 +110,7 @@ type
procedure SetEMAIL_ADMINISTRACIONValue(const aValue: String);
property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue;
+ property TIPO_CLIENTE: String read GetTIPO_CLIENTEValue write SetTIPO_CLIENTEValue;
property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue;
property VENCIMIENTO_FACTURAS_1: Smallint read GetVENCIMIENTO_FACTURAS_1Value write SetVENCIMIENTO_FACTURAS_1Value;
property VENCIMIENTO_FACTURAS_2: Smallint read GetVENCIMIENTO_FACTURAS_2Value write SetVENCIMIENTO_FACTURAS_2Value;
@@ -307,6 +311,9 @@ type
function GetGRUPO_CLIENTEValue: String;
procedure SetGRUPO_CLIENTEValue(const aValue: String);
+ function GetTIPO_CLIENTEValue: String;
+ procedure SetTIPO_CLIENTEValue(const aValue: String);
+
function GetNOMBRE_COMERCIALValue: String;
procedure SetNOMBRE_COMERCIALValue(const aValue: String);
@@ -362,6 +369,7 @@ type
property Descuentos: IBizClienteDescuentos read GetDescuentos write SetDescuentos;
property DescuentosArt: IBizClienteDescuentosArticulos read GetDescuentosArt write SetDescuentosArt;
property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue;
+ property TIPO_CLIENTE: String read GetTIPO_CLIENTEValue write SetTIPO_CLIENTEValue;
property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue;
property VENCIMIENTO_FACTURAS_1: Smallint read GetVENCIMIENTO_FACTURAS_1Value write SetVENCIMIENTO_FACTURAS_1Value;
property VENCIMIENTO_FACTURAS_2: Smallint read GetVENCIMIENTO_FACTURAS_2Value write SetVENCIMIENTO_FACTURAS_2Value;
@@ -769,6 +777,11 @@ begin
result := DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger;
end;
+function TBizCliente.GetTIPO_CLIENTEValue: String;
+begin
+ result := DataTable.Fields[idx_ClientesTIPO_CLIENTE].AsString;
+end;
+
function TBizCliente.GetVENCIMIENTO_FACTURAS_1Value: SmallInt;
begin
result := DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS_1].AsSmallInt;
@@ -799,6 +812,11 @@ begin
DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger := aValue;
end;
+procedure TBizCliente.SetTIPO_CLIENTEValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ClientesTIPO_CLIENTE].AsString := aValue;
+end;
+
procedure TBizCliente.SetVENCIMIENTO_FACTURAS_1Value(const aValue: SmallInt);
begin
DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS_1].AsSmallInt := aValue;
diff --git a/Source/Modulos/Contactos/Model/uBizTiposCliente.pas b/Source/Modulos/Contactos/Model/uBizTiposCliente.pas
new file mode 100644
index 0000000..03b7df9
--- /dev/null
+++ b/Source/Modulos/Contactos/Model/uBizTiposCliente.pas
@@ -0,0 +1,37 @@
+unit uBizTiposCliente;
+
+interface
+
+uses
+ uDAInterfaces, uDADataTable, schContactosClient_Intf;
+
+const
+ BIZ_CLIENT_TIPOSCLIENTE = 'Client.TipoCliente';
+
+type
+ IBizTipoCliente = interface(ITiposCliente)
+ ['{E9966A2D-CFBC-49D0-8C3B-ADCE1604C942}']
+ end;
+
+ TBizTipoCliente = class(TTiposClienteDataTableRules, IBizTipoCliente)
+ protected
+ procedure AfterOpen(Sender: TDADataTable); override;
+ end;
+
+implementation
+
+{ TBizGrupoCliente }
+
+procedure TBizTipoCliente.AfterOpen(Sender: TDADataTable);
+begin
+ inherited;
+ DataTable.Sort([fld_TiposClienteDESCRIPCION], [sdAscending]);
+end;
+
+initialization
+ RegisterDataTableRules(BIZ_CLIENT_TIPOSCLIENTE, TBizTipoCliente);
+
+finalization
+
+end.
+
diff --git a/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm b/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm
index 48a556c..be5c6da 100644
--- a/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm
+++ b/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm
@@ -261,6 +261,11 @@ object PluginContactos: TPluginContactos
OnExecute = actAgentesExecute
OnUpdate = actAgentesUpdate
end
+ object actTiposCliente: TAction
+ Caption = 'Tipos de Cliente'
+ ImageIndex = 5
+ OnExecute = actTiposClienteExecute
+ end
end
object MainMenu: TMainMenu
Images = SmallImages
@@ -291,6 +296,9 @@ object PluginContactos: TPluginContactos
Tag = 102
Action = actGruposCliente
end
+ object actTiposCliente1: TMenuItem
+ Action = actTiposCliente
+ end
end
object Compras1: TMenuItem
Caption = '&Compras'
diff --git a/Source/Modulos/Contactos/Plugin/uPluginContactos.pas b/Source/Modulos/Contactos/Plugin/uPluginContactos.pas
index 4b05459..42a2e09 100644
--- a/Source/Modulos/Contactos/Plugin/uPluginContactos.pas
+++ b/Source/Modulos/Contactos/Plugin/uPluginContactos.pas
@@ -35,6 +35,8 @@ type
Empresa1: TMenuItem;
actAgentes: TAction;
Agentes1: TMenuItem;
+ actTiposCliente: TAction;
+ actTiposCliente1: TMenuItem;
procedure actClientesExecute(Sender: TObject);
procedure actProveedoresExecute(Sender: TObject);
procedure actEmpleadosExecute(Sender: TObject);
@@ -44,6 +46,7 @@ type
procedure actEmpleadosUpdate(Sender: TObject);
procedure actAgentesExecute(Sender: TObject);
procedure actAgentesUpdate(Sender: TObject);
+ procedure actTiposClienteExecute(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -56,9 +59,9 @@ implementation
uses
Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uContactosController,
uClientesController, uProveedoresController, uEmpleadosController, uAgentesController,
- uGruposClienteController, uBizGruposCliente, uGruposProveedorController,
- uBizGruposProveedor, uGruposEmpleadoController, uBizGruposEmpleado,
- uContactosViewRegister, uBizContactos, uFactuGES_App;
+ uGruposClienteController, uTiposClienteController, uBizGruposCliente, uBizTiposCliente,
+ uGruposProveedorController, uBizGruposProveedor, uGruposEmpleadoController,
+ uBizGruposEmpleado, uContactosViewRegister, uBizContactos, uFactuGES_App;
function GetModule : TModuleController;
begin
@@ -141,6 +144,16 @@ begin
AProveedoresController.VerTodos(AProveedores);
end;
+procedure TPluginContactos.actTiposClienteExecute(Sender: TObject);
+var
+ ATipoClienteController : ITiposClienteController;
+ ATiposCliente : IBizTipoCliente;
+begin
+ ATipoClienteController := TTiposClienteController.Create;
+ ATiposCliente := (ATipoClienteController.BuscarTodos as IBizTipoCliente);
+ ATipoClienteController.VerTodos(ATiposCliente);
+end;
+
procedure TPluginContactos.actEmpleadosExecute(Sender: TObject);
var
AEmpleadosController : IEmpleadosController;
diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
index 05eadc4..25d2898 100644
--- a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
+++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
@@ -559,6 +559,10 @@ object srvContactos: TsrvContactos
item
DatasetField = 'EMAIL_ADMINISTRACION'
TableField = 'EMAIL_ADMINISTRACION'
+ end
+ item
+ DatasetField = 'TIPO_CLIENTE'
+ TableField = 'TIPO_CLIENTE'
end>
end>
Name = 'Clientes'
@@ -790,6 +794,11 @@ object srvContactos: TsrvContactos
Name = 'FELICITACION'
DataType = datSmallInt
DictionaryEntry = 'Clientes_FELICITACION'
+ end
+ item
+ Name = 'TIPO_CLIENTE'
+ DataType = datString
+ Size = 255
end>
end
item
@@ -2866,6 +2875,39 @@ object srvContactos: TsrvContactos
Name = 'ANO'
DataType = datSmallInt
end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'CLIENTES_TIPOS'
+ StatementType = stAutoSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end>
+ end>
+ Name = 'TiposCliente'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_CLIENTES_TIPOS_ID'
+ DictionaryEntry = 'TiposCliente_ID'
+ InPrimaryKey = True
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'TiposCliente_DESCRIPCION'
+ end>
end>
JoinDataTables = <>
UnionDataTables = <>
@@ -3610,6 +3652,12 @@ object srvContactos: TsrvContactos
Name = 'FELICITACION'
DataType = datSmallInt
Value = ''
+ end
+ item
+ Name = 'TIPO_CLIENTE'
+ DataType = datString
+ Size = 255
+ Value = ''
end>
Statements = <
item
@@ -3621,13 +3669,13 @@ object srvContactos: TsrvContactos
'UEO, REGIMEN_IVA, ID_TIPO_IVA, ID_FORMA_PAGO,'#10' TIENDA_WEB, C' +
'ODIGO_ASIGNADO, DESCUENTO, RAPEL, ID_AGENTE, EMAIL_ADMINISTRACIO' +
'N,'#10' VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIE' +
- 'NTO_FACTURAS_3,'#10' FELICITACION)'#10' VALUES'#10' (:ID_CLIENTE, :G' +
- 'RUPO_CLIENTE, :RECARGO_EQUIVALENCIA, :NOMBRE_COMERCIAL,'#10' :BL' +
- 'OQUEADO, :MOTIVO_BLOQUEO, :REGIMEN_IVA, :ID_TIPO_IVA, :ID_FORMA_' +
- 'PAGO,'#10' :TIENDA_WEB, :CODIGO_ASIGNADO, :DESCUENTO, :RAPEL, :I' +
- 'D_AGENTE, :EMAIL_ADMINISTRACION,'#10' :VENCIMIENTO_FACTURAS_1, :' +
- 'VENCIMIENTO_FACTURAS_2, :VENCIMIENTO_FACTURAS_3,'#10' :FELICITAC' +
- 'ION)'#10' '#10#10
+ 'NTO_FACTURAS_3,'#10' FELICITACION, TIPO_CLIENTE)'#10' VALUES'#10' (:' +
+ 'ID_CLIENTE, :GRUPO_CLIENTE, :RECARGO_EQUIVALENCIA, :NOMBRE_COMER' +
+ 'CIAL,'#10' :BLOQUEADO, :MOTIVO_BLOQUEO, :REGIMEN_IVA, :ID_TIPO_I' +
+ 'VA, :ID_FORMA_PAGO,'#10' :TIENDA_WEB, :CODIGO_ASIGNADO, :DESCUEN' +
+ 'TO, :RAPEL, :ID_AGENTE, :EMAIL_ADMINISTRACION,'#10' :VENCIMIENTO' +
+ '_FACTURAS_1, :VENCIMIENTO_FACTURAS_2, :VENCIMIENTO_FACTURAS_3,'#10' ' +
+ ' :FELICITACION, :TIPO_CLIENTE)'#10' '#10#10
StatementType = stSQL
ColumnMappings = <>
end>
@@ -3756,6 +3804,12 @@ object srvContactos: TsrvContactos
DataType = datSmallInt
Value = ''
end
+ item
+ Name = 'TIPO_CLIENTE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
item
Name = 'OLD_ID_CLIENTE'
Value = ''
@@ -3776,8 +3830,8 @@ object srvContactos: TsrvContactos
'MINISTRACION = :EMAIL_ADMINISTRACION,'#10' VENCIMIENTO_FACTURAS_1' +
' = :VENCIMIENTO_FACTURAS_1,'#10' VENCIMIENTO_FACTURAS_2 = :VENCIM' +
'IENTO_FACTURAS_2,'#10' VENCIMIENTO_FACTURAS_3 = :VENCIMIENTO_FACT' +
- 'URAS_3,'#10' FELICITACION = :FELICITACION'#10' WHERE'#10' (ID_CLIENTE' +
- ' = :OLD_ID_CLIENTE)'#10
+ 'URAS_3,'#10' FELICITACION = :FELICITACION,'#10' TIPO_CLIENTE = :TI' +
+ 'PO_CLIENTE'#10' WHERE'#10' (ID_CLIENTE = :OLD_ID_CLIENTE)'#10
StatementType = stSQL
ColumnMappings = <>
end>
@@ -6284,6 +6338,18 @@ object srvContactos: TsrvContactos
item
Name = 'Agentes_Objetivos_facturas_IMPORTE_OBJETIVO'
DataType = datCurrency
+ end
+ item
+ Name = 'TiposCliente_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_CLIENTES_TIPOS_ID'
+ Required = True
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'TiposCliente_DESCRIPCION'
+ DataType = datString
+ Size = 255
end>
Left = 126
Top = 14
diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dpk b/Source/Modulos/Contactos/Views/Contactos_view.dpk
index fd97f8f..5529374 100644
--- a/Source/Modulos/Contactos/Views/Contactos_view.dpk
+++ b/Source/Modulos/Contactos/Views/Contactos_view.dpk
@@ -133,6 +133,7 @@ contains
uViewClienteDescuentosArticulos in 'uViewClienteDescuentosArticulos.pas' {frViewClienteDescuentosArticulos: TFrame},
uEditorElegirAgentes in 'uEditorElegirAgentes.pas' {fEditorElegirAgentes: TCustomEditor},
uViewAgenteObjetivosAlbaranes in 'uViewAgenteObjetivosAlbaranes.pas' {frViewAgenteObjetivosAlbaranes: TFrame},
- uViewAgenteObjetivosFacturas in 'uViewAgenteObjetivosFacturas.pas' {frViewAgenteObjetivosFacturas: TFrame};
+ uViewAgenteObjetivosFacturas in 'uViewAgenteObjetivosFacturas.pas' {frViewAgenteObjetivosFacturas: TFrame},
+ uEditorTiposCliente in 'uEditorTiposCliente.pas' {fEditorTiposCliente: TCustomEditor};
end.
diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dproj b/Source/Modulos/Contactos/Views/Contactos_view.dproj
index 9d33182..29e3100 100644
--- a/Source/Modulos/Contactos/Views/Contactos_view.dproj
+++ b/Source/Modulos/Contactos/Views/Contactos_view.dproj
@@ -49,65 +49,58 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -200,6 +193,10 @@
TCustomEditor
+
+
+ TCustomEditor
+
TFrame
@@ -296,6 +293,13 @@
TCustomView
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIDialogListaFacturasProformaEnvioEMail.pas b/Source/Modulos/Facturas proforma/Controller/View/uIDialogListaFacturasProformaEnvioEMail.pas
new file mode 100644
index 0000000..793088c
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIDialogListaFacturasProformaEnvioEMail.pas
@@ -0,0 +1,21 @@
+unit uIDialogListaFacturasProformaEnvioEMail;
+
+interface
+
+uses
+ uBizFacturasProforma, uFacturasProformaController;
+
+type
+ IDialogListaFacturasProformaEnvioEMail = interface
+ ['{B7208C8C-137A-456D-A119-14F8F2439AB7}']
+ function GetFacturas: IBizFacturaProforma;
+ procedure SetFacturas(const Value: IBizFacturaProforma);
+ property Facturas: IBizFacturaProforma read GetFacturas write SetFacturas;
+ function ShowModal : Integer;
+ procedure Release;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirArticulosFacturasProforma.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirArticulosFacturasProforma.pas
new file mode 100644
index 0000000..2b341e8
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirArticulosFacturasProforma.pas
@@ -0,0 +1,16 @@
+unit uIEditorElegirArticulosFacturasProforma;
+
+interface
+
+uses
+ uIEditorElegirArticulos;
+
+type
+ IEditorElegirArticulosFacturasProforma = interface(IEditorElegirArticulos)
+ ['{BE7DC84C-CDB5-4AAA-A754-D8534B1BBD53}']
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirFacturasProforma.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirFacturasProforma.pas
new file mode 100644
index 0000000..d0ff5cb
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorElegirFacturasProforma.pas
@@ -0,0 +1,27 @@
+unit uIEditorElegirFacturasProforma;
+
+interface
+
+uses
+ uIEditorFacturasProforma, uBizFacturasProforma, uGUIBase;
+
+type
+ IEditorElegirFacturasProforma = interface(IEditorFacturasProforma)
+ ['{7EBD9115-C8E5-4024-AD07-4D2A714E70BE}']
+ function GetFacturasProformaSeleccionados: IBizFacturaProforma;
+ property FacturasProformaSeleccionados: IBizFacturaProforma read GetFacturasProformaSeleccionados;
+
+ procedure SetMultiSelect (AValue : Boolean);
+ function GetMultiSelect : Boolean;
+ property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
+
+ procedure SetMensaje (const AValue: String);
+ function GetMensaje: String;
+ property Mensaje : String read GetMensaje write SetMensaje;
+
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturaProforma.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturaProforma.pas
new file mode 100644
index 0000000..faa2f8d
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturaProforma.pas
@@ -0,0 +1,23 @@
+unit uIEditorFacturaProforma;
+
+interface
+
+uses
+ uEditorDBItem, uBizFacturasProforma, uFacturasProformaController;
+
+type
+ IEditorFacturaProforma = interface(IEditorDBItem)
+ ['{921F236C-8CEF-4F64-A795-7A92A820A36E}']
+ function GetController : IFacturasProformaController;
+ procedure SetController (const Value : IFacturasProformaController);
+ property Controller : IFacturasProformaController read GetController
+ write SetController;
+
+ function GetFactura: IBizFacturaProforma;
+ procedure SetFactura(const Value: IBizFacturaProforma);
+ property Factura: IBizFacturaProforma read GetFactura write SetFactura;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProforma.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProforma.pas
new file mode 100644
index 0000000..298ed3a
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProforma.pas
@@ -0,0 +1,23 @@
+unit uIEditorFacturasProforma;
+
+interface
+
+uses
+ uEditorGridBase, uBizFacturasProforma, uFacturasProformaController;
+
+type
+ IEditorFacturasProforma = interface(IEditorGridBase)
+ ['{1CAA4FF7-26C6-4889-96FF-8725FD23A2DF}']
+ function GetFacturas: IBizFacturaProforma;
+ procedure SetFacturas(const Value: IBizFacturaProforma);
+ property Facturas: IBizFacturaProforma read GetFacturas write SetFacturas;
+
+ function GetController : IFacturasProformaController;
+ procedure SetController (const Value : IFacturasProformaController);
+ property Controller : IFacturasProformaController read GetController write SetController;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProformaPreview.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProformaPreview.pas
new file mode 100644
index 0000000..9d222e1
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorFacturasProformaPreview.pas
@@ -0,0 +1,16 @@
+unit uIEditorFacturasProformaPreview;
+
+interface
+
+uses
+ uEditorPreview, uBizFacturasProforma, uFacturasProformaReportController;
+
+type
+ IEditorFacturasProformaPreview = interface(IEditorPreview)
+ ['{44CE680F-7FC6-4B96-9D8C-2333217AD107}']
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/View/uIEditorSituacionFacturaProforma.pas b/Source/Modulos/Facturas proforma/Controller/View/uIEditorSituacionFacturaProforma.pas
new file mode 100644
index 0000000..e525889
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/View/uIEditorSituacionFacturaProforma.pas
@@ -0,0 +1,27 @@
+unit uIEditorSituacionFacturaProforma;
+
+interface
+
+uses
+ uBizFacturasProforma, uFacturasProformaController;
+
+type
+ IEditorSituacionFacturaProforma = interface
+ ['{63DFC463-E724-461B-AD97-3C84F2B37537}']
+ function GetController : IFacturasProformaController;
+ procedure SetController (const Value : IFacturasProformaController);
+ property Controller : IFacturasProformaController read GetController
+ write SetController;
+
+ function GetFacturaProforma: IBizFacturaProforma;
+ procedure SetFacturaProforma(const Value: IBizFacturaProforma);
+ property FacturaCliente: IBizFacturaProforma read GetFacturaProforma
+ write SetFacturaProforma;
+
+ function ShowModal : Integer;
+ procedure Release;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/uArticulosFacturaProformaController.pas b/Source/Modulos/Facturas proforma/Controller/uArticulosFacturaProformaController.pas
new file mode 100644
index 0000000..c77703b
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/uArticulosFacturaProformaController.pas
@@ -0,0 +1,46 @@
+unit uArticulosFacturaProformaController;
+
+interface
+
+uses
+ uDADataTable, uArticulosController, uBizArticulos;
+
+type
+ IArticulosFacturaProformaController = interface(IArticulosController)
+ ['{BC7EAE09-CC71-4FF7-85E0-DFC10574FBA3}']
+ end;
+
+ TArticulosFacturaProformaController = class(TArticulosController, IArticulosFacturaProformaController)
+ public
+ function ElegirArticulos(AArticulos : IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; override;
+ end;
+
+implementation
+
+{ TArticulosFacturaClienteController }
+
+uses Controls, cxControls, uIEditorElegirArticulosFacturasProforma, uIEditorElegirArticulos;
+
+function TArticulosFacturaProformaController.ElegirArticulos(AArticulos: IBizArticulo; AMensaje: String;
+ AMultiSelect: Boolean): IBizArticulo;
+var
+ AEditor : IEditorElegirArticulosFacturasProforma;
+begin
+ Result := NIL;
+
+ CreateEditor('EditorElegirArticulosFacturaProforma', IEditorElegirArticulosFacturasProforma, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self;
+ AEditor.Articulos := AArticulos;
+ AEditor.MultiSelect := AMultiSelect;
+ AEditor.Mensaje := AMensaje;
+ if IsPositiveResult(AEditor.ShowModal) then
+ Result := AEditor.ArticulosSeleccionados;
+ finally
+ AEditor.Release;
+ AEditor := NIL;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/uDetallesFacturaProformaController.pas b/Source/Modulos/Facturas proforma/Controller/uDetallesFacturaProformaController.pas
new file mode 100644
index 0000000..39a5f65
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/uDetallesFacturaProformaController.pas
@@ -0,0 +1,185 @@
+unit uDetallesFacturaProformaController;
+
+interface
+
+uses
+ Classes, uDADataTable, uControllerDetallesArticulos, uBizDetallesFacturaProforma, uIDataModuleFacturasProforma,
+ uBizContactos, uBizArticulos;
+
+type
+ IDetallesFacturaProformaController = interface(IControllerDetallesArticulos)
+ ['{5DBAE3ED-D54F-4C62-AEBF-2BED29D91DD2}']
+ procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
+ procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
+ procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProforma; AReferencia: String; AFecha: String);
+ procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
+ function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
+ end;
+
+ TDetallesFacturaProformaController = class(TControllerDetallesArticulos, IDetallesFacturaProformaController)
+ private
+ FDataModule : IDataModuleFacturasProforma;
+ protected
+// procedure AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); override;
+ procedure RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); overload; override;
+ procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); override;
+
+ procedure AsignarController; override;
+ //Si sobreescribimos este método podremos tener en cuenta otras columnas para el calculo del importe total de un concepto
+ function CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; override;
+ procedure ValidarCampos(DataTable: TDADataTable); override;
+ procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
+ function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
+
+ public
+ function DarListaTiposDetalle: TStringList; override;
+
+ procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload;
+ procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
+
+ //ABONOS
+ procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProforma; AReferencia: String; AFecha: String);
+
+ constructor Create; override;
+ destructor Destroy; override;
+ end;
+
+implementation
+
+{ TDetallesFacturaProformaController }
+
+uses Variants, uDataModuleFacturasProforma, uArticulosFacturaProformaController,
+ uControllerDetallesBase, Dialogs, uDialogUtils, SysUtils, uCalculosUtils;
+
+procedure TDetallesFacturaProformaController.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente);
+var
+ AArticulos : IBizArticulo;
+begin
+ if Assigned(ADetalles) then
+ begin
+ try
+ AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
+ ActualizarDetalles(ADetalles, AArticulos);
+ ShowInfoMessage('Se ha actualizado el descuento para el cliente seleccionado');
+ finally
+ AArticulos := Nil;
+ end;
+ end;
+end;
+
+procedure TDetallesFacturaProformaController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente; const ANuevaFila :Boolean; const ACantidad: Integer);
+var
+ AArticulos: IBizArticulo;
+begin
+ if Assigned(ADetalles) then
+ begin
+ try
+ AArticulos := (FArticulosController.BuscarTodos(ACliente) as IBizArticulo);
+
+ //Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect
+ if ANuevaFila then
+ begin
+ AArticulos := (FArticulosController as IArticulosFacturaProformaController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de cliente', True);
+ Add(ADetalles, AArticulos, ACantidad)
+ end
+ else
+ begin
+ AArticulos := (FArticulosController as IArticulosFacturaProformaController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a esta factura de cliente', False);
+ RellenarDetalle(ADetalles, AArticulos, ACantidad);
+ end;
+
+ finally
+ AArticulos := Nil;
+ end;
+ end;
+end;
+
+procedure TDetallesFacturaProformaController.AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProforma; AReferencia: String; AFecha: String);
+begin
+ AnadirConceptoInicial(ADetalles, 'ABONO DE FACTURA ' + AReferencia + ' con fecha ' + AFecha);
+end;
+
+procedure TDetallesFacturaProformaController.AsignarController;
+begin
+ FArticulosController := TArticulosFacturaProformaController.Create;
+end;
+
+{procedure TDetallesFacturaProformaController.AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer);
+begin
+ inherited;
+
+ with (ADetalles as IBizDetallesFacturaProforma) do
+ begin
+ Edit;
+// ID := FDataModule.GetNextID(DataTable.LogicalName);
+ ID_FACTURA := IDCabecera;
+ Post
+ end;
+end;}
+
+function TDetallesFacturaProformaController.CalcularImporteTotalConcepto(DataTable: TDADataTable): Double;
+begin
+ Result := CalcularLineaConcepto(DataTable);
+end;
+
+constructor TDetallesFacturaProformaController.Create;
+begin
+ inherited;
+ FDataModule := TDataModuleFacturasProforma.Create(Nil);
+end;
+
+function TDetallesFacturaProformaController.DarListaTiposDetalle: TStringList;
+begin
+ Result := TStringList.Create;
+ Result.Values[TIPO_DETALLE_CONCEPTO] := TIPO_DETALLE_CONCEPTO;
+ Result.Values[TIPO_DETALLE_TITULO] := TIPO_DETALLE_TITULO;
+// Result.Values[TIPO_DETALLE_TITULO_OPCIONAL] := TIPO_DETALLE_TITULO_OPCIONAL;
+ Result.Values[TIPO_DETALLE_SUBTOTAL] := TIPO_DETALLE_SUBTOTAL;
+// Result.Values[TIPO_DETALLE_DESCUENTO] := TIPO_DETALLE_DESCUENTO;
+// Result.Values[TIPO_DETALLE_SALTO] := TIPO_DETALLE_SALTO;
+end;
+
+function TDetallesFacturaProformaController.DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
+begin
+ Result := DarTotalPorte(ADetalles);
+end;
+
+procedure TDetallesFacturaProformaController.DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
+begin
+ DesglosarPorte(ImportePorte, ADetalles);
+ ActualizarTotales(ADetalles);
+end;
+
+destructor TDetallesFacturaProformaController.Destroy;
+begin
+ FDataModule := Nil;
+ inherited;
+end;
+
+procedure TDetallesFacturaProformaController.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+ if Assigned(AArticulos) then
+ ADetalles.DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat := AArticulos.DESCUENTO
+ else
+ ADetalles.DataTable.FieldByName(CAMPO_DESCUENTO).AsFloat := 0;
+end;
+
+procedure TDetallesFacturaProformaController.ValidarCampos(DataTable: TDADataTable);
+begin
+ inherited;
+ ValidarCamposLineaConcepto(DataTable);
+end;
+
+procedure TDetallesFacturaProformaController.RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+//Como en tecsitel no hay descuento por linea de detalle, solo recuperamos nuevamente el valor del articulo cuando el detalle no tenga niguno
+//de esta forma evitamos que al cambiar de cliente se quiten los importes que se hubiesen establecido para los articulos.
+ if ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).IsNull then
+ if Assigned(AArticulos) then
+// ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := AArticulos.PRECIO_PVP_TOTAL
+ ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := AArticulos.PRECIO_COSTE
+ else
+ ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/uFacturasProformaController.pas b/Source/Modulos/Facturas proforma/Controller/uFacturasProformaController.pas
new file mode 100644
index 0000000..96ccca7
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/uFacturasProformaController.pas
@@ -0,0 +1,1147 @@
+unit uFacturasProformaController;
+
+interface
+
+
+uses
+ Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleFacturasProforma,
+ uClientesController, uDetallesFacturaProformaController,
+ uBizFacturasProforma;
+
+type
+ IFacturasProformaController = interface(IControllerBase)
+ ['{CAD20B4E-6D0B-4A1C-9306-B195824B6CAD}']
+ function GetClienteController: IClientesController;
+ procedure SetClienteController(const Value: IClientesController);
+ property ClienteController: IClientesController read GetClienteController write SetClienteController;
+
+ function GetDetallesController: IDetallesFacturaProformaController;
+ procedure SetDetallesController(const Value: IDetallesFacturaProformaController);
+ property DetallesController: IDetallesFacturaProformaController read GetDetallesController write SetDetallesController;
+
+ function Buscar(const ID: Integer): IBizFacturaProforma;
+ function BuscarTodos: IBizFacturaProforma; overload;
+ function BuscarTodos(const AID_Cliente: Integer): IBizFacturaProforma; overload;
+ procedure Ver(AFactura : IBizFacturaProforma);
+ procedure VerTodos(AFacturas: IBizFacturaProforma;
+ const AVerModal : Boolean = False; const AWindowCaption: String = '';
+ const AHeaderText: String = '');
+ function Nuevo (withInsert: Boolean = True) : IBizFacturaProforma;
+ function Anadir(AFactura : IBizFacturaProforma) : Boolean; overload;
+ function AnadirAbono(AFactura : IBizFacturaProforma) : Boolean;
+// function Anadir(AFacturas : IBizFacturaProforma; AListaAlbaranes : IBizAlbaranCliente): Boolean; overload;
+// function Anadir(AFactura : IBizFacturaProforma; const IDPedido : Integer): Boolean; overload;
+
+ function Eliminar(const ID : Integer): Boolean; overload;
+ function Eliminar(AFactura : IBizFacturaProforma; AllItems: Boolean = false): Boolean; overload;
+ function Guardar(AFactura : IBizFacturaProforma): Boolean;
+ procedure DescartarCambios(AFactura : IBizFacturaProforma);
+ function Existe(const ID: Integer) : Boolean;
+ procedure RecuperarCliente(AFactura : IBizFacturaProforma);
+ function Duplicar(AFactura: IBizFacturaProforma): IBizFacturaProforma;
+
+ procedure Preview(AFactura : IBizFacturaProforma; AllItems: Boolean = false;
+ const VerSello: Boolean = True; const VerCopia: Boolean = True);
+ function Print(AFactura : IBizFacturaProforma; AllItems: Boolean = false;
+ const VerSello: Boolean = True; const VerCopia: Boolean = True): Boolean;
+
+ procedure RecalcularImportes(AFactura: IBizFacturaProforma);
+ function EsModificable(AFactura: IBizFacturaProforma): Boolean;
+ function EsEliminable(AFactura: IBizFacturaProforma): Boolean;
+
+ function ElegirFacturas(AFacturas : IBizFacturaProforma; AMensaje: String; AMultiSelect: Boolean): IBizFacturaProforma;
+ function ExtraerSeleccionados(ARecibosCliente: IBizFacturaProforma) : IBizFacturaProforma;
+
+ procedure GenerarEmailFactura(AFactura : IBizFacturaProforma);
+ function EnviarEmailFacturas(AFacturas : IBizFacturaProforma): Boolean;
+ function EnviarFacturaPorEMail(AFactura: IBizFacturaProforma;
+ const AEnviarDirectamente: Boolean = True;
+ const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
+ const ATextoEMail: String = ''): Boolean;
+
+ function DarListaAnosFacturas: TStringList;
+ procedure FiltrarAno(AFactura: IBizFacturaProforma; ADynWhereDataTable: WideString; const Ano: String);
+ end;
+
+ TFacturasProformaController = class(TControllerBase, IFacturasProformaController)
+ private
+ FDataModule : IDataModuleFacturasProforma;
+ FClienteController : IClientesController;
+ FDetallesController : IDetallesFacturaProformaController;
+
+ function GetClienteController: IClientesController;
+ procedure SetClienteController(const Value: IClientesController);
+
+ function GetDetallesController: IDetallesFacturaProformaController;
+ procedure SetDetallesController(const Value: IDetallesFacturaProformaController);
+
+ function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
+ function _Vacio : IBizFacturaProforma;
+
+ procedure FiltrarEmpresa(AFactura: IBizFacturaProforma);
+ function ValidarFactura(AFactura: IBizFacturaProforma): Boolean;
+
+ procedure _AnadirMarcaEnvioCorreo(AFactura: IBizFacturaProforma);
+
+ protected
+ procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
+
+ public
+ property ClienteController: IClientesController read GetClienteController write SetClienteController;
+ property DetallesController: IDetallesFacturaProformaController read GetDetallesController write SetDetallesController;
+
+ constructor Create; override;
+ destructor Destroy; override;
+
+ function Eliminar(const ID : Integer): Boolean; overload;
+ function Eliminar(AFactura : IBizFacturaProforma; AllItems: Boolean = false): Boolean; overload;
+ function Guardar(AFactura : IBizFacturaProforma): Boolean;
+ procedure DescartarCambios(AFactura : IBizFacturaProforma); virtual;
+ function Existe(const ID: Integer) : Boolean; virtual;
+ function Anadir(AFactura : IBizFacturaProforma): Boolean; overload;
+ function AnadirAbono(AFactura : IBizFacturaProforma) : Boolean;
+// function Anadir(AFacturas : IBizFacturaProforma; AListaAlbaranes : IBizAlbaranCliente): Boolean; overload;
+// function Anadir(AFactura : IBizFacturaProforma; const IDPedido : Integer): Boolean; overload;
+ function Buscar(const ID: Integer): IBizFacturaProforma;
+ function BuscarTodos: IBizFacturaProforma; overload;
+ function BuscarTodos(const AID_Cliente: Integer): IBizFacturaProforma; overload;
+ function Nuevo (withInsert: Boolean = True) : IBizFacturaProforma;
+ procedure Ver(AFactura : IBizFacturaProforma);
+ procedure VerTodos(AFacturas: IBizFacturaProforma;
+ const AVerModal : Boolean = False; const AWindowCaption: String = '';
+ const AHeaderText: String = '');
+ function Duplicar(AFactura: IBizFacturaProforma): IBizFacturaProforma;
+ procedure RecuperarCliente(AFactura : IBizFacturaProforma);
+
+ procedure Preview(AFactura : IBizFacturaProforma; AllItems: Boolean = false;
+ const VerSello: Boolean = True; const VerCopia: Boolean = True);
+ function Print(AFactura : IBizFacturaProforma; AllItems: Boolean = false;
+ const VerSello: Boolean = True; const VerCopia: Boolean = True): Boolean;
+
+ procedure RecalcularImportes(AFactura: IBizFacturaProforma);
+ function EsModificable(AFactura: IBizFacturaProforma): Boolean;
+ function EsEliminable(AFactura: IBizFacturaProforma): Boolean;
+
+ function ElegirFacturas(AFacturas : IBizFacturaProforma; AMensaje: String; AMultiSelect: Boolean): IBizFacturaProforma;
+ function ExtraerSeleccionados(AFacturasProforma: IBizFacturaProforma) : IBizFacturaProforma;
+
+ procedure GenerarEmailFactura(AFactura : IBizFacturaProforma);
+ function EnviarEmailFacturas(AFacturas : IBizFacturaProforma): Boolean;
+ function EnviarFacturaPorEMail(AFactura: IBizFacturaProforma;
+ const AEnviarDirectamente: Boolean = True;
+ const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
+ const ATextoEMail: String = ''): Boolean;
+
+ function DarListaAnosFacturas: TStringList;
+ procedure FiltrarAno(AFactura: IBizFacturaProforma; ADynWhereDataTable: WideString; const Ano: String);
+ end;
+
+implementation
+
+uses
+ Windows, Controls, cxControls, DB, uEditorRegistryUtils, schFacturasProformaClient_Intf,
+ uBizContactos, uIEditorFacturasProforma, uIEditorFacturaProforma, uFactuGES_App,
+ uDataModuleFacturasProforma, uBizDetallesFacturaProforma, uControllerDetallesBase,
+ uDataModuleUsuarios, uDAInterfaces, uDataTableUtils, uDateUtils, uNumUtils, uROTypes,
+// uAlbaranesClienteController, schAlbaranesClienteClient_Intf, uDetallesAlbaranClienteController,
+// uBizDetallesAlbaranCliente, uRecibosClienteController, uBizRecibosCliente,
+
+ uFacturasProformaReportController, uDataModuleRegistroCorreos,
+ DateUtils, Forms, uFormasPagoController, uBizFormasPago, uIEditorElegirFacturasProforma,
+ uIntegerListUtils,
+ uSistemaFunc, uDialogElegirEMail, uEMailUtils, Dialogs, uStringsUtils,
+ uROXMLIntf, uIDialogListaFacturasProformaEnvioEMail;
+
+
+{procedure CopiarArticulosPedido(AOrigen: IBizDetallesPedidoCliente;
+ ADestino : IBizDetallesFacturaProforma);
+var
+ i : integer;
+ ADetallesController : IDetallesFacturaProformaController;
+begin
+ if not Assigned(AOrigen) then
+ raise Exception.Create ('Origen no asignado (CopiarArticulosPedido)');
+
+ if not Assigned(ADestino) then
+ raise Exception.Create ('Destino no asignado (CopiarArticulosPedido)');
+
+ if not AOrigen.DataTable.Active then
+ AOrigen.DataTable.Active := True;
+
+ if not ADestino.DataTable.Active then
+ ADestino.DataTable.Active := True;
+
+ ADetallesController := TDetallesFacturaProformaController.Create;
+ try
+ //OJO IMPORTANTE
+ //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para
+ //obligarle siempre a recalcular los detalles una sola vez
+ ADetallesController.BeginUpdate(ADestino);
+
+ AOrigen.DataTable.First;
+ for i := 0 to AOrigen.DataTable.RecordCount - 1 do
+ begin
+ ADetallesController.Add(ADestino, TIPO_DETALLE_CONCEPTO);
+ ADestino.Edit;
+ ADestino.REFERENCIA := AOrigen.REFERENCIA;
+ if AOrigen.ID_ARTICULO > 0 then
+ ADestino.ID_ARTICULO := AOrigen.ID_ARTICULO;
+ ADestino.CONCEPTO := AOrigen.CONCEPTO;
+ ADestino.CANTIDAD := AOrigen.CANTIDAD;
+ ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD;
+ ADestino.IMPORTE_TOTAL := AOrigen.IMPORTE_TOTAL;
+ ADestino.DESCUENTO := AOrigen.DESCUENTO;
+ ADestino.IMPORTE_PORTE := AOrigen.IMPORTE_PORTE;
+ ADestino.VISIBLE := AOrigen.VISIBLE;
+ ADestino.REFERENCIA_PROVEEDOR := AOrigen.REFERENCIA_PROVEEDOR;
+ ADestino.Post;
+ AOrigen.Next;
+ end;
+ finally
+ ADetallesController.EndUpdate(ADestino);
+ ADetallesController := NIL;
+ end;
+end;}
+
+
+
+{ TFacturasProformaController }
+
+function TFacturasProformaController.Anadir(AFactura: IBizFacturaProforma) : Boolean;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada (Anadir)');
+ AFactura.Insert;
+ Result := True;
+end;
+
+function TFacturasProformaController.AnadirAbono(AFactura: IBizFacturaProforma): Boolean;
+begin
+ Anadir(AFactura);
+ Result := True;
+end;
+
+{
+function TFacturasProformaController.Anadir(AFacturas: IBizFacturaProforma;
+ AListaAlbaranes: IBizAlbaranCliente): Boolean;
+var
+ AFacturaActual : IBizFacturaProforma;
+ AAlbaranesController : IAlbaranesClienteController;
+ I: Integer;
+ bEnEdicion : Boolean;
+begin
+ // ATENCIÓN!!! AFacturas tiene que estar vacio para no pisar facturas
+ // ya generadas.
+ if not Assigned(AFacturas) then
+ raise Exception.Create ('Factura no asignada (Anadir)');
+
+ if not Assigned(AListaAlbaranes) then
+ raise Exception.Create ('Albaranes no asignados (Anadir)');
+
+ if not AFacturas.DataTable.Active then
+ AFacturas.DataTable.Active := True;
+
+ if not AListaAlbaranes.DataTable.Active then
+ AListaAlbaranes.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ Application.ProcessMessages;
+
+ AAlbaranesController := TAlbaranesClienteController.Create;
+ try
+ // Ordenar por fecha de albaran
+ AListaAlbaranes.DataTable.Sort([fld_AlbaranesClienteFECHA_ALBARAN], [uDADataTable.sdAscending]);
+ AListaAlbaranes.First;
+ for I := 0 to AListaAlbaranes.DataTable.RecordCount - 1 do
+ begin
+ AListaAlbaranes._Cliente := NIL;
+ AFacturaActual := NIL;
+
+ // Busco si hay alguna factura ya hecha de ese cliente
+ AFacturas.DataTable.First;
+ if AFacturas.DataTable.Locate(fld_FacturasProformaID_CLIENTE, AListaAlbaranes.ID_CLIENTE, []) then
+ begin
+ AFacturaActual := AFacturas;
+ RecuperarCliente(AFacturaActual);
+ AFacturaActual.Cliente.DataTable.Active := True;
+ end
+ else begin
+ // No hay factura de ese cliente. Creo una nueva
+ Anadir(AFacturas);
+ AAlbaranesController.RecuperarCliente(AListaAlbaranes);
+ AListaAlbaranes.Cliente.DataTable.Active := True;
+ AFacturas.Cliente := AListaAlbaranes.Cliente;
+
+ //Si el albaran es de tipo devolución hacemos la factura de tipo abono
+ if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
+ begin
+ bEnEdicion := (AFacturas.DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ AFacturas.Edit;
+ AFacturas.TIPO := CTE_TIPO_ABONO;
+ AFacturas.Post;
+ if bEnEdicion then
+ AFacturas.Edit;
+ end;
+
+ AFacturaActual := AFacturas;
+ end;
+
+ // Ya tengo la factura. Le añado los conceptos del albarán
+ AFacturaActual.Detalles.DataTable.Last;
+ // Añado el título
+ Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := 'Albarán ' + AListaAlbaranes.REFERENCIA + ' del ' + DateToStr(AListaAlbaranes.FECHA_ALBARAN);
+ Post;
+ end;
+ // Añado el contenido del albarán
+ CopiarArticulosAlbaran(AListaAlbaranes.Detalles, AFacturaActual.Detalles);
+
+ Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := 'Porte del albarán';
+ CANTIDAD := 1;
+ IMPORTE_UNIDAD := AListaAlbaranes.IMPORTE_PORTE;
+ Post;
+ end;
+
+ // Añado el resumen
+ Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := 'Total del albarán ' + AListaAlbaranes.REFERENCIA;
+ Post;
+ end;
+
+ // Añado una línea en blanco
+ Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := '';
+ Post;
+ end;
+
+ // Guardo la factura que acabo de generar o editar
+ AFacturaActual.CalcularImporteTotal;
+ Self.Guardar(AFacturaActual);
+ // Asocio la factura con el albarán
+ AListaAlbaranes.Edit;
+ AListaAlbaranes.ID_FACTURA := AFacturaActual.ID;
+ AListaAlbaranes.Post;
+ AAlbaranesController.Guardar(AListaAlbaranes);
+
+ AListaAlbaranes.Next;
+ end;
+ Result := True;
+ finally
+ AAlbaranesController := NIL;
+ HideHourglassCursor
+ end;
+end;
+}
+
+{function TFacturasProformaController.Anadir(AFactura: IBizFacturaProforma;
+ const IDPedido: Integer): Boolean;
+var
+ APedidosController : IPedidosClienteController;
+ APedido : IBizPedidoCliente;
+begin
+ Result := False;
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada (Anadir)');
+
+ if (IDPedido < 0) or (IDPedido = 0) then
+ raise Exception.Create (Format('ID de pedido (%d) incorrecto (Anadir)', [IDPedido]));
+
+ if not AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ Application.ProcessMessages;
+
+ APedido := NIL;
+ APedidosController := TPedidosClienteController.Create;
+ try
+ APedido := APedidosController.Buscar(IDPedido);
+
+ if not Assigned(APedido) then
+ raise Exception.Create (Format('No se ha encontrado un pedido de cliente con ID %d (Anadir)', [IDPedido]));
+
+ APedido.DataTable.Active := True;
+ APedidosController.RecuperarCliente(APedido);
+ Self.Anadir(AFactura);
+ AFactura.Cliente := APedido.Cliente;
+
+ CopiarArticulosPedido(APedido.Detalles, AFactura.Detalles);
+
+ // Guardo la factura que acabo de generar
+ AFactura.CalcularImporteTotal;
+ Self.Guardar(AFactura);
+
+ Result := True;
+ finally
+ APedido := NIL;
+ APedidosController := NIL;
+ HideHourglassCursor;
+ Application.ProcessMessages;
+ end;
+end;}
+
+
+function TFacturasProformaController.Buscar(const ID: Integer): IBizFacturaProforma;
+begin
+ Result := (FDataModule as IDataModuleFacturasProforma).GetItem(ID);
+ FiltrarEmpresa(Result);
+end;
+
+function TFacturasProformaController.BuscarTodos(
+ const AID_Cliente: Integer): IBizFacturaProforma;
+var
+ Condicion: TDAWhereExpression;
+begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+
+ with Result.DataTable.DynamicWhere do
+ begin
+ // ID_CLIENTE
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProformaID_CLIENTE), NewConstant(AID_Cliente, datInteger), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaController.BuscarTodos: IBizFacturaProforma;
+begin
+ Result := FDataModule.GetItems;
+ FiltrarEmpresa(Result);
+end;
+
+constructor TFacturasProformaController.Create;
+begin
+ inherited;
+ FDataModule := TDataModuleFacturasProforma.Create(Nil);
+ FClienteController := TClientesController.Create;
+ FDetallesController := TDetallesFacturaProformaController.Create;
+ FDetallesController.addObservador(Self);
+end;
+
+function TFacturasProformaController.CreateEditor(const AName: String;
+ const IID: TGUID; out Intf): Boolean;
+begin
+ Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
+end;
+
+function TFacturasProformaController.DarListaAnosFacturas: TStringList;
+begin
+ Result := FDataModule.GetAnosItems;
+end;
+
+procedure TFacturasProformaController.DescartarCambios(AFactura: IBizFacturaProforma);
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada');
+
+ ShowHourglassCursor;
+ try
+ if (AFactura.State in dsEditModes) then
+ AFactura.Cancel;
+
+ AFactura.DataTable.CancelUpdates;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+destructor TFacturasProformaController.Destroy;
+begin
+ FDataModule := Nil;
+ FClienteController := Nil;
+ FDetallesController := Nil;
+ inherited;
+end;
+
+function TFacturasProformaController.Duplicar(AFactura: IBizFacturaProforma): IBizFacturaProforma;
+begin
+ Result := Self._Vacio;
+ ShowHourglassCursor;
+ try
+ DuplicarRegistros(AFactura.DataTable, Result.DataTable, mdrActual);
+ DuplicarRegistros(AFactura.Detalles.DataTable, Result.Detalles.DataTable, mdrTodos);
+
+ // Hay que dejar algunos campos como si fuera una factura nueva
+ Result.Edit;
+ with Result do
+ begin
+ ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
+ USUARIO := AppFactuGES.UsuarioActivo.UserName;
+ REFERENCIA := ''; //Para que se asigne una nueva
+ SITUACION := CTE_PENDIENTE; //Al ser una nueva debe de estar pendiente
+ FECHA_FACTURA := DateOf(Now);
+ end;
+
+ Result.Post;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaController.ValidarFactura(AFactura: IBizFacturaProforma): Boolean;
+var
+ AFormaPago: IBizFormaPago;
+
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada');
+
+ if (AFactura.DataTable.State in dsEditModes) then
+ AFactura.DataTable.Post;
+
+ //Tambien hacemos post de sus tablas hija
+ if (AFactura.Detalles.DataTable.State in dsEditModes) then
+ AFactura.Detalles.DataTable.Post;
+
+ if (AFactura.ID_CLIENTE < 0) or (AFactura.ID_CLIENTE = 0) then
+ // No comprobar el objeto Cliente por que puede fallar la validación
+ // cuando se generan facturas automáticamente.
+{ (not Assigned(AFactura.Cliente)) or
+ (AFactura.Cliente.IsEmpty) then}
+ raise Exception.Create('Debe indicar el cliente de esta factura');
+
+ if (EsFechaVacia(AFactura.FECHA_FACTURA)) then
+ raise Exception.Create('Debe indicar la fecha de esta factura');
+
+ if (AFactura.Detalles.DataTable.RecordCount = 0) then
+ raise Exception.Create('La factura debe tener al menos un concepto en su contenido');
+
+ { Esta validación puede saltar cuando se generan facturas automáticamente
+ por albaranes o pedidos y el cliente no tiene Tipo de IVA puesto. }
+{ if (AFactura.ID_TIPO_IVA = 0) then
+ raise Exception.Create('Debe indicar un tipo de IVA para esta factura');}
+
+ //De esta forma obligaremos siempre a tener un recibo asociado a la factura,
+ //porque si la forma de pago no tiene plazos es obligatorio la fecha de vencimiento
+ with TFormasPagoController.Create do
+ begin
+ try
+ AFormaPago := Buscar(AFactura.ID_FORMA_PAGO);
+ AFormaPago.DataTable.Active := True;
+ if (AFormaPago.Plazos.RecordCount = 0)
+ and (EsFechaVacia(AFactura.FECHA_VENCIMIENTO)) then
+ raise Exception.Create('Debe indicar una fecha de vencimiento para esta factura');
+ finally
+ AFormaPago := NIL;
+ Free;
+ end;
+ end;
+
+
+ { Asegurarse de valores en campos "automáticos" tanto
+ en MODIFICACIÓN como en INSERCIÓN. }
+ AFactura.Edit;
+ try
+ AFactura.USUARIO := AppFactuGES.UsuarioActivo.UserName;
+
+ if Assigned(AFactura.Cliente)
+ and (AFactura.ID_CLIENTE <> AFactura.Cliente.ID) then
+ AFactura.ID_CLIENTE := AFactura.Cliente.ID;
+
+ Result := True;
+ finally
+ AFactura.Post;
+ end;
+end;
+
+procedure TFacturasProformaController.Ver(AFactura: IBizFacturaProforma);
+var
+ AEditor : IEditorFacturaProforma;
+begin
+ AEditor := NIL;
+
+ RecuperarCliente(AFactura);
+ CreateEditor('EditorFacturaProforma', IEditorFacturaProforma, AEditor);
+
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ AEditor.Factura := AFactura;
+
+ //MODO CONSULTAR
+ if not EsModificable(AFactura) then
+ begin
+ SetDataTableReadOnly(AFactura.DataTable, True);
+ AEditor.ReadOnly := True;
+ end;
+
+ AEditor.ShowModal;
+
+ //MODO CONSULTAR (Se deja la tabla como estaba)
+ if AEditor.ReadOnly then
+ SetDataTableReadOnly(AFactura.DataTable, False);
+ finally
+ AEditor.Release;
+ AEditor := NIL;
+ end;
+end;
+
+procedure TFacturasProformaController.VerTodos(AFacturas: IBizFacturaProforma;
+ const AVerModal : Boolean = False; const AWindowCaption: String = '';
+ const AHeaderText: String = '');
+var
+ AEditor : IEditorFacturasProforma;
+begin
+ AEditor := NIL;
+
+ CreateEditor('EditorFacturasProforma', IEditorFacturasProforma, AEditor);
+ if Assigned(AEditor) then
+ try
+ if not EsCadenaVacia(AWindowCaption) then
+ AEditor.WindowCaption := AWindowCaption;
+
+ if not EsCadenaVacia(AHeaderText) then
+ AEditor.HeaderText := AHeaderText;
+
+ AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ AEditor.Facturas := AFacturas;
+ AEditor.MultiSelect := True;
+ if AVerModal then
+ AEditor.ShowModal
+ else
+ AEditor.ShowEmbedded;
+ finally
+ if AVerModal then
+ AEditor.Release;
+ AEditor := Nil;
+ end;
+end;
+
+procedure TFacturasProformaController._AnadirMarcaEnvioCorreo(AFactura: IBizFacturaProforma);
+var
+ ASoloLectura : Boolean;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada (_AnadirMarcaEnvioCorreo)');
+
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ if AnadirMarcaEnvioCorreo(nme_FacturasProforma, AFactura.ID) then
+ begin
+ DesconectarTabla(AFactura.DataTable);
+ try
+ ASoloLectura := AFactura.DataTable.ReadOnly;
+ if ASoloLectura then
+ SetDataTableReadOnly(AFactura.DataTable, False);
+ try
+ AFactura.Edit;
+ AFactura.NUM_CORREOS := AFactura.NUM_CORREOS + 1;
+ AFactura.Post;
+ finally
+ if ASoloLectura then
+ SetDataTableReadOnly(AFactura.DataTable, True);
+ end;
+ finally
+ ConectarTabla(AFactura.DataTable);
+ end;
+ end;
+end;
+
+function TFacturasProformaController._Vacio: IBizFacturaProforma;
+begin
+ Result := Buscar(ID_NULO);
+end;
+
+function TFacturasProformaController.Eliminar(const ID: Integer): Boolean;
+var
+ AFactura : IBizFacturaProforma;
+begin
+ AFactura := Buscar(ID);
+
+ if not Assigned(AFactura) then
+ raise Exception.Create(Format('No se ha encontrado la factura con ID = %d', [ID]));
+
+ Result := Eliminar(AFactura);
+ AFactura := NIL;
+end;
+
+function TFacturasProformaController.ElegirFacturas(AFacturas: IBizFacturaProforma; AMensaje: String;
+ AMultiSelect: Boolean): IBizFacturaProforma;
+var
+ AEditor : IEditorElegirFacturasProforma;
+begin
+ Result := NIL;
+
+ CreateEditor('EditorElegirFacturasProforma', IEditorElegirFacturasProforma, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self;
+ AEditor.Facturas := AFacturas;
+ AEditor.MultiSelect := AMultiSelect;
+ AEditor.Mensaje := AMensaje;
+ if IsPositiveResult(AEditor.ShowModal) then
+ Result := AEditor.FacturasProformaSeleccionados;
+ finally
+ AEditor.Release;
+ AEditor := NIL;
+ end;
+end;
+
+function TFacturasProformaController.Eliminar(AFactura: IBizFacturaProforma; AllItems: Boolean = false): Boolean;
+//En el caso de eliminar almenos un elemento del conjunto se devuelve true
+var
+ bEliminado: Boolean;
+
+begin
+ bEliminado := False;
+
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada');
+
+ ShowHourglassCursor;
+ try
+ if not AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ if (AFactura.State in dsEditModes) then
+ AFactura.Cancel;
+
+ //Siempre eliminaremos el seleccionado
+ if EsEliminable(AFactura) then
+ begin
+ AFactura.Delete;
+ bEliminado := True;
+ end;
+
+ //En el caso de querer eliminar todos los items del objeto AAlbaran
+ if AllItems then
+ begin
+ with AFactura.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ if EsEliminable(AFactura) then
+ begin
+ AFactura.Delete;
+ bEliminado := True
+ end
+ else Next;
+ end;
+ end;
+ end;
+
+ if bEliminado then
+ begin
+ try
+ AFactura.DataTable.ApplyUpdates;
+ Result := True
+ except
+ //En el caso de una factura que tiene recibos con devoluciones hechas no se puede borrar aunque la factura este en situacion de pendiente
+ AFactura.DataTable.CancelUpdates;
+ Result := False;
+ end;
+ end
+ else
+ Result := False;
+
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaController.EnviarEmailFacturas(AFacturas: IBizFacturaProforma): Boolean;
+var
+ ADialog : IDialogListaFacturasProformaEnvioEMail;
+ ARespuesta : Integer;
+begin
+ ADialog := NIL;
+
+ if not Assigned(AFacturas) then
+ raise Exception.Create ('Facturas no asignadas (EnviarFacturasPorEMail)');
+
+ if AFacturas.DataTable.Active then
+ AFacturas.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ try
+ CreateEditor('DialogListaFacturasProformaEnvioEMail', IDialogListaFacturasProformaEnvioEMail, ADialog);
+
+ if Assigned(ADialog) then
+ begin
+ try
+ ADialog.Facturas := AFacturas;
+ ARespuesta := ADialog.ShowModal;
+ Result := (ARespuesta = mrOK)
+ finally
+ ADialog.Release;
+ end;
+ end;
+ finally
+ ADialog := NIL;
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaController.EnviarFacturaPorEMail(
+ AFactura: IBizFacturaProforma; const AEnviarDirectamente: Boolean;
+ const ADireccionEMail, AAsuntoEMail, ATextoEMail: String): Boolean;
+var
+ AReportController : IFacturasProformaReportController;
+ AFicheroTMP : TFileName;
+ AEMail : String;
+ AAsunto : String;
+ AListaEmail : TStringList;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada (EnviarFacturaPorEMail)');
+
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ RecuperarCliente(AFactura);
+ AFactura.Cliente.DataTable.Active := True;
+
+ AFicheroTMP := DarFicheroPDFTemporal(EscapeIllegalChars(AFactura.REFERENCIA));
+
+ if not EsCadenaVacia(ADireccionEMail) then
+ AEMail := ADireccionEMail
+ else begin
+ AListaEmail := TStringList.Create;
+ try
+ if not EsCadenaVacia(AFactura.Cliente.EMAIL_ADMINISTRACION) then
+ AListaEmail.Add(AFactura.Cliente.EMAIL_ADMINISTRACION);
+
+ if not ElegirEMail(AListaEmail, AEMail) then
+ Exit;
+ finally
+ FreeANDNIL(AListaEmail);
+ end;
+ end;
+
+ if not EsCadenaVacia(AAsuntoEMail) then
+ AAsunto := AAsuntoEMail
+ else
+ AAsunto := 'Factura ' + AFactura.REFERENCIA;
+
+ ShowHourglassCursor;
+ Application.ProcessMessages;
+
+ AReportController := TFacturasProformaReportController.Create;
+ try
+ AReportController.ExportToPDF(AFactura.ID, AFicheroTMP);
+ Result := EnviarEMailMAPI(AAsunto, ATextoEMail, AFicheroTMP, '', '', AFactura.Cliente.NOMBRE, AEMail, AEnviarDirectamente);
+ if Result then
+ _AnadirMarcaEnvioCorreo(AFactura);
+ finally
+ SysUtils.DeleteFile(AFicheroTMP);
+ AReportController := NIL;
+ HideHourglassCursor;
+ Application.ProcessMessages;
+ end;
+end;
+
+procedure TFacturasProformaController.GenerarEmailFactura(
+ AFactura: IBizFacturaProforma);
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Facturas no asignadas (GenerarEmailFactura)');
+
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ try
+ RecuperarCliente(AFactura);
+ EnviarFacturaPorEMail(AFactura, False, AFactura.Cliente.EMAIL_ADMINISTRACION);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaController.EsEliminable(AFactura: IBizFacturaProforma): Boolean;
+begin
+ Result := EsModificable(AFactura);
+end;
+
+function TFacturasProformaController.EsModificable(AFactura: IBizFacturaProforma): Boolean;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignado: EsModificable');
+
+ Result := (AFactura.SITUACION = CTE_PENDIENTE);
+end;
+
+procedure TFacturasProformaController.RecalcularImportes(
+ AFactura: IBizFacturaProforma);
+var
+ bEnEdicion : Boolean;
+ ADetallePosAct : Integer;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignado (RecalcularImportes)');
+
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ { Hay que guardar la posición en la que estamos en los detalles por que
+ la asignación de valores a los campos IMPORTE_NETO e IMPORTE_PORTE
+ (ver más adelante) colocan el puntero en la tabla detalle al principio.
+ No he encontrado la razón por la que mueve el puntero. }
+
+ ADetallePosAct := AFactura.Detalles.POSICION;
+
+ bEnEdicion := (AFactura.DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ AFactura.Edit;
+
+ ShowHourglassCursor;
+ try
+ AFactura.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(AFactura.Detalles);
+ AFactura.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(AFactura.Detalles);
+
+ if not bEnEdicion then
+ AFactura.Post;
+ finally
+ HideHourglassCursor;
+ // Restaurar la posición que teníamos en los detalles.
+ FDetallesController.LocalizarPosicion(AFactura.Detalles, ADetallePosAct);
+ end;
+end;
+
+procedure TFacturasProformaController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
+var
+ AFactura : IBizFacturaProforma;
+ ADetalles : IBizDetallesFacturaProforma;
+begin
+ inherited;
+
+ if Supports(ADataTable, IBizDetallesFacturaProforma, ADetalles) and
+ Supports(ADetalles.DataTable.MasterSource.DataTable, IBizFacturaProforma, AFactura) then
+ begin
+ RecalcularImportes(AFactura);
+ end;
+end;
+
+procedure TFacturasProformaController.RecuperarCliente(
+ AFactura: IBizFacturaProforma);
+begin
+ AFactura._Cliente := (FClienteController.Buscar(AFactura.ID_CLIENTE) as IBizCliente);
+end;
+
+function TFacturasProformaController.Existe(const ID: Integer): Boolean;
+var
+ AFactura : IBizFacturaProforma;
+begin
+ try
+ AFactura := Buscar(ID);
+ Result := Assigned(AFactura) and (AFactura.ID = ID);
+ finally
+ AFactura := NIL;
+ end;
+end;
+
+function TFacturasProformaController.ExtraerSeleccionados(AFacturasProforma: IBizFacturaProforma): IBizFacturaProforma;
+var
+ ASeleccionados : IBizFacturaProforma;
+begin
+ ASeleccionados := (Self.Buscar(ID_NULO) as IBizFacturaProforma);
+ CopyDataTableDA5(AFacturasProforma.DataTable, ASeleccionados.DataTable, True);
+ Result := ASeleccionados;
+end;
+
+procedure TFacturasProformaController.FiltrarAno(AFactura: IBizFacturaProforma; ADynWhereDataTable: WideString; const Ano: String);
+var
+ Condicion: TDAWhereExpression;
+ FechaIni: String;
+ FechaFin: String;
+
+begin
+ AFactura.DataTable.DynamicWhere.Clear;
+ AFactura.DataTable.DynamicWhere.Xml := ADynWhereDataTable;
+
+ if (Ano <> 'Todos') then
+ begin
+ // Filtrar las facturas actuales por empresa
+ FechaIni := '01/01/' + Ano;
+ FechaFin := '31/12/' + Ano;
+ with AFactura.DataTable.DynamicWhere do
+ begin
+ // (FECHA_INICIO between FECHA_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProformaFECHA_FACTURA), NewConstant(FechaIni, datString), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasProformaFECHA_FACTURA), NewConstant(FechaFin, datString), dboLessOrEqual), Condicion, dboAnd);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Condicion, Expression, dboAnd);
+ end;
+ end;
+end;
+
+procedure TFacturasProformaController.FiltrarEmpresa(AFactura: IBizFacturaProforma);
+var
+ Condicion: TDAWhereExpression;
+begin
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := False;
+
+ // Filtrar las facturas actuales por empresa
+ with AFactura.DataTable.DynamicWhere do
+ begin
+ // (ID_EMPRESA >= ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProformaID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+end;
+
+procedure TFacturasProformaController.SetClienteController(const Value: IClientesController);
+begin
+ FClienteController := Value;
+end;
+
+procedure TFacturasProformaController.SetDetallesController(const Value: IDetallesFacturaProformaController);
+begin
+ FDetallesController := Value;
+end;
+
+function TFacturasProformaController.Guardar(AFactura: IBizFacturaProforma): Boolean;
+begin
+ Result := False;
+
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignada');
+
+ if not Assigned(FDetallesController) then
+ raise Exception.Create ('Controller detalles no asignado');
+
+ if ValidarFactura(AFactura) then
+ begin
+ ShowHourglassCursor;
+
+ // Asegurarnos de que todos los importes están bien.
+ RecalcularImportes(AFactura);
+
+ try
+ AFactura.DataTable.ApplyUpdates;
+
+ Result := True;
+ finally
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+function TFacturasProformaController.Nuevo(withInsert: Boolean = True): IBizFacturaProforma;
+var
+ AFactura : IBizFacturaProforma;
+begin
+ AFactura := FDataModule.NewItem;
+ FiltrarEmpresa(AFactura);
+ AFactura.DataTable.Active := True;
+ if WithInsert then
+ AFactura.Insert;
+ Result := AFactura;
+end;
+
+procedure TFacturasProformaController.Preview(AFactura: IBizFacturaProforma; AllItems: Boolean = false;
+const VerSello: Boolean = True; const VerCopia: Boolean = True);
+var
+ AReportController : IFacturasProformaReportController;
+ ID_Facturas: TIntegerList;
+
+begin
+ AReportController := TFacturasProformaReportController.Create;
+ ID_Facturas := TIntegerList.Create;
+
+ try
+ //Si deseamos previsualizar todos los items del objeto albaran
+ if AllItems then
+ begin
+ with AFactura.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ ID_Facturas.Add(AFactura.ID);
+ Next;
+ end;
+ end;
+ end
+ //Solo previsualizamos el item seleccionado
+ else
+ ID_Facturas.Add(AFactura.ID);
+
+ AReportController.Preview(ID_Facturas);
+
+ finally
+ AReportController := NIL;
+ FreeANDNIL(ID_Facturas);
+ end;
+end;
+
+function TFacturasProformaController.Print(AFactura: IBizFacturaProforma; AllItems: Boolean = false;
+const VerSello: Boolean = True; const VerCopia: Boolean = True): Boolean;
+var
+ AReportController : IFacturasProformaReportController;
+ ID_Facturas: TIntegerList;
+
+begin
+ Result := False;
+ AReportController := TFacturasProformaReportController.Create;
+ ID_Facturas := TIntegerList.Create;
+
+ try
+ //Si deseamos previsualizar todos los items del objeto albaran
+ if AllItems then
+ begin
+ with AFactura.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ ID_Facturas.Add(AFactura.ID);
+ Next;
+ end;
+ end;
+ end
+ //Solo previsualizamos el item seleccionado
+ else
+ ID_Facturas.Add(AFactura.ID);
+
+ Result := AReportController.Print(ID_Facturas);
+
+ finally
+ AReportController := NIL;
+ FreeANDNIL(ID_Facturas);
+ end;
+end;
+
+function TFacturasProformaController.GetClienteController: IClientesController;
+begin
+ Result := FClienteController;
+end;
+
+function TFacturasProformaController.GetDetallesController: IDetallesFacturaProformaController;
+begin
+ Result := FDetallesController;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Controller/uFacturasProformaReportController.pas b/Source/Modulos/Facturas proforma/Controller/uFacturasProformaReportController.pas
new file mode 100644
index 0000000..bf8c3eb
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Controller/uFacturasProformaReportController.pas
@@ -0,0 +1,144 @@
+unit uFacturasProformaReportController;
+
+interface
+
+uses
+ Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleFacturasProformaReport,
+ uClientesController, uDetallesFacturaProformaController,
+ uBizFacturasProforma, uIntegerListUtils;
+
+type
+ IFacturasProformaReportController = interface(IControllerBase)
+ ['{A0F41767-4FF6-4BAE-9FC9-894DD721D756}']
+ procedure Preview(const AListaID : TIntegerList);
+ function Print(const AListaID : TIntegerList): Boolean;
+ function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
+ end;
+
+ TFacturasProformaReportController = class(TControllerBase, IFacturasProformaReportController)
+ private
+ FDataModule : IDataModuleFacturasProformaReport;
+ function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
+ public
+ constructor Create; override;
+ destructor Destroy; override;
+
+ procedure Preview(const AListaID : TIntegerList);
+ function Print(const AListaID : TIntegerList): Boolean;
+ function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
+ end;
+
+
+implementation
+
+uses
+ uROTypes, uEditorRegistryUtils, uIEditorFacturasProformaPreview,
+ uEditorPreview, uDataModuleFacturasProforma, uEditorBase, cxControls,
+ uStringsUtils, uSistemaFunc, schFacturasProformaClient_Intf;
+
+{ TFacturasProformaReportController }
+
+constructor TFacturasProformaReportController.Create;
+begin
+ inherited;
+ FDataModule := TDataModuleFacturasProforma.Create(Nil);
+end;
+
+function TFacturasProformaReportController.CreateEditor(const AName: String;
+ const IID: TGUID; out Intf): Boolean;
+begin
+ Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
+end;
+
+
+destructor TFacturasProformaReportController.Destroy;
+begin
+ FDataModule := NIL;
+ inherited;
+end;
+
+function TFacturasProformaReportController.ExportToPDF(const AID: Integer; const AFileName: String = ''): Boolean;
+var
+ AStream: Binary;
+begin
+ Result := False;
+ if EsCadenaVacia(AFileName) then
+ Exit;
+
+ ShowHourglassCursor;
+ try
+ AStream := FDataModule.GetRptPDFFactura(AID);
+ try
+ AStream.SaveToFile(AFileName);
+ Result := True;
+ finally
+ FreeAndNil(AStream);
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+procedure TFacturasProformaReportController.Preview(const AListaID : TIntegerList);
+var
+ AStream: Binary;
+ AEditor : IEditorFacturasProformaPreview;
+begin
+ AEditor := NIL;
+
+ ShowHourglassCursor;
+ try
+ AStream := FDataModule.GetRptFacturas(AListaID);
+ try
+ CreateEditor('EditorFacturasProformaPreview', IEditorFacturasProformaPreview, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self;
+ AEditor.ListaID := AListaID;
+ AEditor.LoadFromStream(AStream);
+ AEditor.Preview;
+ finally
+ AEditor.Release;
+ end;
+ finally
+ FreeAndNil(AStream);
+ AEditor := Nil;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasProformaReportController.Print(const AListaID : TIntegerList): Boolean;
+var
+ AStream: Binary;
+ AEditor : IEditorFacturasProformaPreview;
+begin
+ Result := False;
+ AEditor := NIL;
+
+ ShowHourglassCursor;
+ try
+ AStream := FDataModule.GetRptFacturas(AListaID);
+ try
+ CreateEditor('EditorFacturasProformaPreview', IEditorFacturasProformaPreview, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self;
+ AEditor.LoadFromStream(AStream);
+ AEditor.TablaImpresion := nme_FacturasProforma;
+ AEditor.IdTablaImpresion := AListaID.ToString;
+ Result := AEditor.Print;
+ finally
+ AEditor.Release;
+ end;
+ finally
+ FreeAndNil(AStream);
+ AEditor := Nil;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dpk b/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dpk
new file mode 100644
index 0000000..584e567
Binary files /dev/null and b/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dpk differ
diff --git a/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dproj b/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dproj
new file mode 100644
index 0000000..f0d36dc
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Data/FacturasProforma_data.dproj
@@ -0,0 +1,541 @@
+
+
+
+ {38eef566-1895-4bdd-8007-f92f5e32cce6}
+ FacturasProforma_data.dpk
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\..\..\Output\Debug\Cliente\FacturasProforma_data.bpl
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ RELEASE
+
+
+ 7.0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+
+
+ Delphi.Personality
+ Package
+
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0FacturasProforma_data.dpk
+
+
+
+
+ MainSource
+
+
+
+
+ TDAClientDataModule
+
+
+
+
diff --git a/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.dfm b/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.dfm
new file mode 100644
index 0000000..3582fa7
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.dfm
@@ -0,0 +1,416 @@
+inherited DataModuleFacturasProforma: TDataModuleFacturasProforma
+ OnCreate = DAClientDataModuleCreate
+ Height = 318
+ Width = 518
+ object RORemoteService: TRORemoteService
+ Message = dmConexion.ROMessage
+ Channel = dmConexion.ROChannel
+ ServiceName = 'srvFacturasProforma'
+ Left = 48
+ Top = 24
+ end
+ object rda_FacturasProforma: TDARemoteDataAdapter
+ DataStreamer = Bin2DataStreamer
+ GetSchemaCall.RemoteService = RORemoteService
+ GetDataCall.RemoteService = RORemoteService
+ UpdateDataCall.RemoteService = RORemoteService
+ GetScriptsCall.RemoteService = RORemoteService
+ RemoteService = RORemoteService
+ Left = 51
+ Top = 143
+ end
+ object Bin2DataStreamer: TDABin2DataStreamer
+ Left = 48
+ Top = 80
+ end
+ object tbl_FacturasProforma: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_ID'
+ DictionaryEntry = 'FacturasProforma_ID'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_EMPRESA'
+ DictionaryEntry = 'FacturasProforma_ID_EMPRESA'
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_REFERENCIA'
+ DictionaryEntry = 'FacturasProforma_REFERENCIA'
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ DisplayLabel = 'FacturasProforma_FECHA_FACTURA'
+ DictionaryEntry = 'FacturasProforma_FECHA_FACTURA'
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ DisplayLabel = 'FacturasProforma_FECHA_VENCIMIENTO'
+ DictionaryEntry = 'FacturasProforma_FECHA_VENCIMIENTO'
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_SITUACION'
+ DictionaryEntry = 'FacturasProforma_SITUACION'
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_BASE_IMPONIBLE'
+ DictionaryEntry = 'FacturasProforma_BASE_IMPONIBLE'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'FacturasProforma_DESCUENTO'
+ DictionaryEntry = 'FacturasProforma_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_DESCUENTO'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_DESCUENTO'
+ end
+ item
+ Name = 'DESCRIPCION_DESCUENTO'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_DESCRIPCION_DESCUENTO'
+ DictionaryEntry = 'FacturasProforma_DESCRIPCION_DESCUENTO'
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ DisplayLabel = 'FacturasProforma_IVA'
+ DictionaryEntry = 'FacturasProforma_IVA'
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_IVA'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_IVA'
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ DisplayLabel = 'FacturasProforma_RE'
+ DictionaryEntry = 'FacturasProforma_RE'
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_RE'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_RE'
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_TOTAL'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ DisplayLabel = 'FacturasProforma_OBSERVACIONES'
+ DictionaryEntry = 'FacturasProforma_OBSERVACIONES'
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_CLIENTE'
+ DictionaryEntry = 'FacturasProforma_ID_CLIENTE'
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'FacturasProforma_NIF_CIF'
+ DictionaryEntry = 'FacturasProforma_NIF_CIF'
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_NOMBRE'
+ DictionaryEntry = 'FacturasProforma_NOMBRE'
+ end
+ item
+ Name = 'ID_DIRECCION'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_DIRECCION'
+ DictionaryEntry = 'FacturasProforma_ID_DIRECCION'
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_CALLE'
+ DictionaryEntry = 'FacturasProforma_CALLE'
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_POBLACION'
+ DictionaryEntry = 'FacturasProforma_POBLACION'
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_PROVINCIA'
+ DictionaryEntry = 'FacturasProforma_PROVINCIA'
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DisplayLabel = 'FacturasProforma_CODIGO_POSTAL'
+ DictionaryEntry = 'FacturasProforma_CODIGO_POSTAL'
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ DisplayLabel = 'FacturasProforma_FECHA_ALTA'
+ DictionaryEntry = 'FacturasProforma_FECHA_ALTA'
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ DisplayLabel = 'FacturasProforma_FECHA_MODIFICACION'
+ DictionaryEntry = 'FacturasProforma_FECHA_MODIFICACION'
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ DisplayLabel = 'FacturasProforma_USUARIO'
+ DictionaryEntry = 'FacturasProforma_USUARIO'
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_FORMA_PAGO'
+ DictionaryEntry = 'FacturasProforma_ID_FORMA_PAGO'
+ end
+ item
+ Name = 'RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ DisplayLabel = 'FacturasProforma_RECARGO_EQUIVALENCIA'
+ DictionaryEntry = 'FacturasProforma_RECARGO_EQUIVALENCIA'
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_TIPO_IVA'
+ DictionaryEntry = 'FacturasProforma_ID_TIPO_IVA'
+ end
+ item
+ Name = 'IMPORTE_NETO'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_NETO'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_NETO'
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_IMPORTE_PORTE'
+ DictionaryEntry = 'FacturasProforma_IMPORTE_PORTE'
+ end
+ item
+ Name = 'NUM_COPIAS'
+ DataType = datSmallInt
+ DisplayLabel = 'FacturasProforma_NUM_COPIAS'
+ DictionaryEntry = 'FacturasProforma_NUM_COPIAS'
+ end
+ item
+ Name = 'NUM_CORREOS'
+ DataType = datSmallInt
+ DisplayLabel = 'FacturasProforma_NUM_CORREOS'
+ DictionaryEntry = 'FacturasProforma_NUM_CORREOS'
+ end
+ item
+ Name = 'DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_DATOS_BANCARIOS'
+ DictionaryEntry = 'FacturasProforma_DATOS_BANCARIOS'
+ end
+ item
+ Name = 'ID_PEDIDO'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_PEDIDO'
+ DictionaryEntry = 'FacturasProforma_ID_PEDIDO'
+ end
+ item
+ Name = 'ID_FACTURA_FINAL'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_ID_FACTURA_FINAL'
+ DictionaryEntry = 'FacturasProforma_ID_FACTURA_FINAL'
+ end>
+ Params = <>
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_FacturasProforma
+ LogicalName = 'FacturasProforma'
+ IndexDefs = <>
+ Left = 368
+ Top = 80
+ end
+ object ds_FacturasProforma: TDADataSource
+ DataSet = tbl_FacturasProforma.Dataset
+ DataTable = tbl_FacturasProforma
+ Left = 368
+ Top = 24
+ end
+ object tbl_FacturasProforma_Detalles: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_DETALLES_ID'
+ LogChanges = False
+ ReadOnly = True
+ ServerCalculated = True
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_Detalles_ID_FACTURA'
+ DictionaryEntry = 'FacturasProforma_Detalles_ID_FACTURA'
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_Detalles_POSICION'
+ DictionaryEntry = 'FacturasProforma_Detalles_POSICION'
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ DisplayLabel = 'FacturasProforma_Detalles_TIPO_DETALLE'
+ DictionaryEntry = 'FacturasProforma_Detalles_TIPO_DETALLE'
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ DisplayLabel = 'FacturasProforma_Detalles_CONCEPTO'
+ DictionaryEntry = 'FacturasProforma_Detalles_CONCEPTO'
+ end
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_Detalles_CANTIDAD'
+ DictionaryEntry = 'FacturasProforma_Detalles_CANTIDAD'
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_Detalles_UNIDAD_MEDIDA'
+ DictionaryEntry = 'FacturasProforma_Detalles_UNIDAD_MEDIDA'
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_Detalles_IMPORTE_UNIDAD'
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_UNIDAD'
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_Detalles_IMPORTE_TOTAL'
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ DisplayLabel = 'FacturasProforma_Detalles_VISIBLE'
+ DictionaryEntry = 'FacturasProforma_Detalles_VISIBLE'
+ end
+ item
+ Name = 'ID_ARTICULO'
+ DataType = datInteger
+ DisplayLabel = 'FacturasProforma_Detalles_ID_ARTICULO'
+ DictionaryEntry = 'FacturasProforma_Detalles_ID_ARTICULO'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'FacturasProforma_Detalles_DESCUENTO'
+ DictionaryEntry = 'FacturasProforma_Detalles_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ DisplayLabel = 'FacturasProforma_Detalles_IMPORTE_PORTE'
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_PORTE'
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_Detalles_REFERENCIA'
+ DictionaryEntry = 'FacturasProforma_Detalles_REFERENCIA'
+ end
+ item
+ Name = 'REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'FacturasProforma_Detalles_REFERENCIA_PROVEEDOR'
+ DictionaryEntry = 'FacturasProforma_Detalles_REFERENCIA_PROVEEDOR'
+ end>
+ Params = <>
+ MasterMappingMode = mmWhere
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_FacturasProforma
+ MasterSource = ds_FacturasProforma
+ MasterFields = 'ID'
+ DetailFields = 'ID_FACTURA'
+ LogicalName = 'FacturasProforma_Detalles'
+ IndexDefs = <>
+ Left = 368
+ Top = 224
+ end
+ object ds_FacturasProforma_Detalles: TDADataSource
+ DataSet = tbl_FacturasProforma_Detalles.Dataset
+ DataTable = tbl_FacturasProforma_Detalles
+ Left = 368
+ Top = 176
+ end
+ object tbl_ListaAnosFacturas: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datString
+ Size = 254
+ end>
+ Params = <>
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_FacturasProforma
+ LogicalName = 'ListaAnosFacturas'
+ IndexDefs = <>
+ Left = 176
+ Top = 72
+ end
+ object ds_ListaAnosFacturas: TDADataSource
+ DataSet = tbl_ListaAnosFacturas.Dataset
+ DataTable = tbl_ListaAnosFacturas
+ Left = 176
+ Top = 24
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.pas b/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.pas
new file mode 100644
index 0000000..dcf2fa2
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Data/uDataModuleFacturasProforma.pas
@@ -0,0 +1,180 @@
+unit uDataModuleFacturasProforma;
+
+interface
+
+uses
+ SysUtils, Classes, DB, uDADataTable, uDABINAdapter,
+ uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes,
+ uRORemoteService, uROClient, uROBinMessage,
+
+ uIDataModuleFacturasProforma, uBizFacturasProforma, uBizDetallesFacturaProforma,
+ uDADesigntimeCall, uDataModuleBase, uDAInterfaces, uDAMemDataTable,
+ uDADataStreamer, uDABin2DataStreamer, uDARemoteDataAdapter, uIntegerListUtils,
+ uIDataModuleFacturasProformaReport;
+
+type
+ TDataModuleFacturasProforma = class(TDataModuleBase, IDataModuleFacturasProforma, IDataModuleFacturasProformaReport)
+ RORemoteService: TRORemoteService;
+ rda_FacturasProforma: TDARemoteDataAdapter;
+ Bin2DataStreamer: TDABin2DataStreamer;
+ tbl_FacturasProforma: TDAMemDataTable;
+ ds_FacturasProforma: TDADataSource;
+ tbl_FacturasProforma_Detalles: TDAMemDataTable;
+ ds_FacturasProforma_Detalles: TDADataSource;
+ tbl_ListaAnosFacturas: TDAMemDataTable;
+ ds_ListaAnosFacturas: TDADataSource;
+ procedure DAClientDataModuleCreate(Sender: TObject);
+ private
+ function _GetDetalles : IBizDetallesFacturaProforma;
+ public
+ function GetAnosItems : TStringList;
+ function GetItems : IBizFacturaProforma;
+ function GetItem(const ID : Integer) : IBizFacturaProforma;
+ function NewItem : IBizFacturaProforma;
+
+ // Report
+ function GetRptFacturas(const AListaID: TIntegerList): Binary;
+ function GetRptPDFFactura(const AID: Integer): Binary;
+ end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+ FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls,
+ schFacturasProformaClient_Intf, uBizContactos, Dialogs;
+
+{ TdmPresupuestos }
+
+procedure TDataModuleFacturasProforma.DAClientDataModuleCreate(Sender: TObject);
+begin
+ RORemoteService.Channel := dmConexion.Channel;
+ RORemoteService.Message := dmConexion.Message;
+end;
+
+function TDataModuleFacturasProforma.GetRptFacturas(const AListaID: TIntegerList): Binary;
+var
+ AParam : TIntegerArray;
+begin
+{
+ AParam := AListaID.ToIntegerArray;
+ try
+ Result := (RORemoteService as IsrvFacturasCliente).GenerarInforme(AParam, VerSello, VerCopia);
+ finally
+ FreeANDNIL(AParam);
+ end;
+}
+end;
+
+function TDataModuleFacturasProforma.GetRptPDFFactura(const AID: Integer): Binary;
+var
+ AParam : TIntegerArray;
+begin
+{
+ AParam := TIntegerArray.Create;
+ try
+ AParam.Add(AID);
+ Result := (RORemoteService as IsrvFacturasCliente).GenerarInformeEnPDF(AParam, VerSello);
+ finally
+ FreeANDNIL(AParam);
+ end;
+}
+end;
+
+function TDataModuleFacturasProforma.NewItem: IBizFacturaProforma;
+begin
+ Result := GetItem(ID_NULO)
+end;
+
+function TDataModuleFacturasProforma._GetDetalles: IBizDetallesFacturaProforma;
+var
+ ADetalles : TDAMemDataTable;
+begin
+ ShowHourglassCursor;
+ try
+ ADetalles := CloneDataTable(tbl_FacturasProforma_Detalles);
+ with ADetalles do
+ begin
+ BusinessRulesID := BIZ_CLIENT_DETALLES_FACTURA_PROFORMA;
+ DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
+ end;
+ Result := (ADetalles as IBizDetallesFacturaProforma);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TDataModuleFacturasProforma.GetItem(const ID: Integer): IBizFacturaProforma;
+var
+ Condicion: TDAWhereExpression;
+begin
+ ShowHourglassCursor;
+ try
+ Result := Self.GetItems;
+
+ with Result.DataTable.DynamicWhere do
+ begin
+ // (ID = :ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProformaID), NewConstant(ID, datInteger), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TDataModuleFacturasProforma.GetAnosItems: TStringList;
+var
+ AListaAnos: TStringList;
+begin
+ AListaAnos := TStringList.Create;
+ ShowHourglassCursor;
+ try
+ with tbl_ListaAnosFacturas do
+ begin
+ Open;
+ First;
+ while not eof do
+ begin
+ AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
+ Next;
+ end;
+ Close;
+ end;
+ Result := AListaAnos;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TDataModuleFacturasProforma.GetItems: IBizFacturaProforma;
+var
+ AFactura : TDAMemDataTable;
+begin
+ ShowHourglassCursor;
+ try
+ AFactura := CloneDataTable(tbl_FacturasProforma);
+
+ // EL CAMPO REFERENCIA TIENE QUE SER AUTOREFRESH!!!!!
+ AFactura.FieldByName(fld_FacturasProformaREFERENCIA).ServerAutoRefresh := TRUE;
+
+ AFactura.BusinessRulesID := BIZ_CLIENT_FACTURA_PROFORMA;
+
+ with TBizFacturaProforma(AFactura.BusinessEventsObj) do
+ begin
+ Detalles := _GetDetalles;
+ end;
+
+ Result := (AFactura as IBizFacturaProforma);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/FacturasProforma_Group.groupproj b/Source/Modulos/Facturas proforma/FacturasProforma_Group.groupproj
new file mode 100644
index 0000000..63e428d
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/FacturasProforma_Group.groupproj
@@ -0,0 +1,224 @@
+
+
+ {4fc2fdb5-faa5-4b92-afc6-33a803d10c02}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default.Personality
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProforma.pas b/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProforma.pas
new file mode 100644
index 0000000..c688f7e
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProforma.pas
@@ -0,0 +1,20 @@
+unit uIDataModuleFacturasProforma;
+
+interface
+
+uses
+ SysUtils, Classes, uROTypes,
+ uBizFacturasProforma, uBizDetallesFacturaProforma;
+
+type
+ IDataModuleFacturasProforma = interface
+ ['{2B3BC044-58BD-4082-8614-394424C116E6}']
+ function GetAnosItems : TStringList;
+ function GetItems: IBizFacturaProforma;
+ function GetItem(const ID : Integer) : IBizFacturaProforma;
+ function NewItem : IBizFacturaProforma;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProformaReport.pas b/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProformaReport.pas
new file mode 100644
index 0000000..5da769d
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/Data/uIDataModuleFacturasProformaReport.pas
@@ -0,0 +1,17 @@
+unit uIDataModuleFacturasProformaReport;
+
+interface
+
+uses
+ SysUtils, Classes, uROTypes, uIntegerListUtils;
+
+type
+ IDataModuleFacturasProformaReport = interface
+ ['{94C877A4-443D-4A48-925B-68C594E46B3B}']
+ function GetRptFacturas(const AListaID: TIntegerList): Binary;
+ function GetRptPDFFactura(const AID: Integer): Binary;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dpk b/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dpk
new file mode 100644
index 0000000..32f8879
Binary files /dev/null and b/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dpk differ
diff --git a/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dproj b/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dproj
new file mode 100644
index 0000000..dcd3cf5
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/FacturasProforma_model.dproj
@@ -0,0 +1,562 @@
+
+
+
+ {a7225a8d-f40d-4878-9a27-c5de0e7cb638}
+ FacturasProforma_model.dpk
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\..\..\Output\Debug\Cliente\FacturasProforma_model.bpl
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ RELEASE
+
+
+ 7.0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+
+
+ Delphi.Personality
+ Package
+
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
+ RemObjects Pascal Script - RemObjects SDK 3.0 Integration
+ EurekaLog 5.1.9
+ FacturasProforma_model.dpk
+
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas proforma/Model/schFacturasProformaClient_Intf.pas b/Source/Modulos/Facturas proforma/Model/schFacturasProformaClient_Intf.pas
new file mode 100644
index 0000000..29333a1
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/schFacturasProformaClient_Intf.pas
@@ -0,0 +1,2010 @@
+unit schFacturasProformaClient_Intf;
+
+interface
+
+uses
+ 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_ListaAnosFacturas = '{DDF5317C-9065-43AC-B0CB-915F5FD3A062}';
+ RID_FacturasProforma = '{85BC1F8F-4B69-4951-ACFB-D9D56114212E}';
+ RID_FacturasProforma_Detalles = '{A5610583-C2D4-4B7B-AC06-04716A9AA6CD}';
+
+ { Data table names }
+ nme_ListaAnosFacturas = 'ListaAnosFacturas';
+ nme_FacturasProforma = 'FacturasProforma';
+ nme_FacturasProforma_Detalles = 'FacturasProforma_Detalles';
+
+ { ListaAnosFacturas fields }
+ fld_ListaAnosFacturasANO = 'ANO';
+
+ { ListaAnosFacturas field indexes }
+ idx_ListaAnosFacturasANO = 0;
+
+ { FacturasProforma fields }
+ fld_FacturasProformaID = 'ID';
+ fld_FacturasProformaID_EMPRESA = 'ID_EMPRESA';
+ fld_FacturasProformaREFERENCIA = 'REFERENCIA';
+ fld_FacturasProformaFECHA_FACTURA = 'FECHA_FACTURA';
+ fld_FacturasProformaFECHA_VENCIMIENTO = 'FECHA_VENCIMIENTO';
+ fld_FacturasProformaSITUACION = 'SITUACION';
+ fld_FacturasProformaBASE_IMPONIBLE = 'BASE_IMPONIBLE';
+ fld_FacturasProformaDESCUENTO = 'DESCUENTO';
+ fld_FacturasProformaIMPORTE_DESCUENTO = 'IMPORTE_DESCUENTO';
+ fld_FacturasProformaDESCRIPCION_DESCUENTO = 'DESCRIPCION_DESCUENTO';
+ fld_FacturasProformaIVA = 'IVA';
+ fld_FacturasProformaIMPORTE_IVA = 'IMPORTE_IVA';
+ fld_FacturasProformaRE = 'RE';
+ fld_FacturasProformaIMPORTE_RE = 'IMPORTE_RE';
+ fld_FacturasProformaIMPORTE_TOTAL = 'IMPORTE_TOTAL';
+ fld_FacturasProformaOBSERVACIONES = 'OBSERVACIONES';
+ fld_FacturasProformaID_CLIENTE = 'ID_CLIENTE';
+ fld_FacturasProformaNIF_CIF = 'NIF_CIF';
+ fld_FacturasProformaNOMBRE = 'NOMBRE';
+ fld_FacturasProformaID_DIRECCION = 'ID_DIRECCION';
+ fld_FacturasProformaCALLE = 'CALLE';
+ fld_FacturasProformaPOBLACION = 'POBLACION';
+ fld_FacturasProformaPROVINCIA = 'PROVINCIA';
+ fld_FacturasProformaCODIGO_POSTAL = 'CODIGO_POSTAL';
+ fld_FacturasProformaFECHA_ALTA = 'FECHA_ALTA';
+ fld_FacturasProformaFECHA_MODIFICACION = 'FECHA_MODIFICACION';
+ fld_FacturasProformaUSUARIO = 'USUARIO';
+ fld_FacturasProformaID_FORMA_PAGO = 'ID_FORMA_PAGO';
+ fld_FacturasProformaRECARGO_EQUIVALENCIA = 'RECARGO_EQUIVALENCIA';
+ fld_FacturasProformaID_TIPO_IVA = 'ID_TIPO_IVA';
+ fld_FacturasProformaIMPORTE_NETO = 'IMPORTE_NETO';
+ fld_FacturasProformaIMPORTE_PORTE = 'IMPORTE_PORTE';
+ fld_FacturasProformaNUM_COPIAS = 'NUM_COPIAS';
+ fld_FacturasProformaNUM_CORREOS = 'NUM_CORREOS';
+ fld_FacturasProformaDATOS_BANCARIOS = 'DATOS_BANCARIOS';
+ fld_FacturasProformaID_PEDIDO = 'ID_PEDIDO';
+ fld_FacturasProformaID_FACTURA_FINAL = 'ID_FACTURA_FINAL';
+
+ { FacturasProforma field indexes }
+ idx_FacturasProformaID = 0;
+ idx_FacturasProformaID_EMPRESA = 1;
+ idx_FacturasProformaREFERENCIA = 2;
+ idx_FacturasProformaFECHA_FACTURA = 3;
+ idx_FacturasProformaFECHA_VENCIMIENTO = 4;
+ idx_FacturasProformaSITUACION = 5;
+ idx_FacturasProformaBASE_IMPONIBLE = 6;
+ idx_FacturasProformaDESCUENTO = 7;
+ idx_FacturasProformaIMPORTE_DESCUENTO = 8;
+ idx_FacturasProformaDESCRIPCION_DESCUENTO = 9;
+ idx_FacturasProformaIVA = 10;
+ idx_FacturasProformaIMPORTE_IVA = 11;
+ idx_FacturasProformaRE = 12;
+ idx_FacturasProformaIMPORTE_RE = 13;
+ idx_FacturasProformaIMPORTE_TOTAL = 14;
+ idx_FacturasProformaOBSERVACIONES = 15;
+ idx_FacturasProformaID_CLIENTE = 16;
+ idx_FacturasProformaNIF_CIF = 17;
+ idx_FacturasProformaNOMBRE = 18;
+ idx_FacturasProformaID_DIRECCION = 19;
+ idx_FacturasProformaCALLE = 20;
+ idx_FacturasProformaPOBLACION = 21;
+ idx_FacturasProformaPROVINCIA = 22;
+ idx_FacturasProformaCODIGO_POSTAL = 23;
+ idx_FacturasProformaFECHA_ALTA = 24;
+ idx_FacturasProformaFECHA_MODIFICACION = 25;
+ idx_FacturasProformaUSUARIO = 26;
+ idx_FacturasProformaID_FORMA_PAGO = 27;
+ idx_FacturasProformaRECARGO_EQUIVALENCIA = 28;
+ idx_FacturasProformaID_TIPO_IVA = 29;
+ idx_FacturasProformaIMPORTE_NETO = 30;
+ idx_FacturasProformaIMPORTE_PORTE = 31;
+ idx_FacturasProformaNUM_COPIAS = 32;
+ idx_FacturasProformaNUM_CORREOS = 33;
+ idx_FacturasProformaDATOS_BANCARIOS = 34;
+ idx_FacturasProformaID_PEDIDO = 35;
+ idx_FacturasProformaID_FACTURA_FINAL = 36;
+
+ { FacturasProforma_Detalles fields }
+ fld_FacturasProforma_DetallesID = 'ID';
+ fld_FacturasProforma_DetallesID_FACTURA = 'ID_FACTURA';
+ fld_FacturasProforma_DetallesPOSICION = 'POSICION';
+ fld_FacturasProforma_DetallesTIPO_DETALLE = 'TIPO_DETALLE';
+ fld_FacturasProforma_DetallesCONCEPTO = 'CONCEPTO';
+ fld_FacturasProforma_DetallesCANTIDAD = 'CANTIDAD';
+ fld_FacturasProforma_DetallesUNIDAD_MEDIDA = 'UNIDAD_MEDIDA';
+ fld_FacturasProforma_DetallesIMPORTE_UNIDAD = 'IMPORTE_UNIDAD';
+ fld_FacturasProforma_DetallesIMPORTE_TOTAL = 'IMPORTE_TOTAL';
+ fld_FacturasProforma_DetallesVISIBLE = 'VISIBLE';
+ fld_FacturasProforma_DetallesID_ARTICULO = 'ID_ARTICULO';
+ fld_FacturasProforma_DetallesDESCUENTO = 'DESCUENTO';
+ fld_FacturasProforma_DetallesIMPORTE_PORTE = 'IMPORTE_PORTE';
+ fld_FacturasProforma_DetallesREFERENCIA = 'REFERENCIA';
+ fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR = 'REFERENCIA_PROVEEDOR';
+
+ { FacturasProforma_Detalles field indexes }
+ idx_FacturasProforma_DetallesID = 0;
+ idx_FacturasProforma_DetallesID_FACTURA = 1;
+ idx_FacturasProforma_DetallesPOSICION = 2;
+ idx_FacturasProforma_DetallesTIPO_DETALLE = 3;
+ idx_FacturasProforma_DetallesCONCEPTO = 4;
+ idx_FacturasProforma_DetallesCANTIDAD = 5;
+ idx_FacturasProforma_DetallesUNIDAD_MEDIDA = 6;
+ idx_FacturasProforma_DetallesIMPORTE_UNIDAD = 7;
+ idx_FacturasProforma_DetallesIMPORTE_TOTAL = 8;
+ idx_FacturasProforma_DetallesVISIBLE = 9;
+ idx_FacturasProforma_DetallesID_ARTICULO = 10;
+ idx_FacturasProforma_DetallesDESCUENTO = 11;
+ idx_FacturasProforma_DetallesIMPORTE_PORTE = 12;
+ idx_FacturasProforma_DetallesREFERENCIA = 13;
+ idx_FacturasProforma_DetallesREFERENCIA_PROVEEDOR = 14;
+
+type
+ { IListaAnosFacturas }
+ IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
+ ['{1046FD4E-10DD-4EA5-81EA-F74D0CA63809}']
+ { Property getters and setters }
+ function GetANOValue: String;
+ procedure SetANOValue(const aValue: String);
+ function GetANOIsNull: Boolean;
+ procedure SetANOIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ANO: String read GetANOValue write SetANOValue;
+ property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull;
+ end;
+
+ { TListaAnosFacturasDataTableRules }
+ TListaAnosFacturasDataTableRules = class(TDADataTableRules, IListaAnosFacturas)
+ private
+ protected
+ { Property getters and setters }
+ function GetANOValue: String; virtual;
+ procedure SetANOValue(const aValue: String); virtual;
+ function GetANOIsNull: Boolean; virtual;
+ procedure SetANOIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ANO: String read GetANOValue write SetANOValue;
+ property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IFacturasProforma }
+ IFacturasProforma = interface(IDAStronglyTypedDataTable)
+ ['{E3F5CD3D-BEB3-4FBE-8D1E-D949C4FDBF1D}']
+ { Property getters and setters }
+ function GetIDValue: Integer;
+ procedure SetIDValue(const aValue: Integer);
+ function GetIDIsNull: Boolean;
+ procedure SetIDIsNull(const aValue: Boolean);
+ function GetID_EMPRESAValue: Integer;
+ procedure SetID_EMPRESAValue(const aValue: Integer);
+ function GetID_EMPRESAIsNull: Boolean;
+ procedure SetID_EMPRESAIsNull(const aValue: Boolean);
+ function GetREFERENCIAValue: String;
+ procedure SetREFERENCIAValue(const aValue: String);
+ function GetREFERENCIAIsNull: Boolean;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean);
+ function GetFECHA_FACTURAValue: DateTime;
+ procedure SetFECHA_FACTURAValue(const aValue: DateTime);
+ function GetFECHA_FACTURAIsNull: Boolean;
+ procedure SetFECHA_FACTURAIsNull(const aValue: Boolean);
+ function GetFECHA_VENCIMIENTOValue: DateTime;
+ procedure SetFECHA_VENCIMIENTOValue(const aValue: DateTime);
+ function GetFECHA_VENCIMIENTOIsNull: Boolean;
+ procedure SetFECHA_VENCIMIENTOIsNull(const aValue: Boolean);
+ function GetSITUACIONValue: String;
+ procedure SetSITUACIONValue(const aValue: String);
+ function GetSITUACIONIsNull: Boolean;
+ procedure SetSITUACIONIsNull(const aValue: Boolean);
+ function GetBASE_IMPONIBLEValue: Currency;
+ procedure SetBASE_IMPONIBLEValue(const aValue: Currency);
+ function GetBASE_IMPONIBLEIsNull: Boolean;
+ procedure SetBASE_IMPONIBLEIsNull(const aValue: Boolean);
+ function GetDESCUENTOValue: Float;
+ procedure SetDESCUENTOValue(const aValue: Float);
+ function GetDESCUENTOIsNull: Boolean;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean);
+ function GetIMPORTE_DESCUENTOValue: Currency;
+ procedure SetIMPORTE_DESCUENTOValue(const aValue: Currency);
+ function GetIMPORTE_DESCUENTOIsNull: Boolean;
+ procedure SetIMPORTE_DESCUENTOIsNull(const aValue: Boolean);
+ function GetDESCRIPCION_DESCUENTOValue: String;
+ procedure SetDESCRIPCION_DESCUENTOValue(const aValue: String);
+ function GetDESCRIPCION_DESCUENTOIsNull: Boolean;
+ procedure SetDESCRIPCION_DESCUENTOIsNull(const aValue: Boolean);
+ function GetIVAValue: Float;
+ procedure SetIVAValue(const aValue: Float);
+ function GetIVAIsNull: Boolean;
+ procedure SetIVAIsNull(const aValue: Boolean);
+ function GetIMPORTE_IVAValue: Currency;
+ procedure SetIMPORTE_IVAValue(const aValue: Currency);
+ function GetIMPORTE_IVAIsNull: Boolean;
+ procedure SetIMPORTE_IVAIsNull(const aValue: Boolean);
+ function GetREValue: Float;
+ procedure SetREValue(const aValue: Float);
+ function GetREIsNull: Boolean;
+ procedure SetREIsNull(const aValue: Boolean);
+ function GetIMPORTE_REValue: Currency;
+ procedure SetIMPORTE_REValue(const aValue: Currency);
+ function GetIMPORTE_REIsNull: Boolean;
+ procedure SetIMPORTE_REIsNull(const aValue: Boolean);
+ function GetIMPORTE_TOTALValue: Currency;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency);
+ function GetIMPORTE_TOTALIsNull: Boolean;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+ function GetOBSERVACIONESValue: IROStrings;
+ function GetOBSERVACIONESIsNull: Boolean;
+ procedure SetOBSERVACIONESIsNull(const aValue: Boolean);
+ function GetID_CLIENTEValue: Integer;
+ procedure SetID_CLIENTEValue(const aValue: Integer);
+ function GetID_CLIENTEIsNull: Boolean;
+ procedure SetID_CLIENTEIsNull(const aValue: Boolean);
+ function GetNIF_CIFValue: String;
+ procedure SetNIF_CIFValue(const aValue: String);
+ function GetNIF_CIFIsNull: Boolean;
+ procedure SetNIF_CIFIsNull(const aValue: Boolean);
+ function GetNOMBREValue: String;
+ procedure SetNOMBREValue(const aValue: String);
+ function GetNOMBREIsNull: Boolean;
+ procedure SetNOMBREIsNull(const aValue: Boolean);
+ function GetID_DIRECCIONValue: Integer;
+ procedure SetID_DIRECCIONValue(const aValue: Integer);
+ function GetID_DIRECCIONIsNull: Boolean;
+ procedure SetID_DIRECCIONIsNull(const aValue: Boolean);
+ function GetCALLEValue: String;
+ procedure SetCALLEValue(const aValue: String);
+ function GetCALLEIsNull: Boolean;
+ procedure SetCALLEIsNull(const aValue: Boolean);
+ function GetPOBLACIONValue: String;
+ procedure SetPOBLACIONValue(const aValue: String);
+ function GetPOBLACIONIsNull: Boolean;
+ procedure SetPOBLACIONIsNull(const aValue: Boolean);
+ function GetPROVINCIAValue: String;
+ procedure SetPROVINCIAValue(const aValue: String);
+ function GetPROVINCIAIsNull: Boolean;
+ procedure SetPROVINCIAIsNull(const aValue: Boolean);
+ function GetCODIGO_POSTALValue: String;
+ procedure SetCODIGO_POSTALValue(const aValue: String);
+ function GetCODIGO_POSTALIsNull: Boolean;
+ procedure SetCODIGO_POSTALIsNull(const aValue: Boolean);
+ function GetFECHA_ALTAValue: DateTime;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime);
+ function GetFECHA_ALTAIsNull: Boolean;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean);
+ function GetFECHA_MODIFICACIONValue: DateTime;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+ function GetFECHA_MODIFICACIONIsNull: Boolean;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+ function GetUSUARIOValue: String;
+ procedure SetUSUARIOValue(const aValue: String);
+ function GetUSUARIOIsNull: Boolean;
+ procedure SetUSUARIOIsNull(const aValue: Boolean);
+ function GetID_FORMA_PAGOValue: Integer;
+ procedure SetID_FORMA_PAGOValue(const aValue: Integer);
+ function GetID_FORMA_PAGOIsNull: Boolean;
+ procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean);
+ function GetRECARGO_EQUIVALENCIAValue: SmallInt;
+ procedure SetRECARGO_EQUIVALENCIAValue(const aValue: SmallInt);
+ function GetRECARGO_EQUIVALENCIAIsNull: Boolean;
+ procedure SetRECARGO_EQUIVALENCIAIsNull(const aValue: Boolean);
+ function GetID_TIPO_IVAValue: Integer;
+ procedure SetID_TIPO_IVAValue(const aValue: Integer);
+ function GetID_TIPO_IVAIsNull: Boolean;
+ procedure SetID_TIPO_IVAIsNull(const aValue: Boolean);
+ function GetIMPORTE_NETOValue: Currency;
+ procedure SetIMPORTE_NETOValue(const aValue: Currency);
+ function GetIMPORTE_NETOIsNull: Boolean;
+ procedure SetIMPORTE_NETOIsNull(const aValue: Boolean);
+ function GetIMPORTE_PORTEValue: Currency;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency);
+ function GetIMPORTE_PORTEIsNull: Boolean;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+ function GetNUM_COPIASValue: SmallInt;
+ procedure SetNUM_COPIASValue(const aValue: SmallInt);
+ function GetNUM_COPIASIsNull: Boolean;
+ procedure SetNUM_COPIASIsNull(const aValue: Boolean);
+ function GetNUM_CORREOSValue: SmallInt;
+ procedure SetNUM_CORREOSValue(const aValue: SmallInt);
+ function GetNUM_CORREOSIsNull: Boolean;
+ procedure SetNUM_CORREOSIsNull(const aValue: Boolean);
+ function GetDATOS_BANCARIOSValue: String;
+ procedure SetDATOS_BANCARIOSValue(const aValue: String);
+ function GetDATOS_BANCARIOSIsNull: Boolean;
+ procedure SetDATOS_BANCARIOSIsNull(const aValue: Boolean);
+ function GetID_PEDIDOValue: Integer;
+ procedure SetID_PEDIDOValue(const aValue: Integer);
+ function GetID_PEDIDOIsNull: Boolean;
+ procedure SetID_PEDIDOIsNull(const aValue: Boolean);
+ function GetID_FACTURA_FINALValue: Integer;
+ procedure SetID_FACTURA_FINALValue(const aValue: Integer);
+ function GetID_FACTURA_FINALIsNull: Boolean;
+ procedure SetID_FACTURA_FINALIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property FECHA_FACTURA: DateTime read GetFECHA_FACTURAValue write SetFECHA_FACTURAValue;
+ property FECHA_FACTURAIsNull: Boolean read GetFECHA_FACTURAIsNull write SetFECHA_FACTURAIsNull;
+ property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue;
+ property FECHA_VENCIMIENTOIsNull: Boolean read GetFECHA_VENCIMIENTOIsNull write SetFECHA_VENCIMIENTOIsNull;
+ property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue;
+ property SITUACIONIsNull: Boolean read GetSITUACIONIsNull write SetSITUACIONIsNull;
+ property BASE_IMPONIBLE: Currency read GetBASE_IMPONIBLEValue write SetBASE_IMPONIBLEValue;
+ property BASE_IMPONIBLEIsNull: Boolean read GetBASE_IMPONIBLEIsNull write SetBASE_IMPONIBLEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property IMPORTE_DESCUENTO: Currency read GetIMPORTE_DESCUENTOValue write SetIMPORTE_DESCUENTOValue;
+ property IMPORTE_DESCUENTOIsNull: Boolean read GetIMPORTE_DESCUENTOIsNull write SetIMPORTE_DESCUENTOIsNull;
+ property DESCRIPCION_DESCUENTO: String read GetDESCRIPCION_DESCUENTOValue write SetDESCRIPCION_DESCUENTOValue;
+ property DESCRIPCION_DESCUENTOIsNull: Boolean read GetDESCRIPCION_DESCUENTOIsNull write SetDESCRIPCION_DESCUENTOIsNull;
+ property IVA: Float read GetIVAValue write SetIVAValue;
+ property IVAIsNull: Boolean read GetIVAIsNull write SetIVAIsNull;
+ property IMPORTE_IVA: Currency read GetIMPORTE_IVAValue write SetIMPORTE_IVAValue;
+ property IMPORTE_IVAIsNull: Boolean read GetIMPORTE_IVAIsNull write SetIMPORTE_IVAIsNull;
+ property RE: Float read GetREValue write SetREValue;
+ property REIsNull: Boolean read GetREIsNull write SetREIsNull;
+ property IMPORTE_RE: Currency read GetIMPORTE_REValue write SetIMPORTE_REValue;
+ property IMPORTE_REIsNull: Boolean read GetIMPORTE_REIsNull write SetIMPORTE_REIsNull;
+ property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue;
+ property OBSERVACIONESIsNull: Boolean read GetOBSERVACIONESIsNull write SetOBSERVACIONESIsNull;
+ property ID_CLIENTE: Integer read GetID_CLIENTEValue write SetID_CLIENTEValue;
+ property ID_CLIENTEIsNull: Boolean read GetID_CLIENTEIsNull write SetID_CLIENTEIsNull;
+ property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue;
+ property NIF_CIFIsNull: Boolean read GetNIF_CIFIsNull write SetNIF_CIFIsNull;
+ property NOMBRE: String read GetNOMBREValue write SetNOMBREValue;
+ property NOMBREIsNull: Boolean read GetNOMBREIsNull write SetNOMBREIsNull;
+ property ID_DIRECCION: Integer read GetID_DIRECCIONValue write SetID_DIRECCIONValue;
+ property ID_DIRECCIONIsNull: Boolean read GetID_DIRECCIONIsNull write SetID_DIRECCIONIsNull;
+ property CALLE: String read GetCALLEValue write SetCALLEValue;
+ property CALLEIsNull: Boolean read GetCALLEIsNull write SetCALLEIsNull;
+ property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue;
+ property POBLACIONIsNull: Boolean read GetPOBLACIONIsNull write SetPOBLACIONIsNull;
+ property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue;
+ property PROVINCIAIsNull: Boolean read GetPROVINCIAIsNull write SetPROVINCIAIsNull;
+ property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue;
+ property CODIGO_POSTALIsNull: Boolean read GetCODIGO_POSTALIsNull write SetCODIGO_POSTALIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue;
+ property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull;
+ property RECARGO_EQUIVALENCIA: SmallInt read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue;
+ property RECARGO_EQUIVALENCIAIsNull: Boolean read GetRECARGO_EQUIVALENCIAIsNull write SetRECARGO_EQUIVALENCIAIsNull;
+ property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue;
+ property ID_TIPO_IVAIsNull: Boolean read GetID_TIPO_IVAIsNull write SetID_TIPO_IVAIsNull;
+ property IMPORTE_NETO: Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue;
+ property IMPORTE_NETOIsNull: Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull;
+ property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull: Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property NUM_COPIAS: SmallInt read GetNUM_COPIASValue write SetNUM_COPIASValue;
+ property NUM_COPIASIsNull: Boolean read GetNUM_COPIASIsNull write SetNUM_COPIASIsNull;
+ property NUM_CORREOS: SmallInt read GetNUM_CORREOSValue write SetNUM_CORREOSValue;
+ property NUM_CORREOSIsNull: Boolean read GetNUM_CORREOSIsNull write SetNUM_CORREOSIsNull;
+ property DATOS_BANCARIOS: String read GetDATOS_BANCARIOSValue write SetDATOS_BANCARIOSValue;
+ property DATOS_BANCARIOSIsNull: Boolean read GetDATOS_BANCARIOSIsNull write SetDATOS_BANCARIOSIsNull;
+ property ID_PEDIDO: Integer read GetID_PEDIDOValue write SetID_PEDIDOValue;
+ property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull;
+ property ID_FACTURA_FINAL: Integer read GetID_FACTURA_FINALValue write SetID_FACTURA_FINALValue;
+ property ID_FACTURA_FINALIsNull: Boolean read GetID_FACTURA_FINALIsNull write SetID_FACTURA_FINALIsNull;
+ end;
+
+ { TFacturasProformaDataTableRules }
+ TFacturasProformaDataTableRules = class(TDADataTableRules, IFacturasProforma)
+ private
+ f_OBSERVACIONES: IROStrings;
+ procedure OBSERVACIONES_OnChange(Sender: TObject);
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ function GetIDIsNull: Boolean; virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetID_EMPRESAValue: Integer; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIAValue: String; virtual;
+ procedure SetREFERENCIAValue(const aValue: String); virtual;
+ function GetREFERENCIAIsNull: Boolean; virtual;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_FACTURAValue: DateTime; virtual;
+ procedure SetFECHA_FACTURAValue(const aValue: DateTime); virtual;
+ function GetFECHA_FACTURAIsNull: Boolean; virtual;
+ procedure SetFECHA_FACTURAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_VENCIMIENTOValue: DateTime; virtual;
+ procedure SetFECHA_VENCIMIENTOValue(const aValue: DateTime); virtual;
+ function GetFECHA_VENCIMIENTOIsNull: Boolean; virtual;
+ procedure SetFECHA_VENCIMIENTOIsNull(const aValue: Boolean); virtual;
+ function GetSITUACIONValue: String; virtual;
+ procedure SetSITUACIONValue(const aValue: String); virtual;
+ function GetSITUACIONIsNull: Boolean; virtual;
+ procedure SetSITUACIONIsNull(const aValue: Boolean); virtual;
+ function GetBASE_IMPONIBLEValue: Currency; virtual;
+ procedure SetBASE_IMPONIBLEValue(const aValue: Currency); virtual;
+ function GetBASE_IMPONIBLEIsNull: Boolean; virtual;
+ procedure SetBASE_IMPONIBLEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_DESCUENTOValue: Currency; virtual;
+ procedure SetIMPORTE_DESCUENTOValue(const aValue: Currency); virtual;
+ function GetIMPORTE_DESCUENTOIsNull: Boolean; virtual;
+ procedure SetIMPORTE_DESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetDESCRIPCION_DESCUENTOValue: String; virtual;
+ procedure SetDESCRIPCION_DESCUENTOValue(const aValue: String); virtual;
+ function GetDESCRIPCION_DESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCRIPCION_DESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIVAValue: Float; virtual;
+ procedure SetIVAValue(const aValue: Float); virtual;
+ function GetIVAIsNull: Boolean; virtual;
+ procedure SetIVAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_IVAValue: Currency; virtual;
+ procedure SetIMPORTE_IVAValue(const aValue: Currency); virtual;
+ function GetIMPORTE_IVAIsNull: Boolean; virtual;
+ procedure SetIMPORTE_IVAIsNull(const aValue: Boolean); virtual;
+ function GetREValue: Float; virtual;
+ procedure SetREValue(const aValue: Float); virtual;
+ function GetREIsNull: Boolean; virtual;
+ procedure SetREIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_REValue: Currency; virtual;
+ procedure SetIMPORTE_REValue(const aValue: Currency); virtual;
+ function GetIMPORTE_REIsNull: Boolean; virtual;
+ procedure SetIMPORTE_REIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_TOTALValue: Currency; virtual;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual;
+ function GetIMPORTE_TOTALIsNull: Boolean; virtual;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual;
+ function GetOBSERVACIONESValue: IROStrings; virtual;
+ function GetOBSERVACIONESIsNull: Boolean; virtual;
+ procedure SetOBSERVACIONESIsNull(const aValue: Boolean); virtual;
+ function GetID_CLIENTEValue: Integer; virtual;
+ procedure SetID_CLIENTEValue(const aValue: Integer); virtual;
+ function GetID_CLIENTEIsNull: Boolean; virtual;
+ procedure SetID_CLIENTEIsNull(const aValue: Boolean); virtual;
+ function GetNIF_CIFValue: String; virtual;
+ procedure SetNIF_CIFValue(const aValue: String); virtual;
+ function GetNIF_CIFIsNull: Boolean; virtual;
+ procedure SetNIF_CIFIsNull(const aValue: Boolean); virtual;
+ function GetNOMBREValue: String; virtual;
+ procedure SetNOMBREValue(const aValue: String); virtual;
+ function GetNOMBREIsNull: Boolean; virtual;
+ procedure SetNOMBREIsNull(const aValue: Boolean); virtual;
+ function GetID_DIRECCIONValue: Integer; virtual;
+ procedure SetID_DIRECCIONValue(const aValue: Integer); virtual;
+ function GetID_DIRECCIONIsNull: Boolean; virtual;
+ procedure SetID_DIRECCIONIsNull(const aValue: Boolean); virtual;
+ function GetCALLEValue: String; virtual;
+ procedure SetCALLEValue(const aValue: String); virtual;
+ function GetCALLEIsNull: Boolean; virtual;
+ procedure SetCALLEIsNull(const aValue: Boolean); virtual;
+ function GetPOBLACIONValue: String; virtual;
+ procedure SetPOBLACIONValue(const aValue: String); virtual;
+ function GetPOBLACIONIsNull: Boolean; virtual;
+ procedure SetPOBLACIONIsNull(const aValue: Boolean); virtual;
+ function GetPROVINCIAValue: String; virtual;
+ procedure SetPROVINCIAValue(const aValue: String); virtual;
+ function GetPROVINCIAIsNull: Boolean; virtual;
+ procedure SetPROVINCIAIsNull(const aValue: Boolean); virtual;
+ function GetCODIGO_POSTALValue: String; virtual;
+ procedure SetCODIGO_POSTALValue(const aValue: String); virtual;
+ function GetCODIGO_POSTALIsNull: Boolean; virtual;
+ procedure SetCODIGO_POSTALIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetID_FORMA_PAGOValue: Integer; virtual;
+ procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual;
+ function GetID_FORMA_PAGOIsNull: Boolean; virtual;
+ procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean); virtual;
+ function GetRECARGO_EQUIVALENCIAValue: SmallInt; virtual;
+ procedure SetRECARGO_EQUIVALENCIAValue(const aValue: SmallInt); virtual;
+ function GetRECARGO_EQUIVALENCIAIsNull: Boolean; virtual;
+ procedure SetRECARGO_EQUIVALENCIAIsNull(const aValue: Boolean); virtual;
+ function GetID_TIPO_IVAValue: Integer; virtual;
+ procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual;
+ function GetID_TIPO_IVAIsNull: Boolean; virtual;
+ procedure SetID_TIPO_IVAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_NETOValue: Currency; virtual;
+ procedure SetIMPORTE_NETOValue(const aValue: Currency); virtual;
+ function GetIMPORTE_NETOIsNull: Boolean; virtual;
+ procedure SetIMPORTE_NETOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_PORTEValue: Currency; virtual;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency); virtual;
+ function GetIMPORTE_PORTEIsNull: Boolean; virtual;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetNUM_COPIASValue: SmallInt; virtual;
+ procedure SetNUM_COPIASValue(const aValue: SmallInt); virtual;
+ function GetNUM_COPIASIsNull: Boolean; virtual;
+ procedure SetNUM_COPIASIsNull(const aValue: Boolean); virtual;
+ function GetNUM_CORREOSValue: SmallInt; virtual;
+ procedure SetNUM_CORREOSValue(const aValue: SmallInt); virtual;
+ function GetNUM_CORREOSIsNull: Boolean; virtual;
+ procedure SetNUM_CORREOSIsNull(const aValue: Boolean); virtual;
+ function GetDATOS_BANCARIOSValue: String; virtual;
+ procedure SetDATOS_BANCARIOSValue(const aValue: String); virtual;
+ function GetDATOS_BANCARIOSIsNull: Boolean; virtual;
+ procedure SetDATOS_BANCARIOSIsNull(const aValue: Boolean); virtual;
+ function GetID_PEDIDOValue: Integer; virtual;
+ procedure SetID_PEDIDOValue(const aValue: Integer); virtual;
+ function GetID_PEDIDOIsNull: Boolean; virtual;
+ procedure SetID_PEDIDOIsNull(const aValue: Boolean); virtual;
+ function GetID_FACTURA_FINALValue: Integer; virtual;
+ procedure SetID_FACTURA_FINALValue(const aValue: Integer); virtual;
+ function GetID_FACTURA_FINALIsNull: Boolean; virtual;
+ procedure SetID_FACTURA_FINALIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property FECHA_FACTURA: DateTime read GetFECHA_FACTURAValue write SetFECHA_FACTURAValue;
+ property FECHA_FACTURAIsNull: Boolean read GetFECHA_FACTURAIsNull write SetFECHA_FACTURAIsNull;
+ property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue;
+ property FECHA_VENCIMIENTOIsNull: Boolean read GetFECHA_VENCIMIENTOIsNull write SetFECHA_VENCIMIENTOIsNull;
+ property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue;
+ property SITUACIONIsNull: Boolean read GetSITUACIONIsNull write SetSITUACIONIsNull;
+ property BASE_IMPONIBLE: Currency read GetBASE_IMPONIBLEValue write SetBASE_IMPONIBLEValue;
+ property BASE_IMPONIBLEIsNull: Boolean read GetBASE_IMPONIBLEIsNull write SetBASE_IMPONIBLEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property IMPORTE_DESCUENTO: Currency read GetIMPORTE_DESCUENTOValue write SetIMPORTE_DESCUENTOValue;
+ property IMPORTE_DESCUENTOIsNull: Boolean read GetIMPORTE_DESCUENTOIsNull write SetIMPORTE_DESCUENTOIsNull;
+ property DESCRIPCION_DESCUENTO: String read GetDESCRIPCION_DESCUENTOValue write SetDESCRIPCION_DESCUENTOValue;
+ property DESCRIPCION_DESCUENTOIsNull: Boolean read GetDESCRIPCION_DESCUENTOIsNull write SetDESCRIPCION_DESCUENTOIsNull;
+ property IVA: Float read GetIVAValue write SetIVAValue;
+ property IVAIsNull: Boolean read GetIVAIsNull write SetIVAIsNull;
+ property IMPORTE_IVA: Currency read GetIMPORTE_IVAValue write SetIMPORTE_IVAValue;
+ property IMPORTE_IVAIsNull: Boolean read GetIMPORTE_IVAIsNull write SetIMPORTE_IVAIsNull;
+ property RE: Float read GetREValue write SetREValue;
+ property REIsNull: Boolean read GetREIsNull write SetREIsNull;
+ property IMPORTE_RE: Currency read GetIMPORTE_REValue write SetIMPORTE_REValue;
+ property IMPORTE_REIsNull: Boolean read GetIMPORTE_REIsNull write SetIMPORTE_REIsNull;
+ property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue;
+ property OBSERVACIONESIsNull: Boolean read GetOBSERVACIONESIsNull write SetOBSERVACIONESIsNull;
+ property ID_CLIENTE: Integer read GetID_CLIENTEValue write SetID_CLIENTEValue;
+ property ID_CLIENTEIsNull: Boolean read GetID_CLIENTEIsNull write SetID_CLIENTEIsNull;
+ property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue;
+ property NIF_CIFIsNull: Boolean read GetNIF_CIFIsNull write SetNIF_CIFIsNull;
+ property NOMBRE: String read GetNOMBREValue write SetNOMBREValue;
+ property NOMBREIsNull: Boolean read GetNOMBREIsNull write SetNOMBREIsNull;
+ property ID_DIRECCION: Integer read GetID_DIRECCIONValue write SetID_DIRECCIONValue;
+ property ID_DIRECCIONIsNull: Boolean read GetID_DIRECCIONIsNull write SetID_DIRECCIONIsNull;
+ property CALLE: String read GetCALLEValue write SetCALLEValue;
+ property CALLEIsNull: Boolean read GetCALLEIsNull write SetCALLEIsNull;
+ property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue;
+ property POBLACIONIsNull: Boolean read GetPOBLACIONIsNull write SetPOBLACIONIsNull;
+ property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue;
+ property PROVINCIAIsNull: Boolean read GetPROVINCIAIsNull write SetPROVINCIAIsNull;
+ property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue;
+ property CODIGO_POSTALIsNull: Boolean read GetCODIGO_POSTALIsNull write SetCODIGO_POSTALIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue;
+ property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull;
+ property RECARGO_EQUIVALENCIA: SmallInt read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue;
+ property RECARGO_EQUIVALENCIAIsNull: Boolean read GetRECARGO_EQUIVALENCIAIsNull write SetRECARGO_EQUIVALENCIAIsNull;
+ property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue;
+ property ID_TIPO_IVAIsNull: Boolean read GetID_TIPO_IVAIsNull write SetID_TIPO_IVAIsNull;
+ property IMPORTE_NETO: Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue;
+ property IMPORTE_NETOIsNull: Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull;
+ property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull: Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property NUM_COPIAS: SmallInt read GetNUM_COPIASValue write SetNUM_COPIASValue;
+ property NUM_COPIASIsNull: Boolean read GetNUM_COPIASIsNull write SetNUM_COPIASIsNull;
+ property NUM_CORREOS: SmallInt read GetNUM_CORREOSValue write SetNUM_CORREOSValue;
+ property NUM_CORREOSIsNull: Boolean read GetNUM_CORREOSIsNull write SetNUM_CORREOSIsNull;
+ property DATOS_BANCARIOS: String read GetDATOS_BANCARIOSValue write SetDATOS_BANCARIOSValue;
+ property DATOS_BANCARIOSIsNull: Boolean read GetDATOS_BANCARIOSIsNull write SetDATOS_BANCARIOSIsNull;
+ property ID_PEDIDO: Integer read GetID_PEDIDOValue write SetID_PEDIDOValue;
+ property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull;
+ property ID_FACTURA_FINAL: Integer read GetID_FACTURA_FINALValue write SetID_FACTURA_FINALValue;
+ property ID_FACTURA_FINALIsNull: Boolean read GetID_FACTURA_FINALIsNull write SetID_FACTURA_FINALIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IFacturasProforma_Detalles }
+ IFacturasProforma_Detalles = interface(IDAStronglyTypedDataTable)
+ ['{F034CF38-F812-40CD-A475-F2E19A2DA211}']
+ { Property getters and setters }
+ function GetIDValue: Integer;
+ procedure SetIDValue(const aValue: Integer);
+ function GetIDIsNull: Boolean;
+ procedure SetIDIsNull(const aValue: Boolean);
+ function GetID_FACTURAValue: Integer;
+ procedure SetID_FACTURAValue(const aValue: Integer);
+ function GetID_FACTURAIsNull: Boolean;
+ procedure SetID_FACTURAIsNull(const aValue: Boolean);
+ function GetPOSICIONValue: Integer;
+ procedure SetPOSICIONValue(const aValue: Integer);
+ function GetPOSICIONIsNull: Boolean;
+ procedure SetPOSICIONIsNull(const aValue: Boolean);
+ function GetTIPO_DETALLEValue: String;
+ procedure SetTIPO_DETALLEValue(const aValue: String);
+ function GetTIPO_DETALLEIsNull: Boolean;
+ procedure SetTIPO_DETALLEIsNull(const aValue: Boolean);
+ function GetCONCEPTOValue: String;
+ procedure SetCONCEPTOValue(const aValue: String);
+ function GetCONCEPTOIsNull: Boolean;
+ procedure SetCONCEPTOIsNull(const aValue: Boolean);
+ function GetCANTIDADValue: Currency;
+ procedure SetCANTIDADValue(const aValue: Currency);
+ function GetCANTIDADIsNull: Boolean;
+ procedure SetCANTIDADIsNull(const aValue: Boolean);
+ function GetUNIDAD_MEDIDAValue: String;
+ procedure SetUNIDAD_MEDIDAValue(const aValue: String);
+ function GetUNIDAD_MEDIDAIsNull: Boolean;
+ procedure SetUNIDAD_MEDIDAIsNull(const aValue: Boolean);
+ function GetIMPORTE_UNIDADValue: Currency;
+ procedure SetIMPORTE_UNIDADValue(const aValue: Currency);
+ function GetIMPORTE_UNIDADIsNull: Boolean;
+ procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean);
+ function GetIMPORTE_TOTALValue: Currency;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency);
+ function GetIMPORTE_TOTALIsNull: Boolean;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+ function GetVISIBLEValue: SmallInt;
+ procedure SetVISIBLEValue(const aValue: SmallInt);
+ function GetVISIBLEIsNull: Boolean;
+ procedure SetVISIBLEIsNull(const aValue: Boolean);
+ function GetID_ARTICULOValue: Integer;
+ procedure SetID_ARTICULOValue(const aValue: Integer);
+ function GetID_ARTICULOIsNull: Boolean;
+ procedure SetID_ARTICULOIsNull(const aValue: Boolean);
+ function GetDESCUENTOValue: Float;
+ procedure SetDESCUENTOValue(const aValue: Float);
+ function GetDESCUENTOIsNull: Boolean;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean);
+ function GetIMPORTE_PORTEValue: Currency;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency);
+ function GetIMPORTE_PORTEIsNull: Boolean;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+ function GetREFERENCIAValue: String;
+ procedure SetREFERENCIAValue(const aValue: String);
+ function GetREFERENCIAIsNull: Boolean;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean);
+ function GetREFERENCIA_PROVEEDORValue: String;
+ procedure SetREFERENCIA_PROVEEDORValue(const aValue: String);
+ function GetREFERENCIA_PROVEEDORIsNull: Boolean;
+ procedure SetREFERENCIA_PROVEEDORIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue;
+ property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull;
+ property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue;
+ property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull;
+ property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue;
+ property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull;
+ property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue;
+ property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull;
+ property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
+ property UNIDAD_MEDIDA: String read GetUNIDAD_MEDIDAValue write SetUNIDAD_MEDIDAValue;
+ property UNIDAD_MEDIDAIsNull: Boolean read GetUNIDAD_MEDIDAIsNull write SetUNIDAD_MEDIDAIsNull;
+ property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue;
+ property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull;
+ property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue;
+ property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull;
+ property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue;
+ property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull: Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue;
+ property REFERENCIA_PROVEEDORIsNull: Boolean read GetREFERENCIA_PROVEEDORIsNull write SetREFERENCIA_PROVEEDORIsNull;
+ end;
+
+ { TFacturasProforma_DetallesDataTableRules }
+ TFacturasProforma_DetallesDataTableRules = class(TDADataTableRules, IFacturasProforma_Detalles)
+ private
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ function GetIDIsNull: Boolean; virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetID_FACTURAValue: Integer; virtual;
+ procedure SetID_FACTURAValue(const aValue: Integer); virtual;
+ function GetID_FACTURAIsNull: Boolean; virtual;
+ procedure SetID_FACTURAIsNull(const aValue: Boolean); virtual;
+ function GetPOSICIONValue: Integer; virtual;
+ procedure SetPOSICIONValue(const aValue: Integer); virtual;
+ function GetPOSICIONIsNull: Boolean; virtual;
+ procedure SetPOSICIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_DETALLEValue: String; virtual;
+ procedure SetTIPO_DETALLEValue(const aValue: String); virtual;
+ function GetTIPO_DETALLEIsNull: Boolean; virtual;
+ procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual;
+ function GetCONCEPTOValue: String; virtual;
+ procedure SetCONCEPTOValue(const aValue: String); virtual;
+ function GetCONCEPTOIsNull: Boolean; virtual;
+ procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual;
+ function GetCANTIDADValue: Currency; virtual;
+ procedure SetCANTIDADValue(const aValue: Currency); virtual;
+ function GetCANTIDADIsNull: Boolean; virtual;
+ procedure SetCANTIDADIsNull(const aValue: Boolean); virtual;
+ function GetUNIDAD_MEDIDAValue: String; virtual;
+ procedure SetUNIDAD_MEDIDAValue(const aValue: String); virtual;
+ function GetUNIDAD_MEDIDAIsNull: Boolean; virtual;
+ procedure SetUNIDAD_MEDIDAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_UNIDADValue: Currency; virtual;
+ procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual;
+ function GetIMPORTE_UNIDADIsNull: Boolean; virtual;
+ procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_TOTALValue: Currency; virtual;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual;
+ function GetIMPORTE_TOTALIsNull: Boolean; virtual;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual;
+ function GetVISIBLEValue: SmallInt; virtual;
+ procedure SetVISIBLEValue(const aValue: SmallInt); virtual;
+ function GetVISIBLEIsNull: Boolean; virtual;
+ procedure SetVISIBLEIsNull(const aValue: Boolean); virtual;
+ function GetID_ARTICULOValue: Integer; virtual;
+ procedure SetID_ARTICULOValue(const aValue: Integer); virtual;
+ function GetID_ARTICULOIsNull: Boolean; virtual;
+ procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_PORTEValue: Currency; virtual;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency); virtual;
+ function GetIMPORTE_PORTEIsNull: Boolean; virtual;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIAValue: String; virtual;
+ procedure SetREFERENCIAValue(const aValue: String); virtual;
+ function GetREFERENCIAIsNull: Boolean; virtual;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVEEDORValue: String; virtual;
+ procedure SetREFERENCIA_PROVEEDORValue(const aValue: String); virtual;
+ function GetREFERENCIA_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVEEDORIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue;
+ property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull;
+ property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue;
+ property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull;
+ property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue;
+ property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull;
+ property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue;
+ property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull;
+ property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
+ property UNIDAD_MEDIDA: String read GetUNIDAD_MEDIDAValue write SetUNIDAD_MEDIDAValue;
+ property UNIDAD_MEDIDAIsNull: Boolean read GetUNIDAD_MEDIDAIsNull write SetUNIDAD_MEDIDAIsNull;
+ property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue;
+ property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull;
+ property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue;
+ property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull;
+ property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue;
+ property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull: Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue;
+ property REFERENCIA_PROVEEDORIsNull: Boolean read GetREFERENCIA_PROVEEDORIsNull write SetREFERENCIA_PROVEEDORIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
+implementation
+
+uses Variants, uROBinaryHelpers;
+
+{ TListaAnosFacturasDataTableRules }
+constructor TListaAnosFacturasDataTableRules.Create(aDataTable: TDADataTable);
+begin
+ inherited;
+end;
+
+destructor TListaAnosFacturasDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+function TListaAnosFacturasDataTableRules.GetANOValue: String;
+begin
+ result := DataTable.Fields[idx_ListaAnosFacturasANO].AsString;
+end;
+
+procedure TListaAnosFacturasDataTableRules.SetANOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ListaAnosFacturasANO].AsString := aValue;
+end;
+
+function TListaAnosFacturasDataTableRules.GetANOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ListaAnosFacturasANO].IsNull;
+end;
+
+procedure TListaAnosFacturasDataTableRules.SetANOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ListaAnosFacturasANO].AsVariant := Null;
+end;
+
+
+{ TFacturasProformaDataTableRules }
+constructor TFacturasProformaDataTableRules.Create(aDataTable: TDADataTable);
+var
+ StrList: TStringList;
+begin
+ inherited;
+
+ StrList := TStringList.Create;
+ StrList.OnChange := OBSERVACIONES_OnChange;
+ f_OBSERVACIONES := NewROStrings(StrList,True);
+end;
+
+destructor TFacturasProformaDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TFacturasProformaDataTableRules.OBSERVACIONES_OnChange(Sender: TObject);
+begin
+ if DataTable.Editing then DataTable.Fields[idx_FacturasProformaOBSERVACIONES].AsVariant := TStringList(Sender).Text;
+end;
+
+function TFacturasProformaDataTableRules.GetIDValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIDValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIDIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_EMPRESAValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_EMPRESA].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_EMPRESA].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_EMPRESAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_EMPRESA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_EMPRESA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetREFERENCIAValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaREFERENCIA].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetREFERENCIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaREFERENCIA].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetREFERENCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaREFERENCIA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaREFERENCIA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_FACTURAValue: DateTime;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_FACTURA].AsDateTime;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_FACTURAValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_FacturasProformaFECHA_FACTURA].AsDateTime := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_FACTURAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_FACTURA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_FACTURAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaFECHA_FACTURA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_VENCIMIENTOValue: DateTime;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_VENCIMIENTO].AsDateTime;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_VENCIMIENTOValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_FacturasProformaFECHA_VENCIMIENTO].AsDateTime := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_VENCIMIENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_VENCIMIENTO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_VENCIMIENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaFECHA_VENCIMIENTO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetSITUACIONValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaSITUACION].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetSITUACIONValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaSITUACION].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetSITUACIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaSITUACION].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetSITUACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaSITUACION].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetBASE_IMPONIBLEValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaBASE_IMPONIBLE].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetBASE_IMPONIBLEValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaBASE_IMPONIBLE].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetBASE_IMPONIBLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaBASE_IMPONIBLE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetBASE_IMPONIBLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaBASE_IMPONIBLE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetDESCUENTOValue: Float;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDESCUENTO].AsFloat;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_FacturasProformaDESCUENTO].AsFloat := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetDESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDESCUENTO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaDESCUENTO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_DESCUENTOValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_DESCUENTO].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_DESCUENTOValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_DESCUENTO].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_DESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_DESCUENTO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_DESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_DESCUENTO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetDESCRIPCION_DESCUENTOValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDESCRIPCION_DESCUENTO].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDESCRIPCION_DESCUENTOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaDESCRIPCION_DESCUENTO].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetDESCRIPCION_DESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDESCRIPCION_DESCUENTO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDESCRIPCION_DESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaDESCRIPCION_DESCUENTO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIVAValue: Float;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIVA].AsFloat;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIVAValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_FacturasProformaIVA].AsFloat := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIVAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIVA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIVA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_IVAValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_IVA].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_IVAValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_IVA].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_IVAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_IVA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_IVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_IVA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetREValue: Float;
+begin
+ result := DataTable.Fields[idx_FacturasProformaRE].AsFloat;
+end;
+
+procedure TFacturasProformaDataTableRules.SetREValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_FacturasProformaRE].AsFloat := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetREIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaRE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetREIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaRE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_REValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_RE].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_REValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_RE].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_REIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_RE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_REIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_RE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_TOTALValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_TOTAL].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_TOTALValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_TOTAL].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_TOTALIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_TOTAL].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_TOTAL].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetOBSERVACIONESValue: IROStrings;
+begin
+ result := f_OBSERVACIONES;
+ result.Text := DataTable.Fields[idx_FacturasProformaOBSERVACIONES].AsString;
+end;
+
+function TFacturasProformaDataTableRules.GetOBSERVACIONESIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaOBSERVACIONES].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetOBSERVACIONESIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaOBSERVACIONES].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_CLIENTEValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_CLIENTE].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_CLIENTEValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_CLIENTE].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_CLIENTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_CLIENTE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_CLIENTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_CLIENTE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetNIF_CIFValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNIF_CIF].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNIF_CIFValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaNIF_CIF].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetNIF_CIFIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNIF_CIF].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNIF_CIFIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaNIF_CIF].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetNOMBREValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNOMBRE].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNOMBREValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaNOMBRE].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetNOMBREIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNOMBRE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNOMBREIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaNOMBRE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_DIRECCIONValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_DIRECCION].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_DIRECCIONValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_DIRECCION].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_DIRECCIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_DIRECCION].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_DIRECCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_DIRECCION].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetCALLEValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaCALLE].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetCALLEValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaCALLE].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetCALLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaCALLE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetCALLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaCALLE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetPOBLACIONValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaPOBLACION].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetPOBLACIONValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaPOBLACION].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetPOBLACIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaPOBLACION].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetPOBLACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaPOBLACION].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetPROVINCIAValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaPROVINCIA].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetPROVINCIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaPROVINCIA].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetPROVINCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaPROVINCIA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetPROVINCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaPROVINCIA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetCODIGO_POSTALValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaCODIGO_POSTAL].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetCODIGO_POSTALValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaCODIGO_POSTAL].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetCODIGO_POSTALIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaCODIGO_POSTAL].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetCODIGO_POSTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaCODIGO_POSTAL].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_ALTA].AsDateTime;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_FacturasProformaFECHA_ALTA].AsDateTime := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_ALTAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_ALTA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaFECHA_ALTA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_MODIFICACION].AsDateTime;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_FacturasProformaFECHA_MODIFICACION].AsDateTime := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetFECHA_MODIFICACIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaFECHA_MODIFICACION].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaFECHA_MODIFICACION].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetUSUARIOValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaUSUARIO].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetUSUARIOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaUSUARIO].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetUSUARIOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaUSUARIO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaUSUARIO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_FORMA_PAGOValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_FORMA_PAGO].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_FORMA_PAGOValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_FORMA_PAGO].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_FORMA_PAGOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_FORMA_PAGO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_FORMA_PAGOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_FORMA_PAGO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetRECARGO_EQUIVALENCIAValue: SmallInt;
+begin
+ result := DataTable.Fields[idx_FacturasProformaRECARGO_EQUIVALENCIA].AsSmallInt;
+end;
+
+procedure TFacturasProformaDataTableRules.SetRECARGO_EQUIVALENCIAValue(const aValue: SmallInt);
+begin
+ DataTable.Fields[idx_FacturasProformaRECARGO_EQUIVALENCIA].AsSmallInt := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetRECARGO_EQUIVALENCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaRECARGO_EQUIVALENCIA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetRECARGO_EQUIVALENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaRECARGO_EQUIVALENCIA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_TIPO_IVAValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_TIPO_IVA].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_TIPO_IVAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_TIPO_IVA].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_TIPO_IVAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_TIPO_IVA].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_TIPO_IVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_TIPO_IVA].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_NETOValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_NETO].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_NETOValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_NETO].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_NETOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_NETO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_NETO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_PORTEValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_PORTE].AsCurrency;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_PORTEValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProformaIMPORTE_PORTE].AsCurrency := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetIMPORTE_PORTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaIMPORTE_PORTE].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaIMPORTE_PORTE].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetNUM_COPIASValue: SmallInt;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNUM_COPIAS].AsSmallInt;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNUM_COPIASValue(const aValue: SmallInt);
+begin
+ DataTable.Fields[idx_FacturasProformaNUM_COPIAS].AsSmallInt := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetNUM_COPIASIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNUM_COPIAS].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNUM_COPIASIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaNUM_COPIAS].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetNUM_CORREOSValue: SmallInt;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNUM_CORREOS].AsSmallInt;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNUM_CORREOSValue(const aValue: SmallInt);
+begin
+ DataTable.Fields[idx_FacturasProformaNUM_CORREOS].AsSmallInt := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetNUM_CORREOSIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaNUM_CORREOS].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetNUM_CORREOSIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaNUM_CORREOS].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetDATOS_BANCARIOSValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDATOS_BANCARIOS].AsString;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDATOS_BANCARIOSValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProformaDATOS_BANCARIOS].AsString := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetDATOS_BANCARIOSIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaDATOS_BANCARIOS].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetDATOS_BANCARIOSIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaDATOS_BANCARIOS].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_PEDIDOValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_PEDIDO].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_PEDIDOValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_PEDIDO].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_PEDIDOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_PEDIDO].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_PEDIDOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_PEDIDO].AsVariant := Null;
+end;
+
+function TFacturasProformaDataTableRules.GetID_FACTURA_FINALValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_FACTURA_FINAL].AsInteger;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_FACTURA_FINALValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProformaID_FACTURA_FINAL].AsInteger := aValue;
+end;
+
+function TFacturasProformaDataTableRules.GetID_FACTURA_FINALIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProformaID_FACTURA_FINAL].IsNull;
+end;
+
+procedure TFacturasProformaDataTableRules.SetID_FACTURA_FINALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProformaID_FACTURA_FINAL].AsVariant := Null;
+end;
+
+
+{ TFacturasProforma_DetallesDataTableRules }
+constructor TFacturasProforma_DetallesDataTableRules.Create(aDataTable: TDADataTable);
+begin
+ inherited;
+end;
+
+destructor TFacturasProforma_DetallesDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIDValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID].AsInteger;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIDValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesID].AsInteger := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIDIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesID].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetID_FACTURAValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID_FACTURA].AsInteger;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetID_FACTURAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesID_FACTURA].AsInteger := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetID_FACTURAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID_FACTURA].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetID_FACTURAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesID_FACTURA].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetPOSICIONValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesPOSICION].AsInteger;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetPOSICIONValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesPOSICION].AsInteger := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetPOSICIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesPOSICION].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetPOSICIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesPOSICION].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetTIPO_DETALLEValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesTIPO_DETALLE].AsString;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetTIPO_DETALLEValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesTIPO_DETALLE].AsString := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetTIPO_DETALLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesTIPO_DETALLE].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetTIPO_DETALLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesTIPO_DETALLE].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetCONCEPTOValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesCONCEPTO].AsString;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetCONCEPTOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesCONCEPTO].AsString := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetCONCEPTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesCONCEPTO].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetCONCEPTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesCONCEPTO].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetCANTIDADValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesCANTIDAD].AsCurrency;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetCANTIDADValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesCANTIDAD].AsCurrency := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetCANTIDADIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesCANTIDAD].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetCANTIDADIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesCANTIDAD].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetUNIDAD_MEDIDAValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesUNIDAD_MEDIDA].AsString;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetUNIDAD_MEDIDAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesUNIDAD_MEDIDA].AsString := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetUNIDAD_MEDIDAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesUNIDAD_MEDIDA].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetUNIDAD_MEDIDAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesUNIDAD_MEDIDA].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_UNIDADValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_UNIDAD].AsCurrency;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_UNIDADValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_UNIDAD].AsCurrency := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_UNIDADIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_UNIDAD].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_UNIDAD].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_TOTALValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_TOTAL].AsCurrency;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_TOTALValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_TOTAL].AsCurrency := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_TOTALIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_TOTAL].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_TOTAL].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetVISIBLEValue: SmallInt;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesVISIBLE].AsSmallInt;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetVISIBLEValue(const aValue: SmallInt);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesVISIBLE].AsSmallInt := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetVISIBLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesVISIBLE].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetVISIBLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesVISIBLE].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetID_ARTICULOValue: Integer;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID_ARTICULO].AsInteger;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetID_ARTICULOValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesID_ARTICULO].AsInteger := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetID_ARTICULOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesID_ARTICULO].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetID_ARTICULOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesID_ARTICULO].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetDESCUENTOValue: Float;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesDESCUENTO].AsFloat;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesDESCUENTO].AsFloat := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetDESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesDESCUENTO].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesDESCUENTO].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_PORTEValue: Currency;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_PORTE].AsCurrency;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_PORTEValue(const aValue: Currency);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_PORTE].AsCurrency := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetIMPORTE_PORTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_PORTE].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesIMPORTE_PORTE].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetREFERENCIAValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA].AsString;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetREFERENCIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA].AsString := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetREFERENCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA].AsVariant := Null;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetREFERENCIA_PROVEEDORValue: String;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA_PROVEEDOR].AsString;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetREFERENCIA_PROVEEDORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA_PROVEEDOR].AsString := aValue;
+end;
+
+function TFacturasProforma_DetallesDataTableRules.GetREFERENCIA_PROVEEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA_PROVEEDOR].IsNull;
+end;
+
+procedure TFacturasProforma_DetallesDataTableRules.SetREFERENCIA_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_FacturasProforma_DetallesREFERENCIA_PROVEEDOR].AsVariant := Null;
+end;
+
+
+initialization
+ RegisterDataTableRules(RID_ListaAnosFacturas, TListaAnosFacturasDataTableRules);
+ RegisterDataTableRules(RID_FacturasProforma, TFacturasProformaDataTableRules);
+ RegisterDataTableRules(RID_FacturasProforma_Detalles, TFacturasProforma_DetallesDataTableRules);
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Model/schFacturasProformaServer_Intf.pas b/Source/Modulos/Facturas proforma/Model/schFacturasProformaServer_Intf.pas
new file mode 100644
index 0000000..d19db40
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/schFacturasProformaServer_Intf.pas
@@ -0,0 +1,2417 @@
+unit schFacturasProformaServer_Intf;
+
+interface
+
+uses
+ Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schFacturasProformaClient_Intf;
+
+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_ListaAnosFacturasDelta = '{ABACB817-6763-4A88-8B1E-5AB9DB10C790}';
+ RID_FacturasProformaDelta = '{816D3941-8CF1-4491-AB51-33755DA5A8B0}';
+ RID_FacturasProforma_DetallesDelta = '{A48F6A67-93C6-41E8-A234-B04189C7559D}';
+
+type
+ { IListaAnosFacturasDelta }
+ IListaAnosFacturasDelta = interface(IListaAnosFacturas)
+ ['{ABACB817-6763-4A88-8B1E-5AB9DB10C790}']
+ { Property getters and setters }
+ function GetOldANOValue : String;
+
+ { Properties }
+ property OldANO : String read GetOldANOValue;
+ end;
+
+ { TListaAnosFacturasBusinessProcessorRules }
+ TListaAnosFacturasBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosFacturas, IListaAnosFacturasDelta)
+ private
+ protected
+ { Property getters and setters }
+ function GetANOValue: String; virtual;
+ function GetANOIsNull: Boolean; virtual;
+ function GetOldANOValue: String; virtual;
+ function GetOldANOIsNull: Boolean; virtual;
+ procedure SetANOValue(const aValue: String); virtual;
+ procedure SetANOIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ANO : String read GetANOValue write SetANOValue;
+ property ANOIsNull : Boolean read GetANOIsNull write SetANOIsNull;
+ property OldANO : String read GetOldANOValue;
+ property OldANOIsNull : Boolean read GetOldANOIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IFacturasProformaDelta }
+ IFacturasProformaDelta = interface(IFacturasProforma)
+ ['{816D3941-8CF1-4491-AB51-33755DA5A8B0}']
+ { Property getters and setters }
+ function GetOldIDValue : Integer;
+ function GetOldID_EMPRESAValue : Integer;
+ function GetOldREFERENCIAValue : String;
+ function GetOldFECHA_FACTURAValue : DateTime;
+ function GetOldFECHA_VENCIMIENTOValue : DateTime;
+ function GetOldSITUACIONValue : String;
+ function GetOldBASE_IMPONIBLEValue : Currency;
+ function GetOldDESCUENTOValue : Float;
+ function GetOldIMPORTE_DESCUENTOValue : Currency;
+ function GetOldDESCRIPCION_DESCUENTOValue : String;
+ function GetOldIVAValue : Float;
+ function GetOldIMPORTE_IVAValue : Currency;
+ function GetOldREValue : Float;
+ function GetOldIMPORTE_REValue : Currency;
+ function GetOldIMPORTE_TOTALValue : Currency;
+ function GetOldOBSERVACIONESValue : IROStrings;
+ function GetOldID_CLIENTEValue : Integer;
+ function GetOldNIF_CIFValue : String;
+ function GetOldNOMBREValue : String;
+ function GetOldID_DIRECCIONValue : Integer;
+ function GetOldCALLEValue : String;
+ function GetOldPOBLACIONValue : String;
+ function GetOldPROVINCIAValue : String;
+ function GetOldCODIGO_POSTALValue : String;
+ function GetOldFECHA_ALTAValue : DateTime;
+ function GetOldFECHA_MODIFICACIONValue : DateTime;
+ function GetOldUSUARIOValue : String;
+ function GetOldID_FORMA_PAGOValue : Integer;
+ function GetOldRECARGO_EQUIVALENCIAValue : SmallInt;
+ function GetOldID_TIPO_IVAValue : Integer;
+ function GetOldIMPORTE_NETOValue : Currency;
+ function GetOldIMPORTE_PORTEValue : Currency;
+ function GetOldNUM_COPIASValue : SmallInt;
+ function GetOldNUM_CORREOSValue : SmallInt;
+ function GetOldDATOS_BANCARIOSValue : String;
+ function GetOldID_PEDIDOValue : Integer;
+ function GetOldID_FACTURA_FINALValue : Integer;
+
+ { Properties }
+ property OldID : Integer read GetOldIDValue;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldFECHA_FACTURA : DateTime read GetOldFECHA_FACTURAValue;
+ property OldFECHA_VENCIMIENTO : DateTime read GetOldFECHA_VENCIMIENTOValue;
+ property OldSITUACION : String read GetOldSITUACIONValue;
+ property OldBASE_IMPONIBLE : Currency read GetOldBASE_IMPONIBLEValue;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldIMPORTE_DESCUENTO : Currency read GetOldIMPORTE_DESCUENTOValue;
+ property OldDESCRIPCION_DESCUENTO : String read GetOldDESCRIPCION_DESCUENTOValue;
+ property OldIVA : Float read GetOldIVAValue;
+ property OldIMPORTE_IVA : Currency read GetOldIMPORTE_IVAValue;
+ property OldRE : Float read GetOldREValue;
+ property OldIMPORTE_RE : Currency read GetOldIMPORTE_REValue;
+ property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue;
+ property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue;
+ property OldID_CLIENTE : Integer read GetOldID_CLIENTEValue;
+ property OldNIF_CIF : String read GetOldNIF_CIFValue;
+ property OldNOMBRE : String read GetOldNOMBREValue;
+ property OldID_DIRECCION : Integer read GetOldID_DIRECCIONValue;
+ property OldCALLE : String read GetOldCALLEValue;
+ property OldPOBLACION : String read GetOldPOBLACIONValue;
+ property OldPROVINCIA : String read GetOldPROVINCIAValue;
+ property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue;
+ property OldRECARGO_EQUIVALENCIA : SmallInt read GetOldRECARGO_EQUIVALENCIAValue;
+ property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue;
+ property OldIMPORTE_NETO : Currency read GetOldIMPORTE_NETOValue;
+ property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue;
+ property OldNUM_COPIAS : SmallInt read GetOldNUM_COPIASValue;
+ property OldNUM_CORREOS : SmallInt read GetOldNUM_CORREOSValue;
+ property OldDATOS_BANCARIOS : String read GetOldDATOS_BANCARIOSValue;
+ property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue;
+ property OldID_FACTURA_FINAL : Integer read GetOldID_FACTURA_FINALValue;
+ end;
+
+ { TFacturasProformaBusinessProcessorRules }
+ TFacturasProformaBusinessProcessorRules = class(TDABusinessProcessorRules, IFacturasProforma, IFacturasProformaDelta)
+ private
+ f_OBSERVACIONES: IROStrings;
+ procedure OBSERVACIONES_OnChange(Sender: TObject);
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ function GetIDIsNull: Boolean; virtual;
+ function GetOldIDValue: Integer; virtual;
+ function GetOldIDIsNull: Boolean; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetID_EMPRESAValue: Integer; virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ function GetOldID_EMPRESAValue: Integer; virtual;
+ function GetOldID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ procedure SetID_EMPRESAIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIAValue: String; virtual;
+ function GetREFERENCIAIsNull: Boolean; virtual;
+ function GetOldREFERENCIAValue: String; virtual;
+ function GetOldREFERENCIAIsNull: Boolean; virtual;
+ procedure SetREFERENCIAValue(const aValue: String); virtual;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_FACTURAValue: DateTime; virtual;
+ function GetFECHA_FACTURAIsNull: Boolean; virtual;
+ function GetOldFECHA_FACTURAValue: DateTime; virtual;
+ function GetOldFECHA_FACTURAIsNull: Boolean; virtual;
+ procedure SetFECHA_FACTURAValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_FACTURAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_VENCIMIENTOValue: DateTime; virtual;
+ function GetFECHA_VENCIMIENTOIsNull: Boolean; virtual;
+ function GetOldFECHA_VENCIMIENTOValue: DateTime; virtual;
+ function GetOldFECHA_VENCIMIENTOIsNull: Boolean; virtual;
+ procedure SetFECHA_VENCIMIENTOValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_VENCIMIENTOIsNull(const aValue: Boolean); virtual;
+ function GetSITUACIONValue: String; virtual;
+ function GetSITUACIONIsNull: Boolean; virtual;
+ function GetOldSITUACIONValue: String; virtual;
+ function GetOldSITUACIONIsNull: Boolean; virtual;
+ procedure SetSITUACIONValue(const aValue: String); virtual;
+ procedure SetSITUACIONIsNull(const aValue: Boolean); virtual;
+ function GetBASE_IMPONIBLEValue: Currency; virtual;
+ function GetBASE_IMPONIBLEIsNull: Boolean; virtual;
+ function GetOldBASE_IMPONIBLEValue: Currency; virtual;
+ function GetOldBASE_IMPONIBLEIsNull: Boolean; virtual;
+ procedure SetBASE_IMPONIBLEValue(const aValue: Currency); virtual;
+ procedure SetBASE_IMPONIBLEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ function GetOldDESCUENTOValue: Float; virtual;
+ function GetOldDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_DESCUENTOValue: Currency; virtual;
+ function GetIMPORTE_DESCUENTOIsNull: Boolean; virtual;
+ function GetOldIMPORTE_DESCUENTOValue: Currency; virtual;
+ function GetOldIMPORTE_DESCUENTOIsNull: Boolean; virtual;
+ procedure SetIMPORTE_DESCUENTOValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_DESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetDESCRIPCION_DESCUENTOValue: String; virtual;
+ function GetDESCRIPCION_DESCUENTOIsNull: Boolean; virtual;
+ function GetOldDESCRIPCION_DESCUENTOValue: String; virtual;
+ function GetOldDESCRIPCION_DESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCRIPCION_DESCUENTOValue(const aValue: String); virtual;
+ procedure SetDESCRIPCION_DESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIVAValue: Float; virtual;
+ function GetIVAIsNull: Boolean; virtual;
+ function GetOldIVAValue: Float; virtual;
+ function GetOldIVAIsNull: Boolean; virtual;
+ procedure SetIVAValue(const aValue: Float); virtual;
+ procedure SetIVAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_IVAValue: Currency; virtual;
+ function GetIMPORTE_IVAIsNull: Boolean; virtual;
+ function GetOldIMPORTE_IVAValue: Currency; virtual;
+ function GetOldIMPORTE_IVAIsNull: Boolean; virtual;
+ procedure SetIMPORTE_IVAValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_IVAIsNull(const aValue: Boolean); virtual;
+ function GetREValue: Float; virtual;
+ function GetREIsNull: Boolean; virtual;
+ function GetOldREValue: Float; virtual;
+ function GetOldREIsNull: Boolean; virtual;
+ procedure SetREValue(const aValue: Float); virtual;
+ procedure SetREIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_REValue: Currency; virtual;
+ function GetIMPORTE_REIsNull: Boolean; virtual;
+ function GetOldIMPORTE_REValue: Currency; virtual;
+ function GetOldIMPORTE_REIsNull: Boolean; virtual;
+ procedure SetIMPORTE_REValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_REIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_TOTALValue: Currency; virtual;
+ function GetIMPORTE_TOTALIsNull: Boolean; virtual;
+ function GetOldIMPORTE_TOTALValue: Currency; virtual;
+ function GetOldIMPORTE_TOTALIsNull: Boolean; virtual;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual;
+ function GetOBSERVACIONESValue: IROStrings; virtual;
+ function GetOBSERVACIONESIsNull: Boolean; virtual;
+ function GetOldOBSERVACIONESValue: IROStrings; virtual;
+ function GetOldOBSERVACIONESIsNull: Boolean; virtual;
+ procedure SetOBSERVACIONESIsNull(const aValue: Boolean); virtual;
+ function GetID_CLIENTEValue: Integer; virtual;
+ function GetID_CLIENTEIsNull: Boolean; virtual;
+ function GetOldID_CLIENTEValue: Integer; virtual;
+ function GetOldID_CLIENTEIsNull: Boolean; virtual;
+ procedure SetID_CLIENTEValue(const aValue: Integer); virtual;
+ procedure SetID_CLIENTEIsNull(const aValue: Boolean); virtual;
+ function GetNIF_CIFValue: String; virtual;
+ function GetNIF_CIFIsNull: Boolean; virtual;
+ function GetOldNIF_CIFValue: String; virtual;
+ function GetOldNIF_CIFIsNull: Boolean; virtual;
+ procedure SetNIF_CIFValue(const aValue: String); virtual;
+ procedure SetNIF_CIFIsNull(const aValue: Boolean); virtual;
+ function GetNOMBREValue: String; virtual;
+ function GetNOMBREIsNull: Boolean; virtual;
+ function GetOldNOMBREValue: String; virtual;
+ function GetOldNOMBREIsNull: Boolean; virtual;
+ procedure SetNOMBREValue(const aValue: String); virtual;
+ procedure SetNOMBREIsNull(const aValue: Boolean); virtual;
+ function GetID_DIRECCIONValue: Integer; virtual;
+ function GetID_DIRECCIONIsNull: Boolean; virtual;
+ function GetOldID_DIRECCIONValue: Integer; virtual;
+ function GetOldID_DIRECCIONIsNull: Boolean; virtual;
+ procedure SetID_DIRECCIONValue(const aValue: Integer); virtual;
+ procedure SetID_DIRECCIONIsNull(const aValue: Boolean); virtual;
+ function GetCALLEValue: String; virtual;
+ function GetCALLEIsNull: Boolean; virtual;
+ function GetOldCALLEValue: String; virtual;
+ function GetOldCALLEIsNull: Boolean; virtual;
+ procedure SetCALLEValue(const aValue: String); virtual;
+ procedure SetCALLEIsNull(const aValue: Boolean); virtual;
+ function GetPOBLACIONValue: String; virtual;
+ function GetPOBLACIONIsNull: Boolean; virtual;
+ function GetOldPOBLACIONValue: String; virtual;
+ function GetOldPOBLACIONIsNull: Boolean; virtual;
+ procedure SetPOBLACIONValue(const aValue: String); virtual;
+ procedure SetPOBLACIONIsNull(const aValue: Boolean); virtual;
+ function GetPROVINCIAValue: String; virtual;
+ function GetPROVINCIAIsNull: Boolean; virtual;
+ function GetOldPROVINCIAValue: String; virtual;
+ function GetOldPROVINCIAIsNull: Boolean; virtual;
+ procedure SetPROVINCIAValue(const aValue: String); virtual;
+ procedure SetPROVINCIAIsNull(const aValue: Boolean); virtual;
+ function GetCODIGO_POSTALValue: String; virtual;
+ function GetCODIGO_POSTALIsNull: Boolean; virtual;
+ function GetOldCODIGO_POSTALValue: String; virtual;
+ function GetOldCODIGO_POSTALIsNull: Boolean; virtual;
+ procedure SetCODIGO_POSTALValue(const aValue: String); virtual;
+ procedure SetCODIGO_POSTALIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ function GetOldFECHA_ALTAValue: DateTime; virtual;
+ function GetOldFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ function GetOldFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetOldFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ function GetOldUSUARIOValue: String; virtual;
+ function GetOldUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetID_FORMA_PAGOValue: Integer; virtual;
+ function GetID_FORMA_PAGOIsNull: Boolean; virtual;
+ function GetOldID_FORMA_PAGOValue: Integer; virtual;
+ function GetOldID_FORMA_PAGOIsNull: Boolean; virtual;
+ procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual;
+ procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean); virtual;
+ function GetRECARGO_EQUIVALENCIAValue: SmallInt; virtual;
+ function GetRECARGO_EQUIVALENCIAIsNull: Boolean; virtual;
+ function GetOldRECARGO_EQUIVALENCIAValue: SmallInt; virtual;
+ function GetOldRECARGO_EQUIVALENCIAIsNull: Boolean; virtual;
+ procedure SetRECARGO_EQUIVALENCIAValue(const aValue: SmallInt); virtual;
+ procedure SetRECARGO_EQUIVALENCIAIsNull(const aValue: Boolean); virtual;
+ function GetID_TIPO_IVAValue: Integer; virtual;
+ function GetID_TIPO_IVAIsNull: Boolean; virtual;
+ function GetOldID_TIPO_IVAValue: Integer; virtual;
+ function GetOldID_TIPO_IVAIsNull: Boolean; virtual;
+ procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual;
+ procedure SetID_TIPO_IVAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_NETOValue: Currency; virtual;
+ function GetIMPORTE_NETOIsNull: Boolean; virtual;
+ function GetOldIMPORTE_NETOValue: Currency; virtual;
+ function GetOldIMPORTE_NETOIsNull: Boolean; virtual;
+ procedure SetIMPORTE_NETOValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_NETOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_PORTEValue: Currency; virtual;
+ function GetIMPORTE_PORTEIsNull: Boolean; virtual;
+ function GetOldIMPORTE_PORTEValue: Currency; virtual;
+ function GetOldIMPORTE_PORTEIsNull: Boolean; virtual;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetNUM_COPIASValue: SmallInt; virtual;
+ function GetNUM_COPIASIsNull: Boolean; virtual;
+ function GetOldNUM_COPIASValue: SmallInt; virtual;
+ function GetOldNUM_COPIASIsNull: Boolean; virtual;
+ procedure SetNUM_COPIASValue(const aValue: SmallInt); virtual;
+ procedure SetNUM_COPIASIsNull(const aValue: Boolean); virtual;
+ function GetNUM_CORREOSValue: SmallInt; virtual;
+ function GetNUM_CORREOSIsNull: Boolean; virtual;
+ function GetOldNUM_CORREOSValue: SmallInt; virtual;
+ function GetOldNUM_CORREOSIsNull: Boolean; virtual;
+ procedure SetNUM_CORREOSValue(const aValue: SmallInt); virtual;
+ procedure SetNUM_CORREOSIsNull(const aValue: Boolean); virtual;
+ function GetDATOS_BANCARIOSValue: String; virtual;
+ function GetDATOS_BANCARIOSIsNull: Boolean; virtual;
+ function GetOldDATOS_BANCARIOSValue: String; virtual;
+ function GetOldDATOS_BANCARIOSIsNull: Boolean; virtual;
+ procedure SetDATOS_BANCARIOSValue(const aValue: String); virtual;
+ procedure SetDATOS_BANCARIOSIsNull(const aValue: Boolean); virtual;
+ function GetID_PEDIDOValue: Integer; virtual;
+ function GetID_PEDIDOIsNull: Boolean; virtual;
+ function GetOldID_PEDIDOValue: Integer; virtual;
+ function GetOldID_PEDIDOIsNull: Boolean; virtual;
+ procedure SetID_PEDIDOValue(const aValue: Integer); virtual;
+ procedure SetID_PEDIDOIsNull(const aValue: Boolean); virtual;
+ function GetID_FACTURA_FINALValue: Integer; virtual;
+ function GetID_FACTURA_FINALIsNull: Boolean; virtual;
+ function GetOldID_FACTURA_FINALValue: Integer; virtual;
+ function GetOldID_FACTURA_FINALIsNull: Boolean; virtual;
+ procedure SetID_FACTURA_FINALValue(const aValue: Integer); virtual;
+ procedure SetID_FACTURA_FINALIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID : Integer read GetIDValue write SetIDValue;
+ property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull;
+ property OldID : Integer read GetOldIDValue;
+ property OldIDIsNull : Boolean read GetOldIDIsNull;
+ property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull : Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldID_EMPRESAIsNull : Boolean read GetOldID_EMPRESAIsNull;
+ property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull : Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldREFERENCIAIsNull : Boolean read GetOldREFERENCIAIsNull;
+ property FECHA_FACTURA : DateTime read GetFECHA_FACTURAValue write SetFECHA_FACTURAValue;
+ property FECHA_FACTURAIsNull : Boolean read GetFECHA_FACTURAIsNull write SetFECHA_FACTURAIsNull;
+ property OldFECHA_FACTURA : DateTime read GetOldFECHA_FACTURAValue;
+ property OldFECHA_FACTURAIsNull : Boolean read GetOldFECHA_FACTURAIsNull;
+ property FECHA_VENCIMIENTO : DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue;
+ property FECHA_VENCIMIENTOIsNull : Boolean read GetFECHA_VENCIMIENTOIsNull write SetFECHA_VENCIMIENTOIsNull;
+ property OldFECHA_VENCIMIENTO : DateTime read GetOldFECHA_VENCIMIENTOValue;
+ property OldFECHA_VENCIMIENTOIsNull : Boolean read GetOldFECHA_VENCIMIENTOIsNull;
+ property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue;
+ property SITUACIONIsNull : Boolean read GetSITUACIONIsNull write SetSITUACIONIsNull;
+ property OldSITUACION : String read GetOldSITUACIONValue;
+ property OldSITUACIONIsNull : Boolean read GetOldSITUACIONIsNull;
+ property BASE_IMPONIBLE : Currency read GetBASE_IMPONIBLEValue write SetBASE_IMPONIBLEValue;
+ property BASE_IMPONIBLEIsNull : Boolean read GetBASE_IMPONIBLEIsNull write SetBASE_IMPONIBLEIsNull;
+ property OldBASE_IMPONIBLE : Currency read GetOldBASE_IMPONIBLEValue;
+ property OldBASE_IMPONIBLEIsNull : Boolean read GetOldBASE_IMPONIBLEIsNull;
+ property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull;
+ property IMPORTE_DESCUENTO : Currency read GetIMPORTE_DESCUENTOValue write SetIMPORTE_DESCUENTOValue;
+ property IMPORTE_DESCUENTOIsNull : Boolean read GetIMPORTE_DESCUENTOIsNull write SetIMPORTE_DESCUENTOIsNull;
+ property OldIMPORTE_DESCUENTO : Currency read GetOldIMPORTE_DESCUENTOValue;
+ property OldIMPORTE_DESCUENTOIsNull : Boolean read GetOldIMPORTE_DESCUENTOIsNull;
+ property DESCRIPCION_DESCUENTO : String read GetDESCRIPCION_DESCUENTOValue write SetDESCRIPCION_DESCUENTOValue;
+ property DESCRIPCION_DESCUENTOIsNull : Boolean read GetDESCRIPCION_DESCUENTOIsNull write SetDESCRIPCION_DESCUENTOIsNull;
+ property OldDESCRIPCION_DESCUENTO : String read GetOldDESCRIPCION_DESCUENTOValue;
+ property OldDESCRIPCION_DESCUENTOIsNull : Boolean read GetOldDESCRIPCION_DESCUENTOIsNull;
+ property IVA : Float read GetIVAValue write SetIVAValue;
+ property IVAIsNull : Boolean read GetIVAIsNull write SetIVAIsNull;
+ property OldIVA : Float read GetOldIVAValue;
+ property OldIVAIsNull : Boolean read GetOldIVAIsNull;
+ property IMPORTE_IVA : Currency read GetIMPORTE_IVAValue write SetIMPORTE_IVAValue;
+ property IMPORTE_IVAIsNull : Boolean read GetIMPORTE_IVAIsNull write SetIMPORTE_IVAIsNull;
+ property OldIMPORTE_IVA : Currency read GetOldIMPORTE_IVAValue;
+ property OldIMPORTE_IVAIsNull : Boolean read GetOldIMPORTE_IVAIsNull;
+ property RE : Float read GetREValue write SetREValue;
+ property REIsNull : Boolean read GetREIsNull write SetREIsNull;
+ property OldRE : Float read GetOldREValue;
+ property OldREIsNull : Boolean read GetOldREIsNull;
+ property IMPORTE_RE : Currency read GetIMPORTE_REValue write SetIMPORTE_REValue;
+ property IMPORTE_REIsNull : Boolean read GetIMPORTE_REIsNull write SetIMPORTE_REIsNull;
+ property OldIMPORTE_RE : Currency read GetOldIMPORTE_REValue;
+ property OldIMPORTE_REIsNull : Boolean read GetOldIMPORTE_REIsNull;
+ property IMPORTE_TOTAL : Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull : Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue;
+ property OldIMPORTE_TOTALIsNull : Boolean read GetOldIMPORTE_TOTALIsNull;
+ property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue;
+ property OBSERVACIONESIsNull : Boolean read GetOBSERVACIONESIsNull write SetOBSERVACIONESIsNull;
+ property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue;
+ property OldOBSERVACIONESIsNull : Boolean read GetOldOBSERVACIONESIsNull;
+ property ID_CLIENTE : Integer read GetID_CLIENTEValue write SetID_CLIENTEValue;
+ property ID_CLIENTEIsNull : Boolean read GetID_CLIENTEIsNull write SetID_CLIENTEIsNull;
+ property OldID_CLIENTE : Integer read GetOldID_CLIENTEValue;
+ property OldID_CLIENTEIsNull : Boolean read GetOldID_CLIENTEIsNull;
+ property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue;
+ property NIF_CIFIsNull : Boolean read GetNIF_CIFIsNull write SetNIF_CIFIsNull;
+ property OldNIF_CIF : String read GetOldNIF_CIFValue;
+ property OldNIF_CIFIsNull : Boolean read GetOldNIF_CIFIsNull;
+ property NOMBRE : String read GetNOMBREValue write SetNOMBREValue;
+ property NOMBREIsNull : Boolean read GetNOMBREIsNull write SetNOMBREIsNull;
+ property OldNOMBRE : String read GetOldNOMBREValue;
+ property OldNOMBREIsNull : Boolean read GetOldNOMBREIsNull;
+ property ID_DIRECCION : Integer read GetID_DIRECCIONValue write SetID_DIRECCIONValue;
+ property ID_DIRECCIONIsNull : Boolean read GetID_DIRECCIONIsNull write SetID_DIRECCIONIsNull;
+ property OldID_DIRECCION : Integer read GetOldID_DIRECCIONValue;
+ property OldID_DIRECCIONIsNull : Boolean read GetOldID_DIRECCIONIsNull;
+ property CALLE : String read GetCALLEValue write SetCALLEValue;
+ property CALLEIsNull : Boolean read GetCALLEIsNull write SetCALLEIsNull;
+ property OldCALLE : String read GetOldCALLEValue;
+ property OldCALLEIsNull : Boolean read GetOldCALLEIsNull;
+ property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue;
+ property POBLACIONIsNull : Boolean read GetPOBLACIONIsNull write SetPOBLACIONIsNull;
+ property OldPOBLACION : String read GetOldPOBLACIONValue;
+ property OldPOBLACIONIsNull : Boolean read GetOldPOBLACIONIsNull;
+ property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue;
+ property PROVINCIAIsNull : Boolean read GetPROVINCIAIsNull write SetPROVINCIAIsNull;
+ property OldPROVINCIA : String read GetOldPROVINCIAValue;
+ property OldPROVINCIAIsNull : Boolean read GetOldPROVINCIAIsNull;
+ property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue;
+ property CODIGO_POSTALIsNull : Boolean read GetCODIGO_POSTALIsNull write SetCODIGO_POSTALIsNull;
+ property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue;
+ property OldCODIGO_POSTALIsNull : Boolean read GetOldCODIGO_POSTALIsNull;
+ property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull : Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_ALTAIsNull : Boolean read GetOldFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull : Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldFECHA_MODIFICACIONIsNull : Boolean read GetOldFECHA_MODIFICACIONIsNull;
+ property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull : Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldUSUARIOIsNull : Boolean read GetOldUSUARIOIsNull;
+ property ID_FORMA_PAGO : Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue;
+ property ID_FORMA_PAGOIsNull : Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull;
+ property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue;
+ property OldID_FORMA_PAGOIsNull : Boolean read GetOldID_FORMA_PAGOIsNull;
+ property RECARGO_EQUIVALENCIA : SmallInt read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue;
+ property RECARGO_EQUIVALENCIAIsNull : Boolean read GetRECARGO_EQUIVALENCIAIsNull write SetRECARGO_EQUIVALENCIAIsNull;
+ property OldRECARGO_EQUIVALENCIA : SmallInt read GetOldRECARGO_EQUIVALENCIAValue;
+ property OldRECARGO_EQUIVALENCIAIsNull : Boolean read GetOldRECARGO_EQUIVALENCIAIsNull;
+ property ID_TIPO_IVA : Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue;
+ property ID_TIPO_IVAIsNull : Boolean read GetID_TIPO_IVAIsNull write SetID_TIPO_IVAIsNull;
+ property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue;
+ property OldID_TIPO_IVAIsNull : Boolean read GetOldID_TIPO_IVAIsNull;
+ property IMPORTE_NETO : Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue;
+ property IMPORTE_NETOIsNull : Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull;
+ property OldIMPORTE_NETO : Currency read GetOldIMPORTE_NETOValue;
+ property OldIMPORTE_NETOIsNull : Boolean read GetOldIMPORTE_NETOIsNull;
+ property IMPORTE_PORTE : Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull : Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue;
+ property OldIMPORTE_PORTEIsNull : Boolean read GetOldIMPORTE_PORTEIsNull;
+ property NUM_COPIAS : SmallInt read GetNUM_COPIASValue write SetNUM_COPIASValue;
+ property NUM_COPIASIsNull : Boolean read GetNUM_COPIASIsNull write SetNUM_COPIASIsNull;
+ property OldNUM_COPIAS : SmallInt read GetOldNUM_COPIASValue;
+ property OldNUM_COPIASIsNull : Boolean read GetOldNUM_COPIASIsNull;
+ property NUM_CORREOS : SmallInt read GetNUM_CORREOSValue write SetNUM_CORREOSValue;
+ property NUM_CORREOSIsNull : Boolean read GetNUM_CORREOSIsNull write SetNUM_CORREOSIsNull;
+ property OldNUM_CORREOS : SmallInt read GetOldNUM_CORREOSValue;
+ property OldNUM_CORREOSIsNull : Boolean read GetOldNUM_CORREOSIsNull;
+ property DATOS_BANCARIOS : String read GetDATOS_BANCARIOSValue write SetDATOS_BANCARIOSValue;
+ property DATOS_BANCARIOSIsNull : Boolean read GetDATOS_BANCARIOSIsNull write SetDATOS_BANCARIOSIsNull;
+ property OldDATOS_BANCARIOS : String read GetOldDATOS_BANCARIOSValue;
+ property OldDATOS_BANCARIOSIsNull : Boolean read GetOldDATOS_BANCARIOSIsNull;
+ property ID_PEDIDO : Integer read GetID_PEDIDOValue write SetID_PEDIDOValue;
+ property ID_PEDIDOIsNull : Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull;
+ property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue;
+ property OldID_PEDIDOIsNull : Boolean read GetOldID_PEDIDOIsNull;
+ property ID_FACTURA_FINAL : Integer read GetID_FACTURA_FINALValue write SetID_FACTURA_FINALValue;
+ property ID_FACTURA_FINALIsNull : Boolean read GetID_FACTURA_FINALIsNull write SetID_FACTURA_FINALIsNull;
+ property OldID_FACTURA_FINAL : Integer read GetOldID_FACTURA_FINALValue;
+ property OldID_FACTURA_FINALIsNull : Boolean read GetOldID_FACTURA_FINALIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IFacturasProforma_DetallesDelta }
+ IFacturasProforma_DetallesDelta = interface(IFacturasProforma_Detalles)
+ ['{A48F6A67-93C6-41E8-A234-B04189C7559D}']
+ { Property getters and setters }
+ function GetOldIDValue : Integer;
+ function GetOldID_FACTURAValue : Integer;
+ function GetOldPOSICIONValue : Integer;
+ function GetOldTIPO_DETALLEValue : String;
+ function GetOldCONCEPTOValue : String;
+ function GetOldCANTIDADValue : Currency;
+ function GetOldUNIDAD_MEDIDAValue : String;
+ function GetOldIMPORTE_UNIDADValue : Currency;
+ function GetOldIMPORTE_TOTALValue : Currency;
+ function GetOldVISIBLEValue : SmallInt;
+ function GetOldID_ARTICULOValue : Integer;
+ function GetOldDESCUENTOValue : Float;
+ function GetOldIMPORTE_PORTEValue : Currency;
+ function GetOldREFERENCIAValue : String;
+ function GetOldREFERENCIA_PROVEEDORValue : String;
+
+ { Properties }
+ property OldID : Integer read GetOldIDValue;
+ property OldID_FACTURA : Integer read GetOldID_FACTURAValue;
+ property OldPOSICION : Integer read GetOldPOSICIONValue;
+ property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue;
+ property OldCONCEPTO : String read GetOldCONCEPTOValue;
+ property OldCANTIDAD : Currency read GetOldCANTIDADValue;
+ property OldUNIDAD_MEDIDA : String read GetOldUNIDAD_MEDIDAValue;
+ property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue;
+ property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue;
+ property OldVISIBLE : SmallInt read GetOldVISIBLEValue;
+ property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldREFERENCIA_PROVEEDOR : String read GetOldREFERENCIA_PROVEEDORValue;
+ end;
+
+ { TFacturasProforma_DetallesBusinessProcessorRules }
+ TFacturasProforma_DetallesBusinessProcessorRules = class(TDABusinessProcessorRules, IFacturasProforma_Detalles, IFacturasProforma_DetallesDelta)
+ private
+ protected
+ { Property getters and setters }
+ function GetIDValue: Integer; virtual;
+ function GetIDIsNull: Boolean; virtual;
+ function GetOldIDValue: Integer; virtual;
+ function GetOldIDIsNull: Boolean; virtual;
+ procedure SetIDValue(const aValue: Integer); virtual;
+ procedure SetIDIsNull(const aValue: Boolean); virtual;
+ function GetID_FACTURAValue: Integer; virtual;
+ function GetID_FACTURAIsNull: Boolean; virtual;
+ function GetOldID_FACTURAValue: Integer; virtual;
+ function GetOldID_FACTURAIsNull: Boolean; virtual;
+ procedure SetID_FACTURAValue(const aValue: Integer); virtual;
+ procedure SetID_FACTURAIsNull(const aValue: Boolean); virtual;
+ function GetPOSICIONValue: Integer; virtual;
+ function GetPOSICIONIsNull: Boolean; virtual;
+ function GetOldPOSICIONValue: Integer; virtual;
+ function GetOldPOSICIONIsNull: Boolean; virtual;
+ procedure SetPOSICIONValue(const aValue: Integer); virtual;
+ procedure SetPOSICIONIsNull(const aValue: Boolean); virtual;
+ function GetTIPO_DETALLEValue: String; virtual;
+ function GetTIPO_DETALLEIsNull: Boolean; virtual;
+ function GetOldTIPO_DETALLEValue: String; virtual;
+ function GetOldTIPO_DETALLEIsNull: Boolean; virtual;
+ procedure SetTIPO_DETALLEValue(const aValue: String); virtual;
+ procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual;
+ function GetCONCEPTOValue: String; virtual;
+ function GetCONCEPTOIsNull: Boolean; virtual;
+ function GetOldCONCEPTOValue: String; virtual;
+ function GetOldCONCEPTOIsNull: Boolean; virtual;
+ procedure SetCONCEPTOValue(const aValue: String); virtual;
+ procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual;
+ function GetCANTIDADValue: Currency; virtual;
+ function GetCANTIDADIsNull: Boolean; virtual;
+ function GetOldCANTIDADValue: Currency; virtual;
+ function GetOldCANTIDADIsNull: Boolean; virtual;
+ procedure SetCANTIDADValue(const aValue: Currency); virtual;
+ procedure SetCANTIDADIsNull(const aValue: Boolean); virtual;
+ function GetUNIDAD_MEDIDAValue: String; virtual;
+ function GetUNIDAD_MEDIDAIsNull: Boolean; virtual;
+ function GetOldUNIDAD_MEDIDAValue: String; virtual;
+ function GetOldUNIDAD_MEDIDAIsNull: Boolean; virtual;
+ procedure SetUNIDAD_MEDIDAValue(const aValue: String); virtual;
+ procedure SetUNIDAD_MEDIDAIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_UNIDADValue: Currency; virtual;
+ function GetIMPORTE_UNIDADIsNull: Boolean; virtual;
+ function GetOldIMPORTE_UNIDADValue: Currency; virtual;
+ function GetOldIMPORTE_UNIDADIsNull: Boolean; virtual;
+ procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_TOTALValue: Currency; virtual;
+ function GetIMPORTE_TOTALIsNull: Boolean; virtual;
+ function GetOldIMPORTE_TOTALValue: Currency; virtual;
+ function GetOldIMPORTE_TOTALIsNull: Boolean; virtual;
+ procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual;
+ function GetVISIBLEValue: SmallInt; virtual;
+ function GetVISIBLEIsNull: Boolean; virtual;
+ function GetOldVISIBLEValue: SmallInt; virtual;
+ function GetOldVISIBLEIsNull: Boolean; virtual;
+ procedure SetVISIBLEValue(const aValue: SmallInt); virtual;
+ procedure SetVISIBLEIsNull(const aValue: Boolean); virtual;
+ function GetID_ARTICULOValue: Integer; virtual;
+ function GetID_ARTICULOIsNull: Boolean; virtual;
+ function GetOldID_ARTICULOValue: Integer; virtual;
+ function GetOldID_ARTICULOIsNull: Boolean; virtual;
+ procedure SetID_ARTICULOValue(const aValue: Integer); virtual;
+ procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ function GetOldDESCUENTOValue: Float; virtual;
+ function GetOldDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetIMPORTE_PORTEValue: Currency; virtual;
+ function GetIMPORTE_PORTEIsNull: Boolean; virtual;
+ function GetOldIMPORTE_PORTEValue: Currency; virtual;
+ function GetOldIMPORTE_PORTEIsNull: Boolean; virtual;
+ procedure SetIMPORTE_PORTEValue(const aValue: Currency); virtual;
+ procedure SetIMPORTE_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIAValue: String; virtual;
+ function GetREFERENCIAIsNull: Boolean; virtual;
+ function GetOldREFERENCIAValue: String; virtual;
+ function GetOldREFERENCIAIsNull: Boolean; virtual;
+ procedure SetREFERENCIAValue(const aValue: String); virtual;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVEEDORValue: String; virtual;
+ function GetREFERENCIA_PROVEEDORIsNull: Boolean; virtual;
+ function GetOldREFERENCIA_PROVEEDORValue: String; virtual;
+ function GetOldREFERENCIA_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVEEDORValue(const aValue: String); virtual;
+ procedure SetREFERENCIA_PROVEEDORIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID : Integer read GetIDValue write SetIDValue;
+ property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull;
+ property OldID : Integer read GetOldIDValue;
+ property OldIDIsNull : Boolean read GetOldIDIsNull;
+ property ID_FACTURA : Integer read GetID_FACTURAValue write SetID_FACTURAValue;
+ property ID_FACTURAIsNull : Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull;
+ property OldID_FACTURA : Integer read GetOldID_FACTURAValue;
+ property OldID_FACTURAIsNull : Boolean read GetOldID_FACTURAIsNull;
+ property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue;
+ property POSICIONIsNull : Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull;
+ property OldPOSICION : Integer read GetOldPOSICIONValue;
+ property OldPOSICIONIsNull : Boolean read GetOldPOSICIONIsNull;
+ property TIPO_DETALLE : String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue;
+ property TIPO_DETALLEIsNull : Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull;
+ property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue;
+ property OldTIPO_DETALLEIsNull : Boolean read GetOldTIPO_DETALLEIsNull;
+ property CONCEPTO : String read GetCONCEPTOValue write SetCONCEPTOValue;
+ property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull;
+ property OldCONCEPTO : String read GetOldCONCEPTOValue;
+ property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull;
+ property CANTIDAD : Currency read GetCANTIDADValue write SetCANTIDADValue;
+ property CANTIDADIsNull : Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull;
+ property OldCANTIDAD : Currency read GetOldCANTIDADValue;
+ property OldCANTIDADIsNull : Boolean read GetOldCANTIDADIsNull;
+ property UNIDAD_MEDIDA : String read GetUNIDAD_MEDIDAValue write SetUNIDAD_MEDIDAValue;
+ property UNIDAD_MEDIDAIsNull : Boolean read GetUNIDAD_MEDIDAIsNull write SetUNIDAD_MEDIDAIsNull;
+ property OldUNIDAD_MEDIDA : String read GetOldUNIDAD_MEDIDAValue;
+ property OldUNIDAD_MEDIDAIsNull : Boolean read GetOldUNIDAD_MEDIDAIsNull;
+ property IMPORTE_UNIDAD : Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue;
+ property IMPORTE_UNIDADIsNull : Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull;
+ property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue;
+ property OldIMPORTE_UNIDADIsNull : Boolean read GetOldIMPORTE_UNIDADIsNull;
+ property IMPORTE_TOTAL : Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue;
+ property IMPORTE_TOTALIsNull : Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull;
+ property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue;
+ property OldIMPORTE_TOTALIsNull : Boolean read GetOldIMPORTE_TOTALIsNull;
+ property VISIBLE : SmallInt read GetVISIBLEValue write SetVISIBLEValue;
+ property VISIBLEIsNull : Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull;
+ property OldVISIBLE : SmallInt read GetOldVISIBLEValue;
+ property OldVISIBLEIsNull : Boolean read GetOldVISIBLEIsNull;
+ property ID_ARTICULO : Integer read GetID_ARTICULOValue write SetID_ARTICULOValue;
+ property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull;
+ property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue;
+ property OldID_ARTICULOIsNull : Boolean read GetOldID_ARTICULOIsNull;
+ property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull;
+ property IMPORTE_PORTE : Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue;
+ property IMPORTE_PORTEIsNull : Boolean read GetIMPORTE_PORTEIsNull write SetIMPORTE_PORTEIsNull;
+ property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue;
+ property OldIMPORTE_PORTEIsNull : Boolean read GetOldIMPORTE_PORTEIsNull;
+ property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull : Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldREFERENCIAIsNull : Boolean read GetOldREFERENCIAIsNull;
+ property REFERENCIA_PROVEEDOR : String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue;
+ property REFERENCIA_PROVEEDORIsNull : Boolean read GetREFERENCIA_PROVEEDORIsNull write SetREFERENCIA_PROVEEDORIsNull;
+ property OldREFERENCIA_PROVEEDOR : String read GetOldREFERENCIA_PROVEEDORValue;
+ property OldREFERENCIA_PROVEEDORIsNull : Boolean read GetOldREFERENCIA_PROVEEDORIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
+implementation
+
+uses
+ Variants, uROBinaryHelpers, uDAInterfaces;
+
+{ TListaAnosFacturasBusinessProcessorRules }
+constructor TListaAnosFacturasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+begin
+ inherited;
+end;
+
+destructor TListaAnosFacturasBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+function TListaAnosFacturasBusinessProcessorRules.GetANOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO];
+end;
+
+function TListaAnosFacturasBusinessProcessorRules.GetANOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO]);
+end;
+
+function TListaAnosFacturasBusinessProcessorRules.GetOldANOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosFacturasANO];
+end;
+
+function TListaAnosFacturasBusinessProcessorRules.GetOldANOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosFacturasANO]);
+end;
+
+procedure TListaAnosFacturasBusinessProcessorRules.SetANOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO] := aValue;
+end;
+
+procedure TListaAnosFacturasBusinessProcessorRules.SetANOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO] := Null;
+end;
+
+
+{ TFacturasProformaBusinessProcessorRules }
+constructor TFacturasProformaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+var
+ StrList: TStringList;
+begin
+ inherited;
+
+ StrList := TStringList.Create;
+ StrList.OnChange := OBSERVACIONES_OnChange;
+ f_OBSERVACIONES := NewROStrings(StrList,True);
+end;
+
+destructor TFacturasProformaBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.OBSERVACIONES_OnChange(Sender: TObject);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaOBSERVACIONES] := TStringList(Sender).Text;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIDValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_EMPRESA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_EMPRESA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_EMPRESA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_EMPRESA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_EMPRESA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_EMPRESA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaREFERENCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaREFERENCIA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaREFERENCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaREFERENCIA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetREFERENCIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaREFERENCIA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaREFERENCIA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_FACTURAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_FACTURA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_FACTURAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_FACTURA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_FACTURAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_FACTURA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_FACTURAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_FACTURA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_FACTURAValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_FACTURA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_FACTURAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_FACTURA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_VENCIMIENTOValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_VENCIMIENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_VENCIMIENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_VENCIMIENTO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_VENCIMIENTOValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_VENCIMIENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_VENCIMIENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_VENCIMIENTO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_VENCIMIENTOValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_VENCIMIENTO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_VENCIMIENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_VENCIMIENTO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetSITUACIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaSITUACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetSITUACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaSITUACION]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldSITUACIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaSITUACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldSITUACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaSITUACION]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetSITUACIONValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaSITUACION] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetSITUACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaSITUACION] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetBASE_IMPONIBLEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaBASE_IMPONIBLE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetBASE_IMPONIBLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaBASE_IMPONIBLE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldBASE_IMPONIBLEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaBASE_IMPONIBLE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldBASE_IMPONIBLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaBASE_IMPONIBLE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetBASE_IMPONIBLEValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaBASE_IMPONIBLE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetBASE_IMPONIBLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaBASE_IMPONIBLE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCUENTO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDESCUENTO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCUENTO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCUENTO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_DESCUENTOValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_DESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_DESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_DESCUENTO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_DESCUENTOValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_DESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_DESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_DESCUENTO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_DESCUENTOValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_DESCUENTO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_DESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_DESCUENTO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDESCRIPCION_DESCUENTOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDESCRIPCION_DESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDESCRIPCION_DESCUENTOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDESCRIPCION_DESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDESCRIPCION_DESCUENTOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDESCRIPCION_DESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDESCRIPCION_DESCUENTO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIVAValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIVA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIVAValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIVA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIVAValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIVA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIVA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_IVAValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_IVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_IVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_IVA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_IVAValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_IVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_IVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_IVA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_IVAValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_IVA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_IVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_IVA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetREValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetREIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldREValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaRE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldREIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaRE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetREValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetREIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_REValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_RE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_REIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_RE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_REValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_RE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_REIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_RE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_REValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_RE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_REIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_RE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_TOTALValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_TOTAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_TOTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_TOTAL]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_TOTAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_TOTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_TOTAL]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_TOTAL] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_TOTAL] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings;
+begin
+ result := f_OBSERVACIONES;
+ result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaOBSERVACIONES];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOBSERVACIONESIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaOBSERVACIONES]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings;
+begin
+ result := NewROStrings();
+ result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaOBSERVACIONES];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldOBSERVACIONESIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaOBSERVACIONES]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetOBSERVACIONESIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaOBSERVACIONES] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_CLIENTEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_CLIENTE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_CLIENTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_CLIENTE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_CLIENTEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_CLIENTE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_CLIENTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_CLIENTE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_CLIENTEValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_CLIENTE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_CLIENTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_CLIENTE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNIF_CIFValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNIF_CIF];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNIF_CIFIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNIF_CIF]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNIF_CIFValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNIF_CIF];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNIF_CIFIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNIF_CIF]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNIF_CIFValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNIF_CIF] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNIF_CIFIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNIF_CIF] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNOMBREValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNOMBRE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNOMBREIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNOMBRE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNOMBREValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNOMBRE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNOMBREIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNOMBRE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNOMBREValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNOMBRE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNOMBREIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNOMBRE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_DIRECCIONValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_DIRECCION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_DIRECCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_DIRECCION]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_DIRECCIONValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_DIRECCION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_DIRECCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_DIRECCION]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_DIRECCIONValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_DIRECCION] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_DIRECCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_DIRECCION] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetCALLEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCALLE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetCALLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCALLE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldCALLEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaCALLE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldCALLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaCALLE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetCALLEValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCALLE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetCALLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCALLE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetPOBLACIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPOBLACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetPOBLACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPOBLACION]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldPOBLACIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaPOBLACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldPOBLACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaPOBLACION]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetPOBLACIONValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPOBLACION] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetPOBLACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPOBLACION] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetPROVINCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPROVINCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetPROVINCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPROVINCIA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldPROVINCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaPROVINCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldPROVINCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaPROVINCIA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetPROVINCIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPROVINCIA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetPROVINCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaPROVINCIA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetCODIGO_POSTALValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCODIGO_POSTAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetCODIGO_POSTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCODIGO_POSTAL]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldCODIGO_POSTALValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaCODIGO_POSTAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldCODIGO_POSTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaCODIGO_POSTAL]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCODIGO_POSTAL] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetCODIGO_POSTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaCODIGO_POSTAL] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_ALTA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_ALTA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_ALTA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_ALTA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_ALTA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_ALTA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_MODIFICACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_MODIFICACION]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_MODIFICACION];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaFECHA_MODIFICACION]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_MODIFICACION] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaFECHA_MODIFICACION] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaUSUARIO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaUSUARIO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaUSUARIO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaUSUARIO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetUSUARIOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaUSUARIO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaUSUARIO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_FORMA_PAGOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FORMA_PAGO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_FORMA_PAGOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FORMA_PAGO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_FORMA_PAGOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_FORMA_PAGO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_FORMA_PAGOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_FORMA_PAGO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_FORMA_PAGOValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FORMA_PAGO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_FORMA_PAGOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FORMA_PAGO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetRECARGO_EQUIVALENCIAValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetRECARGO_EQUIVALENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldRECARGO_EQUIVALENCIAValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldRECARGO_EQUIVALENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetRECARGO_EQUIVALENCIAValue(const aValue: SmallInt);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetRECARGO_EQUIVALENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaRECARGO_EQUIVALENCIA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_TIPO_IVAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_TIPO_IVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_TIPO_IVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_TIPO_IVA]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_TIPO_IVAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_TIPO_IVA];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_TIPO_IVAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_TIPO_IVA]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_TIPO_IVAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_TIPO_IVA] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_TIPO_IVAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_TIPO_IVA] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_NETOValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_NETO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_NETO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_NETOValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_NETO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_NETO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_NETOValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_NETO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_NETO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_PORTEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_PORTE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetIMPORTE_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_PORTE]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_PORTEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_PORTE];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldIMPORTE_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaIMPORTE_PORTE]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_PORTEValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_PORTE] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaIMPORTE_PORTE] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNUM_COPIASValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_COPIAS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNUM_COPIASIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_COPIAS]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNUM_COPIASValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNUM_COPIAS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNUM_COPIASIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNUM_COPIAS]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNUM_COPIASValue(const aValue: SmallInt);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_COPIAS] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNUM_COPIASIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_COPIAS] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNUM_CORREOSValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_CORREOS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetNUM_CORREOSIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_CORREOS]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNUM_CORREOSValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNUM_CORREOS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldNUM_CORREOSIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaNUM_CORREOS]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNUM_CORREOSValue(const aValue: SmallInt);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_CORREOS] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetNUM_CORREOSIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaNUM_CORREOS] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDATOS_BANCARIOSValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDATOS_BANCARIOS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetDATOS_BANCARIOSIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDATOS_BANCARIOS]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDATOS_BANCARIOSValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDATOS_BANCARIOS];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldDATOS_BANCARIOSIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaDATOS_BANCARIOS]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDATOS_BANCARIOSValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDATOS_BANCARIOS] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetDATOS_BANCARIOSIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaDATOS_BANCARIOS] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_PEDIDOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_PEDIDO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_PEDIDOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_PEDIDO]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_PEDIDOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_PEDIDO];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_PEDIDOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_PEDIDO]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_PEDIDOValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_PEDIDO] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_PEDIDOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_PEDIDO] := Null;
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_FACTURA_FINALValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FACTURA_FINAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetID_FACTURA_FINALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FACTURA_FINAL]);
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_FACTURA_FINALValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_FACTURA_FINAL];
+end;
+
+function TFacturasProformaBusinessProcessorRules.GetOldID_FACTURA_FINALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProformaID_FACTURA_FINAL]);
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_FACTURA_FINALValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FACTURA_FINAL] := aValue;
+end;
+
+procedure TFacturasProformaBusinessProcessorRules.SetID_FACTURA_FINALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProformaID_FACTURA_FINAL] := Null;
+end;
+
+
+{ TFacturasProforma_DetallesBusinessProcessorRules }
+constructor TFacturasProforma_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+begin
+ inherited;
+end;
+
+destructor TFacturasProforma_DetallesBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIDValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetID_FACTURAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_FACTURA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetID_FACTURAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_FACTURA]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldID_FACTURAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID_FACTURA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldID_FACTURAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID_FACTURA]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetID_FACTURAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_FACTURA] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetID_FACTURAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_FACTURA] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetPOSICIONValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesPOSICION];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetPOSICIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesPOSICION]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldPOSICIONValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesPOSICION];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldPOSICIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesPOSICION]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesPOSICION] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetPOSICIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesPOSICION] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetTIPO_DETALLEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetTIPO_DETALLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldTIPO_DETALLEValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldTIPO_DETALLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetTIPO_DETALLEValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetTIPO_DETALLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesTIPO_DETALLE] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetCONCEPTOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCONCEPTO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetCONCEPTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCONCEPTO]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldCONCEPTOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesCONCEPTO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldCONCEPTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesCONCEPTO]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetCONCEPTOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCONCEPTO] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetCONCEPTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCONCEPTO] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetCANTIDADValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCANTIDAD];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetCANTIDADIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCANTIDAD]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldCANTIDADValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesCANTIDAD];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldCANTIDADIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesCANTIDAD]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetCANTIDADValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCANTIDAD] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetCANTIDADIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesCANTIDAD] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetUNIDAD_MEDIDAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetUNIDAD_MEDIDAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldUNIDAD_MEDIDAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldUNIDAD_MEDIDAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetUNIDAD_MEDIDAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetUNIDAD_MEDIDAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesUNIDAD_MEDIDA] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_UNIDADValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_UNIDADIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_UNIDADValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_UNIDADIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_UNIDADValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_UNIDAD] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_TOTALValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_TOTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_TOTALIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_TOTAL] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetVISIBLEValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesVISIBLE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetVISIBLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesVISIBLE]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldVISIBLEValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesVISIBLE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldVISIBLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesVISIBLE]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetVISIBLEValue(const aValue: SmallInt);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesVISIBLE] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetVISIBLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesVISIBLE] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetID_ARTICULOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_ARTICULO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetID_ARTICULOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_ARTICULO]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldID_ARTICULOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID_ARTICULO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldID_ARTICULOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesID_ARTICULO]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetID_ARTICULOValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_ARTICULO] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetID_ARTICULOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesID_ARTICULO] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesDESCUENTO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesDESCUENTO]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesDESCUENTO];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesDESCUENTO]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesDESCUENTO] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesDESCUENTO] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_PORTEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetIMPORTE_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_PORTEValue: Currency;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldIMPORTE_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_PORTEValue(const aValue: Currency);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetIMPORTE_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesIMPORTE_PORTE] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesREFERENCIA];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesREFERENCIA]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetREFERENCIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA] := Null;
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetREFERENCIA_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetREFERENCIA_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR]);
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldREFERENCIA_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR];
+end;
+
+function TFacturasProforma_DetallesBusinessProcessorRules.GetOldREFERENCIA_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR]);
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetREFERENCIA_PROVEEDORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR] := aValue;
+end;
+
+procedure TFacturasProforma_DetallesBusinessProcessorRules.SetREFERENCIA_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProforma_DetallesREFERENCIA_PROVEEDOR] := Null;
+end;
+
+
+initialization
+ RegisterBusinessProcessorRules(RID_ListaAnosFacturasDelta, TListaAnosFacturasBusinessProcessorRules);
+ RegisterBusinessProcessorRules(RID_FacturasProformaDelta, TFacturasProformaBusinessProcessorRules);
+ RegisterBusinessProcessorRules(RID_FacturasProforma_DetallesDelta, TFacturasProforma_DetallesBusinessProcessorRules);
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Model/uBizDetallesFacturaProforma.pas b/Source/Modulos/Facturas proforma/Model/uBizDetallesFacturaProforma.pas
new file mode 100644
index 0000000..d039c3c
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/uBizDetallesFacturaProforma.pas
@@ -0,0 +1,50 @@
+unit uBizDetallesFacturaProforma;
+
+interface
+
+uses
+ uDAInterfaces, uDADataTable, schFacturasProformaClient_Intf;
+
+const
+ BIZ_CLIENT_DETALLES_FACTURA_PROFORMA = 'Client.DetallesFactura.Proforma';
+
+type
+ IBizDetallesFacturaProforma = interface(IFacturasProforma_Detalles)
+ ['{BCE8EA27-9108-482A-BEFA-104FD6921531}']
+ end;
+
+ TBizDetallesFacturaProforma = class(TFacturasProforma_DetallesDataTableRules, IBizDetallesFacturaProforma)
+ protected
+ procedure OnNewRecord(Sender: TDADataTable); override;
+ procedure BeforeInsert(Sender: TDADataTable); override;
+ end;
+
+implementation
+
+uses
+ DB;
+
+{ TBizDetallesFacturaProforma }
+
+procedure TBizDetallesFacturaProforma.BeforeInsert(Sender: TDADataTable);
+var
+ AMasterTable : TDADataTable;
+begin
+ inherited;
+ AMasterTable := DataTable.GetMasterDataTable;
+ if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then
+ begin
+ AMasterTable.Post;
+ end;
+end;
+
+procedure TBizDetallesFacturaProforma.OnNewRecord(Sender: TDADataTable);
+begin
+ inherited;
+ VISIBLE := 1;
+end;
+
+initialization
+ RegisterDataTableRules(BIZ_CLIENT_DETALLES_FACTURA_PROFORMA, TBizDetallesFacturaProforma);
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Model/uBizFacturasProforma.pas b/Source/Modulos/Facturas proforma/Model/uBizFacturasProforma.pas
new file mode 100644
index 0000000..94ea6b5
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/uBizFacturasProforma.pas
@@ -0,0 +1,343 @@
+unit uBizFacturasProforma;
+
+interface
+
+uses
+ uDAInterfaces, uDADataTable, schFacturasProformaClient_Intf,
+ uBizContactos, uBizDetallesFacturaProforma, uDBSelectionListUtils, Classes;
+
+const
+ BIZ_CLIENT_FACTURA_PROFORMA = 'Client.FacturaPROFORMA';
+
+ CTE_PENDIENTE = 'PENDIENTE';
+ CTE_PAGADA = 'PAGADA';
+
+type
+ IBizFacturaProforma = interface(IFacturasProforma)
+ ['{180381AC-4A61-4615-A66E-2E4516740285}']
+
+ procedure SetCliente(AValue : IBizCliente);
+ function GetCliente : IBizCliente;
+ property Cliente : IBizCliente read GetCliente write SetCliente;
+
+ // Esta propidad es para que el controlador pueda acceder directamente
+ // a la propiedad Cliente
+ procedure _SetCliente(AValue : IBizCliente);
+ function _GetCliente : IBizCliente;
+ property _Cliente : IBizCliente read _GetCliente write _SetCliente;
+
+ function GetDetalles: IBizDetallesFacturaProforma;
+ procedure SetDetalles(Value: IBizDetallesFacturaProforma);
+ property Detalles: IBizDetallesFacturaProforma read GetDetalles write SetDetalles;
+
+ function EsNuevo : Boolean;
+ procedure CalcularImporteTotal;
+ end;
+
+ TBizFacturaProforma = class(TFacturasProformaDataTableRules, IBizFacturaProforma, ISeleccionable)
+ private
+ FSeleccionableInterface : ISeleccionable;
+// procedure CalcularDescuento;
+ procedure CalcularIVA;
+ procedure CalcularRE;
+ procedure CalcularBaseImponible;
+ procedure AsignarTipoIVA (IDTipoIVA : Integer);
+
+ protected
+ FCliente : IBizCliente;
+ FDetalles : IBizDetallesFacturaProforma;
+ FDetallesLink : TDADataSource;
+
+ procedure SetCliente(AValue : IBizCliente);
+ function GetCliente : IBizCliente;
+
+ procedure _SetCliente(AValue : IBizCliente);
+ function _GetCliente : IBizCliente;
+
+ function GetDetalles: IBizDetallesFacturaProforma;
+ procedure SetDetalles(Value: IBizDetallesFacturaProforma);
+
+ procedure RECARGO_EQUIVALENCIAOnChange(Sender: TDACustomField);
+ procedure ID_TIPO_IVAOnChange(Sender: TDACustomField);
+
+ procedure IMPORTE_NETOOnChange(Sender: TDACustomField);
+ procedure IMPORTE_PORTEOnChange(Sender: TDACustomField);
+ procedure DESCUENTOOnChange(Sender: TDACustomField);
+ procedure IVAOnChange(Sender: TDACustomField);
+ procedure REOnChange(Sender: TDACustomField);
+
+ procedure OnNewRecord(Sender: TDADataTable); override;
+
+ function GetSITUACIONValue: String; override;
+ procedure SetID_TIPO_IVAValue(const aValue: Integer); override;
+
+ public
+ function EsNuevo : Boolean;
+ procedure IniciarValoresFacturaNueva;
+ procedure CalcularImporteTotal;
+
+ property Cliente : IBizCliente read GetCliente write SetCliente;
+ property _Cliente : IBizCliente read _GetCliente write _SetCliente;
+ property Detalles: IBizDetallesFacturaProforma read GetDetalles write SetDetalles;
+
+ property SeleccionableInterface : ISeleccionable read FSeleccionableInterface
+ write FSeleccionableInterface implements ISeleccionable;
+
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+ end;
+
+implementation
+
+uses
+ SysUtils, uDataTableUtils, DB, uDateUtils, DateUtils, uDataModuleUsuarios,
+ Variants, cxDateUtils, uTiposIVAController, uBizTiposIVA, uFactuGES_App;
+
+{ TBizFacturaProforma }
+
+function TBizFacturaProforma.EsNuevo: Boolean;
+begin
+ Result := (ID < 0);
+end;
+
+procedure TBizFacturaProforma.AsignarTipoIVA(IDTipoIVA: Integer);
+var
+ ATiposIVAController : ITiposIVAController;
+ ATipoIVA : IBizTipoIVA;
+begin
+ inherited;
+
+ ATiposIVAController := TTiposIVAController.Create;
+ try
+ ATipoIVA := ATiposIVAController.Buscar(IDTipoIVA);
+ ATipoIVA.DataTable.Active := True;
+ if Assigned(ATipoIVA) then
+ begin
+ Edit;
+ IVA := ATipoIVA.IVA;
+ if (RECARGO_EQUIVALENCIA = 1) then
+ RE := ATipoIVA.RE
+ else
+ RE := 0;
+ end;
+ finally
+ ATiposIVAController := NIL;
+ end;
+end;
+
+procedure TBizFacturaProforma.CalcularBaseImponible;
+begin
+ if not Self.DataTable.Editing then
+ Edit;
+ IMPORTE_DESCUENTO := IMPORTE_NETO * (DESCUENTO/100);
+ BASE_IMPONIBLE := IMPORTE_NETO - IMPORTE_DESCUENTO + IMPORTE_PORTE;
+end;
+
+{procedure TBizFacturaProforma.CalcularDescuento;
+begin
+ if not Self.DataTable.Editing then
+ Edit;
+ IMPORTE_DESCUENTO := (DESCUENTO / 100) * IMPORTE_NETO;
+end;}
+
+procedure TBizFacturaProforma.CalcularImporteTotal;
+begin
+ DataTable.DisableControls;
+ DataTable.Fields.FieldEventsDisabled := True;
+ try
+ CalcularBaseImponible;
+ CalcularIVA;
+ CalcularRE;
+
+ if not Self.DataTable.Editing then
+ Edit;
+ IMPORTE_TOTAL := BASE_IMPONIBLE + IMPORTE_IVA + IMPORTE_RE;
+ finally
+ DataTable.Fields.FieldEventsDisabled := False;
+ DataTable.EnableControls;
+ end;
+end;
+
+procedure TBizFacturaProforma.CalcularIVA;
+begin
+ if not Self.DataTable.Editing then
+ Edit;
+ IMPORTE_IVA := (IVA / 100) * BASE_IMPONIBLE;
+end;
+
+procedure TBizFacturaProforma.CalcularRE;
+begin
+ if not Self.DataTable.Editing then
+ Edit;
+ IMPORTE_RE := (RE / 100) * BASE_IMPONIBLE;
+end;
+
+constructor TBizFacturaProforma.Create(aDataTable: TDADataTable);
+begin
+ inherited;
+ FCliente := Nil;
+
+ with DataTable do
+ begin
+ FieldByName(fld_FacturasProformaID_TIPO_IVA).OnChange := ID_TIPO_IVAOnChange;
+ FieldByName(fld_FacturasProformaRECARGO_EQUIVALENCIA).OnChange := RECARGO_EQUIVALENCIAOnChange;
+
+ FieldByName(fld_FacturasProformaIMPORTE_NETO).OnChange := IMPORTE_NETOOnChange;
+ FieldByName(fld_FacturasProformaIMPORTE_PORTE).OnChange := IMPORTE_PORTEOnChange;
+ FieldByName(fld_FacturasProformaDESCUENTO).OnChange := DESCUENTOOnChange;
+ FieldByName(fld_FacturasProformaIVA).OnChange := IVAOnChange;
+ FieldByName(fld_FacturasProformaRE).OnChange := REOnChange;
+ end;
+
+ FDetallesLink := TDADataSource.Create(NIL);
+ FDetallesLink.DataTable := aDataTable;
+
+ FSeleccionableInterface := TSeleccionable.Create(aDataTable);
+end;
+
+procedure TBizFacturaProforma.DESCUENTOOnChange(Sender: TDACustomField);
+begin
+ CalcularImporteTotal;
+end;
+
+destructor TBizFacturaProforma.Destroy;
+begin
+ FCliente := NIL;
+ FDetalles := NIL;
+ FDetallesLink.Free;
+
+ FSeleccionableInterface := NIL;
+ inherited;
+end;
+
+function TBizFacturaProforma.GetCliente: IBizCliente;
+begin
+ Result := FCliente;
+end;
+
+function TBizFacturaProforma.GetDetalles: IBizDetallesFacturaProforma;
+begin
+ Result := FDetalles;
+end;
+
+function TBizFacturaProforma.GetSITUACIONValue: String;
+begin
+ result := Trim(DataTable.Fields[idx_FacturasProformaSITUACION].AsString);
+end;
+
+procedure TBizFacturaProforma.ID_TIPO_IVAOnChange(Sender: TDACustomField);
+begin
+ AsignarTipoIVA(ID_TIPO_IVA);
+end;
+
+procedure TBizFacturaProforma.IMPORTE_NETOOnChange(Sender: TDACustomField);
+begin
+ CalcularImporteTotal;
+end;
+
+procedure TBizFacturaProforma.IMPORTE_PORTEOnChange(Sender: TDACustomField);
+begin
+ CalcularImporteTotal;
+end;
+
+procedure TBizFacturaProforma.IniciarValoresFacturaNueva;
+begin
+ ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
+ USUARIO := AppFactuGES.UsuarioActivo.UserName;
+ FECHA_FACTURA := DateOf(Now);
+ FECHA_VENCIMIENTO := DateOf(Now);
+ ID_CLIENTE := ID_NULO;
+ ID_FORMA_PAGO := AppFactuGES.EmpresaActiva.ID_FORMA_PAGO;
+ ID_TIPO_IVA := AppFactuGES.EmpresaActiva.ID_TIPO_IVA;
+ RE := 0;
+ SITUACION := CTE_PENDIENTE;
+end;
+
+procedure TBizFacturaProforma.IVAOnChange(Sender: TDACustomField);
+begin
+ CalcularImporteTotal;
+end;
+
+procedure TBizFacturaProforma.OnNewRecord(Sender: TDADataTable);
+begin
+ inherited;
+ IniciarValoresFacturaNueva;
+end;
+
+procedure TBizFacturaProforma.RECARGO_EQUIVALENCIAOnChange(
+ Sender: TDACustomField);
+begin
+ AsignarTipoIVA(ID_TIPO_IVA);
+end;
+
+procedure TBizFacturaProforma.REOnChange(Sender: TDACustomField);
+begin
+ CalcularImporteTotal;
+end;
+
+procedure TBizFacturaProforma.SetCliente(AValue: IBizCliente);
+var
+ bEnEdicion : Boolean;
+begin
+ FCliente := AValue;
+
+ bEnEdicion := (DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ Edit;
+
+ if Assigned(FCliente) then
+ begin
+ if not FCliente.DataTable.Active then
+ FCliente.DataTable.Active := True;
+
+ ID_CLIENTE := FCliente.ID;
+ NOMBRE := FCliente.NOMBRE;
+ NIF_CIF := FCliente.NIF_CIF;
+ CALLE := FCliente.CALLE;
+ CODIGO_POSTAL := FCliente.CODIGO_POSTAL;
+ PROVINCIA := FCliente.PROVINCIA;
+ POBLACION := FCliente.POBLACION;
+ if FCliente.ID_FORMA_PAGO > 0 then
+ ID_FORMA_PAGO := FCliente.ID_FORMA_PAGO;
+ if FCliente.ID_TIPO_IVA > 0 then
+ ID_TIPO_IVA := FCliente.ID_TIPO_IVA;
+ RECARGO_EQUIVALENCIA := FCliente.RECARGO_EQUIVALENCIA;
+ DESCUENTO := FCliente.DESCUENTO;
+ Post;
+
+ if bEnEdicion then
+ Edit;
+ end
+end;
+
+procedure TBizFacturaProforma.SetDetalles(Value: IBizDetallesFacturaProforma);
+begin
+ FDetalles := Value;
+ EnlazarMaestroDetalle(FDetallesLink, FDetalles);
+end;
+
+procedure TBizFacturaProforma.SetID_TIPO_IVAValue(const aValue: Integer);
+begin
+ if (aValue = 0) then
+ SetFieldNull(DataTable, fld_FacturasProformaID_TIPO_IVA)
+ else
+ inherited;
+end;
+
+function TBizFacturaProforma._GetCliente: IBizCliente;
+begin
+ Result := FCliente;
+end;
+
+procedure TBizFacturaProforma._SetCliente(AValue: IBizCliente);
+begin
+ FCliente := AValue;
+end;
+
+initialization
+ RegisterDataTableRules(BIZ_CLIENT_FACTURA_PROFORMA, TBizFacturaProforma);
+
+finalization
+
+end.
+
diff --git a/Source/Modulos/Facturas proforma/Model/uBizFacturasProformaServer.pas b/Source/Modulos/Facturas proforma/Model/uBizFacturasProformaServer.pas
new file mode 100644
index 0000000..7a96ef5
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Model/uBizFacturasProformaServer.pas
@@ -0,0 +1,141 @@
+unit uBizFacturasProformaServer;
+
+interface
+
+uses
+ uDAInterfaces, uDADelta, uDABusinessProcessor,
+ schFacturasProformaServer_Intf;
+
+const
+ BIZ_SERVER_FACTURAS_PROFORMA = 'Server.FacturasProforma';
+
+type
+ TBizFacturasProformaServer = class(TFacturasProformaBusinessProcessorRules)
+ private
+ FReferenciaAutomatica : Boolean;
+ function DarReferencia : String;
+ function IncrementarReferencia : Boolean;
+ protected
+ procedure Delete_Asiento_Factura(aChange: TDADeltaChange); virtual;
+ procedure BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); override;
+ procedure AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean;
+ var CanRemoveFromDelta: Boolean); override;
+ end;
+
+implementation
+
+uses
+ Variants, uDAClasses, uBusinessUtils, uROClasses, uROServer, SysUtils,
+ uDataModuleServer, schFacturasProformaClient_Intf, FactuGES_Intf;
+
+const
+ REF_FACTURAS_PROFORMA = 'REF_FACTURAS_PROFORMA';
+
+
+{ TBizFacturasProformaServer }
+
+procedure TBizFacturasProformaServer.AfterProcessChange(
+ Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean;
+ var CanRemoveFromDelta: Boolean);
+begin
+ inherited;
+ case aChange.ChangeType of
+ ctInsert: begin
+// Insert_Asiento_Factura(aChange);
+ end;
+ ctUpdate: begin
+// Update_Asiento_Factura(aChange);
+ end;
+ ctDelete: begin
+// Delete_Asiento_Factura(aChange);
+ end;
+ end;
+
+ { Por defecto, mantenemos los deltas por si alguna tabla hija los necesita }
+ CanRemoveFromDelta := False;
+
+ case aChange.ChangeType of
+ ctInsert, ctUpdate: begin
+ if FReferenciaAutomatica then
+ begin
+ IncrementarReferencia;
+ FReferenciaAutomatica := False;
+ end;
+ end;
+ end;
+end;
+
+procedure TBizFacturasProformaServer.BeforeProcessDelta(
+ Sender: TDABusinessProcessor; const aDelta: IDADelta);
+begin
+ FReferenciaAutomatica := False;
+
+ case Sender.CurrentChange.ChangeType of
+ ctInsert, ctUpdate: begin
+ //Si la referencia no ha sido asignada le asignamos una nosotros
+ if REFERENCIAIsNull or (Length(REFERENCIA) = 0) then
+ begin
+ FReferenciaAutomatica := True;
+ REFERENCIA := DarReferencia;
+ end;
+ end;
+ end;
+end;
+
+function TBizFacturasProformaServer.DarReferencia: String;
+var
+ AReferenciasService : IsrvReferencias;
+ Intf : IInterface;
+ AClientID : TGUID;
+begin
+ // Aunque sea un abono, la referencia es la misma que una factura
+
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf);
+ AReferenciasService := Intf as IsrvReferencias;
+ Result := AReferenciasService.DarNuevaReferencia(REF_FACTURAS_PROFORMA, ID_EMPRESA)
+end;
+
+function TBizFacturasProformaServer.IncrementarReferencia: Boolean;
+var
+ AReferenciasService : IsrvReferencias;
+ Intf : IInterface;
+ AClientID : TGUID;
+begin
+ // Aunque sea un abono, la referencia es la misma que una factura
+
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf);
+ AReferenciasService := Intf as IsrvReferencias;
+ Result := AReferenciasService.IncrementarValorReferencia(REF_FACTURAS_PROFORMA, Self.REFERENCIA, ID_EMPRESA)
+end;
+
+procedure TBizFacturasProformaServer.Delete_Asiento_Factura(aChange: TDADeltaChange);
+var
+ ASchema : TDASchema;
+ ACurrentConn : IDAConnection;
+ ACommand : IDASQLCommand;
+begin
+ ASchema := BusinessProcessor.Schema;
+ ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
+{
+ //Eliminamos los recibos de la factura
+ ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_RecibosFactura');
+ try
+ with ACommand do
+ begin
+ ParamByName('ID_FACTURA').Value := aChange.OldValueByName[fld_FacturasClienteID];
+ Execute;
+ end;
+ finally
+ ACommand := NIL;
+ end;
+}
+end;
+
+initialization
+ RegisterBusinessProcessorRules(BIZ_SERVER_FACTURAS_PROFORMA, TBizFacturasProformaServer);
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.dfm b/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.dfm
new file mode 100644
index 0000000..a799209
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.dfm
@@ -0,0 +1,4639 @@
+object RptFacturasProforma: TRptFacturasProforma
+ OldCreateOrder = True
+ OnCreate = DataModuleCreate
+ OnDestroy = DataModuleDestroy
+ Height = 715
+ Width = 977
+ object schReport: TDASchema
+ ConnectionManager = dmServer.ConnectionManager
+ Datasets = <
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select REFERENCIA, NOMBRE, sum(ANO1) as ANO1, sum (ANO2) as ANO2' +
+ ', sum (IMPORTE_DESCUENTO) as IMPORTE_DESCUENTO,'#10'sum (IMPORTE_DES' +
+ 'CUENTO2) as IMPORTE_DESCUENTO2, sum (IMPORTE_TOTAL) as IMPORTE_T' +
+ 'OTAL, sum (IMPORTE_COBRADO) as IMPORTE_COBRADO,'#10'sum (PORCENTAJE)' +
+ ' as PORCENTAJE'#10'from'#10'('#10'select C.REFERENCIA as REFERENCIA, COALESC' +
+ 'E(C.NOMBRE, P.NOMBRE) as NOMBRE, P.ANO as ANO1, 0 as ANO2,'#10'SUM(P' +
+ '.IMPORTE_DESCUENTO) as IMPORTE_DESCUENTO, 0 as IMPORTE_DESCUENTO' +
+ '2, SUM(P.IMPORTE_NETO) as IMPORTE_TOTAL,'#10'SUM(P.IMPORTE_TOTAL) as' +
+ ' IMPORTE_COBRADO,'#10'case when SUM(P.IMPORTE_NETO) = 0 then 0'#10'else ' +
+ '((SUM(P.IMPORTE_DESCUENTO) * 100) / SUM(P.IMPORTE_NETO)) end as ' +
+ 'PORCENTAJE'#10#10'from V_INF_FAC_DET_CLIENTE P'#10'left join CONTACTOS C o' +
+ 'n P.ID_CLIENTE = C.ID'#10'where p.ID_EMPRESA = :ID_EMPRESA'#10'and P.ANO' +
+ ' = :ANO'#10'group by 1,2,3,4'#10#10'union'#10#10'select C2.REFERENCIA as REFEREN' +
+ 'CIA, COALESCE(C2.NOMBRE, P2.NOMBRE) as NOMBRE, 0 as ANO1, P2.ANO' +
+ ' as ANO2,'#10' 0 as IMPORTE_DESCUENTO, SUM(P2.IMPORTE_DESCUENTO) as ' +
+ 'IMPORTE_DESCUENTO2, 0 as IMPORTE_TOTAL,'#10' 0 as IMPORTE_COBRADO, 0' +
+ ' as PORCENTAJE'#10'from V_INF_FAC_DET_CLIENTE P2'#10'left join CONTACTOS' +
+ ' C2 on P2.ID_CLIENTE = C2.ID'#10'where p2.ID_EMPRESA = :ID_EMPRESA'#10'a' +
+ 'nd P2.ANO = :ANO2'#10'group by 1,2,3,4,5'#10')'#10#10'group by 1,2'#10'having (sum' +
+ '(ANO1) > 0)'#10'order by 3,5 desc'#10'rows 1 to :NTOP'#10#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO'
+ TableField = 'IMPORTE_DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'IMPORTE_COBRADO'
+ TableField = 'IMPORTE_COBRADO'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO2'
+ TableField = 'IMPORTE_DESCUENTO2'
+ end>
+ end>
+ Name = 'InformeListadoClientesMayorDescuentoResumen'
+ Fields = <
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO1'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'ANO2'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_COBRADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datDecimal
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, SEMESTRE as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTAL' +
+ #10'from V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'an' +
+ 'd (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 o' +
+ 'n (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, ' +
+ 'comp2.ANO, SEMESTRE as NFILA, SUM(comp2.BASE_IMPONIBLE) as IMPOR' +
+ 'TE_TOTAL'#10'from V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_EMP' +
+ 'RESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) pe' +
+ 'riodo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'SEMESTRAL'#39#10'o' +
+ 'rder by valor asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompSemestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, MES as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from' +
+ ' V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (AN' +
+ 'O = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 on (VA' +
+ 'LOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, comp2' +
+ '.ANO, MES as NFILA, SUM(comp2.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'f' +
+ 'rom V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'and ' +
+ '(ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo2 on ' +
+ '(VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'MENSUAL'#39#10'order by valo' +
+ 'r asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompMensual'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select REFERENCIA, NOMBRE, sum(ANO1) as ANO1, sum (ANO2) as ANO2' +
+ ', sum (Importe_TOTAL_ANO) as IMPORTE_TOTAL_ANO,'#10'sum (NUMFAC) as ' +
+ 'NUMFAC, sum (IMPORTE_TOTAL) as IMPORTE_TOTAL_ANO1, sum (IMPORTE_' +
+ 'TOTAL_ANO2) as IMPORTE_TOTAL_ANO2,'#10'sum (PORCENTAJE) as PORCENTAJ' +
+ 'E'#10'from'#10'('#10'select C.REFERENCIA as REFERENCIA, COALESCE(C.NOMBRE, P' +
+ '.NOMBRE) as NOMBRE, P.ANO as ANO1, 0 as ANO2, p.Importe_TOTAL_AN' +
+ 'O,'#10'COUNT(P.FECHA_FACTURA) as NUMFAC, SUM(P.BASE_IMPONIBLE) as IM' +
+ 'PORTE_TOTAL, 0 as IMPORTE_TOTAL_ANO2,'#10'((SUM(P.BASE_IMPONIBLE)*10' +
+ '0)/p.Importe_TOTAL_ANO) as PORCENTAJE'#10'from V_INF_FAC_CLIENTE P'#10'l' +
+ 'eft join CONTACTOS C on P.ID_CLIENTE = C.ID'#10'where p.ID_EMPRESA =' +
+ ' :ID_EMPRESA'#10'and P.ANO = :ANO'#10'group by 1,2,3,4,5'#10#10'union'#10#10'select ' +
+ 'C2.REFERENCIA as REFERENCIA, COALESCE(C2.NOMBRE, P2.NOMBRE) as N' +
+ 'OMBRE, 0 as ANO1, P2.ANO as ANO2, 0 as Importe_TOTAL_ANO,'#10'0 as N' +
+ 'UMFAC, 0 as IMPORTE_TOTAL, SUM(P2.BASE_IMPONIBLE) as IMPORTE_TOT' +
+ 'AL_ANO2, 0 as PORCENTAJE'#10'from V_INF_FAC_CLIENTE P2'#10'left join CON' +
+ 'TACTOS C2 on P2.ID_CLIENTE = C2.ID'#10'where p2.ID_EMPRESA = :ID_EMP' +
+ 'RESA'#10'and P2.ANO = :ANO2'#10'group by 1,2,3,4,5,6,7'#10')'#10#10'group by 1,2'#10'h' +
+ 'aving (sum(ANO1) > 0)'#10'order by 3,7 desc'#10'rows 1 to :NTOP'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO'
+ TableField = 'IMPORTE_TOTAL_ANO'
+ end
+ item
+ DatasetField = 'NUMFAC'
+ TableField = 'NUMFAC'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO1'
+ TableField = 'IMPORTE_TOTAL_ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO2'
+ TableField = 'IMPORTE_TOTAL_ANO2'
+ end>
+ end>
+ Name = 'InformeListadoClientesMayorFacturacionResumen'
+ Fields = <
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO1'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'ANO2'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'NUMFAC'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, TRIMESTRE as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTA' +
+ 'L'#10'from V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'a' +
+ 'nd (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 ' +
+ 'on (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA,' +
+ ' comp2.ANO, TRIMESTRE as NFILA, SUM(comp2.BASE_IMPONIBLE) as IMP' +
+ 'ORTE_TOTAL'#10'from V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_E' +
+ 'MPRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) ' +
+ 'periodo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'TRIMESTRAL' +
+ #39#10'order by valor asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompTrimestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ Value = '1'
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'SELECT'#10' FACTURAS_CLIENTE.ID, FACTURAS_CLIENTE.REFERENCIA, FAC' +
+ 'TURAS_CLIENTE.FECHA_FACTURA,'#10' CASE WHEN (FACTURAS_CLIENTE.IMP' +
+ 'ORTE_TOTAL < 0) THEN '#39'A'#39' ELSE '#39'F'#39' END AS TIPO,'#10'/*'#10' v_facturas' +
+ '_cliente.situacion,'#10'*/'#10' FACTURAS_CLIENTE.BASE_IMPONIBLE, FACT' +
+ 'URAS_CLIENTE.DESCUENTO, FACTURAS_CLIENTE.IMPORTE_DESCUENTO,'#10' ' +
+ 'FACTURAS_CLIENTE.IVA, FACTURAS_CLIENTE.IMPORTE_IVA,'#10' FACTURAS' +
+ '_CLIENTE.RE, FACTURAS_CLIENTE.IMPORTE_RE,'#10' FACTURAS_CLIENTE.I' +
+ 'MPORTE_TOTAL,'#10' FACTURAS_CLIENTE.OBSERVACIONES, FORMAS_PAGO.DE' +
+ 'SCRIPCION AS FORMA_PAGO, FACTURAS_CLIENTE.ID_CLIENTE,'#10' FACTUR' +
+ 'AS_CLIENTE.NIF_CIF, FACTURAS_CLIENTE.NOMBRE, FACTURAS_CLIENTE.CA' +
+ 'LLE,'#10' FACTURAS_CLIENTE.PROVINCIA, FACTURAS_CLIENTE.CODIGO_POS' +
+ 'TAL, FACTURAS_CLIENTE.POBLACION,'#10#10' CONTACTOS_DATOS_BANCO.TITU' +
+ 'LAR,'#10' CONTACTOS_DATOS_BANCO.ENTIDAD,'#10' CONTACTOS_DATOS_BANC' +
+ 'O.SUCURSAL,'#10' CONTACTOS_DATOS_BANCO.DC,'#10' CONTACTOS_DATOS_BA' +
+ 'NCO.CUENTA,'#10#10' ID_EMPRESA, EMPRESAS.NIF_CIF as NIF_CIF_EMPRESA' +
+ ', EMPRESAS.RAZON_SOCIAL,'#10' EMPRESAS.CALLE as CALLE_EMPRESA, EM' +
+ 'PRESAS.POBLACION as POBLACION_EMPRESA,'#10' EMPRESAS.PROVINCIA as' +
+ ' PROVINCIA_EMPRESA, EMPRESAS.CODIGO_POSTAL as CODIGO_POSTAL_EMPR' +
+ 'ESA,'#10' EMPRESAS.TELEFONO_1, EMPRESAS.FAX, EMPRESAS.MOVIL_1, EM' +
+ 'PRESAS.EMAIL_1,'#10' EMPRESAS.PAGINA_WEB, EMPRESAS.REGISTRO_MERCA' +
+ 'NTIL, EMPRESAS.LOGOTIPO'#10#10'FROM FACTURAS_CLIENTE'#10#10'LEFT JOIN EMPRES' +
+ 'AS ON EMPRESAS.ID = ID_EMPRESA'#10'LEFT JOIN FORMAS_PAGO ON (FORMAS_' +
+ 'PAGO.ID = FACTURAS_CLIENTE.ID_FORMA_PAGO)'#10'LEFT JOIN CONTACTOS_DA' +
+ 'TOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = FACTURAS_CLIEN' +
+ 'TE.ID_CLIENTE)'#10#10'WHERE FACTURAS_CLIENTE.ID = :ID'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'TIPO'
+ TableField = 'TIPO'
+ end
+ item
+ DatasetField = 'FECHA_FACTURA'
+ TableField = 'FECHA_FACTURA'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO'
+ TableField = 'IMPORTE_DESCUENTO'
+ end
+ item
+ DatasetField = 'IVA'
+ TableField = 'IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'RE'
+ TableField = 'RE'
+ end
+ item
+ DatasetField = 'IMPORTE_RE'
+ TableField = 'IMPORTE_RE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'OBSERVACIONES'
+ TableField = 'OBSERVACIONES'
+ end
+ item
+ DatasetField = 'NIF_CIF'
+ TableField = 'NIF_CIF'
+ end
+ item
+ DatasetField = 'ID_CLIENTE'
+ TableField = 'ID_CLIENTE'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'CALLE'
+ TableField = 'CALLE'
+ end
+ item
+ DatasetField = 'PROVINCIA'
+ TableField = 'PROVINCIA'
+ end
+ item
+ DatasetField = 'POBLACION'
+ TableField = 'POBLACION'
+ end
+ item
+ DatasetField = 'CODIGO_POSTAL'
+ TableField = 'CODIGO_POSTAL'
+ end
+ item
+ DatasetField = 'FORMA_PAGO'
+ TableField = 'FORMA_PAGO'
+ end
+ item
+ DatasetField = 'TITULAR'
+ TableField = 'TITULAR'
+ end
+ item
+ DatasetField = 'ENTIDAD'
+ TableField = 'ENTIDAD'
+ end
+ item
+ DatasetField = 'SUCURSAL'
+ TableField = 'SUCURSAL'
+ end
+ item
+ DatasetField = 'DC'
+ TableField = 'DC'
+ end
+ item
+ DatasetField = 'CUENTA'
+ TableField = 'CUENTA'
+ end
+ item
+ DatasetField = 'NIF_CIF_EMPRESA'
+ TableField = 'NIF_CIF_EMPRESA'
+ end
+ item
+ DatasetField = 'RAZON_SOCIAL'
+ TableField = 'RAZON_SOCIAL'
+ end
+ item
+ DatasetField = 'CALLE_EMPRESA'
+ TableField = 'CALLE_EMPRESA'
+ end
+ item
+ DatasetField = 'POBLACION_EMPRESA'
+ TableField = 'POBLACION_EMPRESA'
+ end
+ item
+ DatasetField = 'PROVINCIA_EMPRESA'
+ TableField = 'PROVINCIA_EMPRESA'
+ end
+ item
+ DatasetField = 'CODIGO_POSTAL_EMPRESA'
+ TableField = 'CODIGO_POSTAL_EMPRESA'
+ end
+ item
+ DatasetField = 'TELEFONO_1'
+ TableField = 'TELEFONO_1'
+ end
+ item
+ DatasetField = 'FAX'
+ TableField = 'FAX'
+ end
+ item
+ DatasetField = 'MOVIL_1'
+ TableField = 'MOVIL_1'
+ end
+ item
+ DatasetField = 'EMAIL_1'
+ TableField = 'EMAIL_1'
+ end
+ item
+ DatasetField = 'PAGINA_WEB'
+ TableField = 'PAGINA_WEB'
+ end
+ item
+ DatasetField = 'REGISTRO_MERCANTIL'
+ TableField = 'REGISTRO_MERCANTIL'
+ end
+ item
+ DatasetField = 'LOGOTIPO'
+ TableField = 'LOGOTIPO'
+ end>
+ end>
+ Name = 'InformeFacturasCliente'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID'
+ InPrimaryKey = True
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_REFERENCIA'
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasCliente_FECHA_FACTURA'
+ end
+ item
+ Name = 'TIPO'
+ DataType = datString
+ Size = 1
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_BASE_IMPONIBLE'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasCliente_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_DESCUENTO'
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasCliente_IVA'
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_IVA'
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ DictionaryEntry = 'FacturasCliente_OBSERVACIONES'
+ end
+ item
+ Name = 'FORMA_PAGO'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID_CLIENTE'
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'FacturasCliente_NIF_CIF'
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_NOMBRE'
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_CALLE'
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_PROVINCIA'
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DictionaryEntry = 'FacturasCliente_CODIGO_POSTAL'
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_POBLACION'
+ end
+ item
+ Name = 'TITULAR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ENTIDAD'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'SUCURSAL'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'DC'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'CUENTA'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID_EMPRESA'
+ end
+ item
+ Name = 'NIF_CIF_EMPRESA'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'RAZON_SOCIAL'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CALLE_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'POBLACION_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PROVINCIA_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CODIGO_POSTAL_EMPRESA'
+ DataType = datString
+ Size = 10
+ end
+ item
+ Name = 'TELEFONO_1'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'FAX'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'MOVIL_1'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'EMAIL_1'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PAGINA_WEB'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'REGISTRO_MERCANTIL'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'LOGOTIPO'
+ DataType = datBlob
+ end>
+ ReadOnly = True
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ Value = '2'
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'SELECT'#10' DET.ID, DET.ID_FACTURA, DET.POSICION, DET.TIPO_DETALL' +
+ 'E, ARTICULOS.REFERENCIA,'#10' DET.CONCEPTO, DET.CANTIDAD, DET.UNI' +
+ 'DAD_MEDIDA, DET.IMPORTE_UNIDAD,'#10' DET.DESCUENTO, DET.IMPORTE_T' +
+ 'OTAL, DET.VISIBLE'#10'FROM FACTURAS_CLIENTE_DETALLES AS DET'#10'LEFT OUT' +
+ 'ER JOIN ARTICULOS ON (ARTICULOS.ID = DET.ID_ARTICULO)'#10'WHERE DET.' +
+ 'ID_FACTURA = :ID_FACTURA AND {Where}'#10'ORDER BY DET.ID_FACTURA, DE' +
+ 'T.POSICION;'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_FACTURA'
+ TableField = 'ID_FACTURA'
+ end
+ item
+ DatasetField = 'POSICION'
+ TableField = 'POSICION'
+ end
+ item
+ DatasetField = 'TIPO_DETALLE'
+ TableField = 'TIPO_DETALLE'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'CONCEPTO'
+ TableField = 'CONCEPTO'
+ end
+ item
+ DatasetField = 'CANTIDAD'
+ TableField = 'CANTIDAD'
+ end
+ item
+ DatasetField = 'UNIDAD_MEDIDA'
+ TableField = 'UNIDAD_MEDIDA'
+ end
+ item
+ DatasetField = 'IMPORTE_UNIDAD'
+ TableField = 'IMPORTE_UNIDAD'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'VISIBLE'
+ TableField = 'VISIBLE'
+ end>
+ end>
+ Name = 'InformeFacturasCliente_Detalles'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ end
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_FACTURA'
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'SELECT'#10' V_RECIBOS_CLIENTE.ID_FACTURA, V_RECIBOS_CLIENTE.FECHA' +
+ '_VENCIMIENTO, V_RECIBOS_CLIENTE.IMPORTE_TOTAL'#10'FROM V_RECIBOS_CLI' +
+ 'ENTE'#10'WHERE V_RECIBOS_CLIENTE.ID_FACTURA = :ID_FACTURA'#10'ORDER BY V' +
+ '_RECIBOS_CLIENTE.FECHA_VENCIMIENTO'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_FACTURA'
+ TableField = 'ID_FACTURA'
+ end
+ item
+ DatasetField = 'FECHA_VENCIMIENTO'
+ TableField = 'FECHA_VENCIMIENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end>
+ end>
+ Name = 'InformeFacturasCliente_Vencimientos'
+ Fields = <
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'V_FACTURAS_CLIENTE'
+ SQL =
+ 'select ID_EMPRESA,'#10'extract (year from fecha_factura) as ANO,'#10'ext' +
+ 'ract (month from fecha_factura) as MES,'#10'case'#10'when extract (month' +
+ ' from fecha_factura) = 1 then '#39'ENERO - '#39' || extract (year from f' +
+ 'echa_factura)'#10'when extract (month from fecha_factura) = 2 then '#39 +
+ 'FEBRERO - '#39' || extract (year from fecha_factura)'#10'when extract (m' +
+ 'onth from fecha_factura) = 3 then '#39'MARZO - '#39' || extract (year fr' +
+ 'om fecha_factura)'#10'when extract (month from fecha_factura) = 4 th' +
+ 'en '#39'ABRIL - '#39' || extract (year from fecha_factura)'#10'when extract ' +
+ '(month from fecha_factura) = 5 then '#39'MAYO - '#39' || extract (year f' +
+ 'rom fecha_factura)'#10'when extract (month from fecha_factura) = 6 t' +
+ 'hen '#39'JUNIO - '#39' || extract (year from fecha_factura)'#10'when extract' +
+ ' (month from fecha_factura) = 7 then '#39'JULIO - '#39' || extract (year' +
+ ' from fecha_factura)'#10'when extract (month from fecha_factura) = 8' +
+ ' then '#39'AGOSTO - '#39' || extract (year from fecha_factura)'#10'when extr' +
+ 'act (month from fecha_factura) = 9 then '#39'SEPTIEMBRE - '#39' || extra' +
+ 'ct (year from fecha_factura)'#10'when extract (month from fecha_fact' +
+ 'ura) = 10 then '#39'OCTUBRE - '#39' || extract (year from fecha_factura)' +
+ #10'when extract (month from fecha_factura) = 11 then '#39'NOVIEMBRE - ' +
+ #39' || extract (year from fecha_factura)'#10'when extract (month from ' +
+ 'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' +
+ 'cha_factura)'#10'end as TITULO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE, SIT' +
+ 'UACION, NIF_CIF, FECHA_FACTURA, fecha_vencimiento, BASE_IMPONIBL' +
+ 'E, IMPORTE_IVA, IMPORTE_TOTAL'#10#10'from V_facturas_cliente'#10'where {wh' +
+ 'ere}'#10'order by ANO, MES, FECHA_FACTURA, NOMBRE'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'MES'
+ TableField = ''
+ SQLOrigin = 'MES'
+ end
+ item
+ DatasetField = 'TITULO'
+ TableField = ''
+ SQLOrigin = 'TITULO'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'ID_CLIENTE'
+ TableField = 'ID_CLIENTE'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'SITUACION'
+ TableField = 'SITUACION'
+ end
+ item
+ DatasetField = 'NIF_CIF'
+ TableField = 'NIF_CIF'
+ end
+ item
+ DatasetField = 'FECHA_FACTURA'
+ TableField = 'FECHA_FACTURA'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = ''
+ SQLOrigin = 'ANO'
+ end
+ item
+ DatasetField = 'FECHA_VENCIMIENTO'
+ TableField = 'FECHA_VENCIMIENTO'
+ end>
+ end>
+ Name = 'InformeListadoFacturas'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'MES'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'TITULO'
+ DataType = datString
+ Size = 19
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 19
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'V_FACTURAS_CLIENTE'
+ SQL =
+ 'select ID_EMPRESA,'#10'extract (year from fecha_vencimiento) as ANO,' +
+ #10'extract (month from fecha_vencimiento) as MES,'#10'case'#10'when extrac' +
+ 't (month from fecha_vencimiento) = 1 then '#39'ENERO - '#39' || extract ' +
+ '(year from fecha_vencimiento)'#10'when extract (month from fecha_ven' +
+ 'cimiento) = 2 then '#39'FEBRERO - '#39' || extract (year from fecha_venc' +
+ 'imiento)'#10'when extract (month from fecha_vencimiento) = 3 then '#39'M' +
+ 'ARZO - '#39' || extract (year from fecha_vencimiento)'#10'when extract (' +
+ 'month from fecha_vencimiento) = 4 then '#39'ABRIL - '#39' || extract (ye' +
+ 'ar from fecha_vencimiento)'#10'when extract (month from fecha_vencim' +
+ 'iento) = 5 then '#39'MAYO - '#39' || extract (year from fecha_vencimient' +
+ 'o)'#10'when extract (month from fecha_vencimiento) = 6 then '#39'JUNIO -' +
+ ' '#39' || extract (year from fecha_vencimiento)'#10'when extract (month ' +
+ 'from fecha_vencimiento) = 7 then '#39'JULIO - '#39' || extract (year fro' +
+ 'm fecha_vencimiento)'#10'when extract (month from fecha_vencimiento)' +
+ ' = 8 then '#39'AGOSTO - '#39' || extract (year from fecha_vencimiento)'#10'w' +
+ 'hen extract (month from fecha_vencimiento) = 9 then '#39'SEPTIEMBRE ' +
+ '- '#39' || extract (year from fecha_vencimiento)'#10'when extract (month' +
+ ' from fecha_vencimiento) = 10 then '#39'OCTUBRE - '#39' || extract (year' +
+ ' from fecha_vencimiento)'#10'when extract (month from fecha_vencimie' +
+ 'nto) = 11 then '#39'NOVIEMBRE - '#39' || extract (year from fecha_vencim' +
+ 'iento)'#10'when extract (month from fecha_vencimiento) = 12 then '#39'DI' +
+ 'CIEMBRE - '#39' || extract (year from fecha_vencimiento)'#10'end as TITU' +
+ 'LO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE, SITUACION, NIF_CIF, fecha_f' +
+ 'actura, fecha_vencimiento, BASE_IMPONIBLE, IMPORTE_IVA, IMPORTE_' +
+ 'TOTAL'#10#10'from V_facturas_cliente'#10'where {where}'#10'order by ANO, MES, ' +
+ 'fecha_vencimiento, NOMBRE'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = ''
+ SQLOrigin = 'ANO'
+ end
+ item
+ DatasetField = 'MES'
+ TableField = ''
+ SQLOrigin = 'MES'
+ end
+ item
+ DatasetField = 'TITULO'
+ TableField = ''
+ SQLOrigin = 'TITULO'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'ID_CLIENTE'
+ TableField = 'ID_CLIENTE'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'SITUACION'
+ TableField = 'SITUACION'
+ end
+ item
+ DatasetField = 'NIF_CIF'
+ TableField = 'NIF_CIF'
+ end
+ item
+ DatasetField = 'FECHA_FACTURA'
+ TableField = 'FECHA_FACTURA'
+ end
+ item
+ DatasetField = 'FECHA_VENCIMIENTO'
+ TableField = 'FECHA_VENCIMIENTO'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end>
+ end>
+ Name = 'InformeListadoFacturasPendientes'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'MES'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'TITULO'
+ DataType = datString
+ Size = 19
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 19
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'V_FACTURAS_CLIENTE'
+ SQL =
+ 'select ID_EMPRESA,'#10'extract (year from fecha_factura) as ANO,'#10'ext' +
+ 'ract (month from fecha_factura) as MES,'#10'case'#10'when extract (month' +
+ ' from fecha_factura) = 1 then '#39'ENERO - '#39' || extract (year from f' +
+ 'echa_factura)'#10'when extract (month from fecha_factura) = 2 then '#39 +
+ 'FEBRERO - '#39' || extract (year from fecha_factura)'#10'when extract (m' +
+ 'onth from fecha_factura) = 3 then '#39'MARZO - '#39' || extract (year fr' +
+ 'om fecha_factura)'#10'when extract (month from fecha_factura) = 4 th' +
+ 'en '#39'ABRIL - '#39' || extract (year from fecha_factura)'#10'when extract ' +
+ '(month from fecha_factura) = 5 then '#39'MAYO - '#39' || extract (year f' +
+ 'rom fecha_factura)'#10'when extract (month from fecha_factura) = 6 t' +
+ 'hen '#39'JUNIO - '#39' || extract (year from fecha_factura)'#10'when extract' +
+ ' (month from fecha_factura) = 7 then '#39'JULIO - '#39' || extract (year' +
+ ' from fecha_factura)'#10'when extract (month from fecha_factura) = 8' +
+ ' then '#39'AGOSTO - '#39' || extract (year from fecha_factura)'#10'when extr' +
+ 'act (month from fecha_factura) = 9 then '#39'SEPTIEMBRE - '#39' || extra' +
+ 'ct (year from fecha_factura)'#10'when extract (month from fecha_fact' +
+ 'ura) = 10 then '#39'OCTUBRE - '#39' || extract (year from fecha_factura)' +
+ #10'when extract (month from fecha_factura) = 11 then '#39'NOVIEMBRE - ' +
+ #39' || extract (year from fecha_factura)'#10'when extract (month from ' +
+ 'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' +
+ 'cha_factura)'#10'end as TITULO,'#10'sum(BASE_IMPONIBLE) as BASE_IMPONIBL' +
+ 'E,'#10'sum(IMPORTE_IVA) as IMPORTE_IVA,'#10'sum(IMPORTE_TOTAL) AS IMPORT' +
+ 'E_TOTAL'#10'from V_facturas_cliente'#10'group by 1,2,3,4'#10'order by 1,2,3,' +
+ '4'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = ''
+ SQLOrigin = 'ANO'
+ end
+ item
+ DatasetField = 'MES'
+ TableField = ''
+ SQLOrigin = 'MES'
+ end
+ item
+ DatasetField = 'TITULO'
+ TableField = ''
+ SQLOrigin = 'TITULO'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end>
+ end>
+ Name = 'InformeListadoFacturasResumen'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'MES'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'TITULO'
+ DataType = datString
+ Size = 19
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select REFERENCIA, NOMBRE, sum(ANO1) as ANO1, sum (ANO2) as ANO2' +
+ ', sum (IMPORTE_TOTAL_ANO) as IMPORTE_TOTAL_ANO,'#10'sum (IMPORTE_TOT' +
+ 'AL_ANO1) as IMPORTE_TOTAL_ANO1, sum (IMPORTE_TOTAL_ANO2) as IMPO' +
+ 'RTE_TOTAL_ANO2,'#10'sum (PORCENTAJE) as PORCENTAJE'#10'from'#10'('#10'select C.R' +
+ 'EFERENCIA as REFERENCIA, COALESCE(C.NOMBRE, '#39'Agente no asignado'#39 +
+ ') as NOMBRE, P.ANO as ANO1, 0 as ANO2,'#10'p.IMPORTE_TOTAL_ANO, SUM(' +
+ 'P.IMPORTE_TOTAL) as IMPORTE_TOTAL_ANO1, 0 as IMPORTE_TOTAL_ANO2,' +
+ #10' ((SUM(P.IMPORTE_TOTAL)*100)/p.IMPORTE_TOTAL_ANO) as PORCENTAJE' +
+ #10#10'from V_INF_FAC_DET_CLIENTE P'#10'left join CONTACTOS C on P.ID_AGE' +
+ 'NTE = C.ID'#10'left join AGENTES_DATOS AD on P.ID_AGENTE = AD.ID_AGE' +
+ 'NTE'#10'where p.ID_EMPRESA = :ID_EMPRESA'#10'and P.ANO = :ANO'#10'and AD.FEC' +
+ 'HA_BAJA is null'#10'group by 1,2,3,4,5'#10#10'union'#10#10'select C2.REFERENCIA ' +
+ 'as REFERENCIA, COALESCE(C2.NOMBRE, '#39'Agente no asignado'#39') as NOMB' +
+ 'RE, 0 as ANO1, P2.ANO as ANO2,'#10' 0 as IMPORTE_TOTAL_ANO, 0 as IMP' +
+ 'ORTE_TOTAL_ANO1, SUM(P2.IMPORTE_TOTAL) as IMPORTE_TOTAL_ANO2,'#10' 0' +
+ ' as PORCENTAJE'#10'from V_INF_FAC_DET_CLIENTE P2'#10'left join CONTACTOS' +
+ ' C2 on P2.ID_AGENTE = C2.ID'#10'left join AGENTES_DATOS AD2 on P2.ID' +
+ '_AGENTE = AD2.ID_AGENTE'#10'where p2.ID_EMPRESA = :ID_EMPRESA'#10'and P2' +
+ '.ANO = :ANO2'#10'and AD2.FECHA_BAJA is null'#10'group by 1,2,3,4,5,6'#10')'#10#10 +
+ 'group by 1,2'#10'having (sum(ANO1) > 0)'#10'order by 3,6 desc'#10'rows 1 to ' +
+ ':NTOP'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO'
+ TableField = 'IMPORTE_TOTAL_ANO'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO1'
+ TableField = 'IMPORTE_TOTAL_ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO2'
+ TableField = 'IMPORTE_TOTAL_ANO2'
+ end>
+ end>
+ Name = 'InformeListadoAgentesMayorFacturacionResumen'
+ Fields = <
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO1'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'ANO2'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select VALOR, DESCRIPCION,'#10'periodo_ingresos1.ANO as Ano1, period' +
+ 'o_ingresos1.IMPORTE_TOTAL as INGRESOS_ANO1,'#10'periodo_gastos1.ANO ' +
+ 'as Ano1, periodo_gastos1.IMPORTE_TOTAL as GASTOS_ANO1,'#10'(coalesce' +
+ '(periodo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.' +
+ 'IMPORTE_TOTAL, 0)) as BENEFICIO_ANO1,'#10'case'#10'when (periodo_ingreso' +
+ 's1.IMPORTE_TOTAL = 0) then (100 - ((coalesce(periodo_ingresos1.I' +
+ 'MPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0))*1' +
+ '00))'#10'else ((((coalesce(periodo_ingresos1.IMPORTE_TOTAL, 0) - coa' +
+ 'lesce(periodo_gastos1.IMPORTE_TOTAL, 0))*100)/periodo_ingresos1.' +
+ 'IMPORTE_TOTAL))'#10'end as Porcentaje_Beneficios_Ano1,'#10#10'periodo_ingr' +
+ 'esos2.ANO as Ano2, periodo_ingresos2.IMPORTE_TOTAL as INGRESOS_A' +
+ 'NO2,'#10'periodo_gastos2.ANO as Ano2, periodo_gastos2.IMPORTE_TOTAL ' +
+ 'as GASTOS_ANO2,'#10'(coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)) as BENEFICIO_ANO2,'#10'c' +
+ 'ase'#10'when (periodo_ingresos2.IMPORTE_TOTAL = 0) then (100 - ((coa' +
+ 'lesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gas' +
+ 'tos2.IMPORTE_TOTAL, 0))*100))'#10'else ((((coalesce(periodo_ingresos' +
+ '2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)' +
+ ')*100)/periodo_ingresos2.IMPORTE_TOTAL))'#10'end as Porcentaje_Benef' +
+ 'icios_Ano2,'#10#10'(periodo_ingresos1.IMPORTE_TOTAL - periodo_ingresos' +
+ '2.IMPORTE_TOTAL) as Diferencia_Ingresos,'#10'case'#10'when (periodo_ingr' +
+ 'esos2.IMPORTE_TOTAL = 0) then (100 - ((periodo_ingresos1.IMPORTE' +
+ '_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_' +
+ 'ingresos1.IMPORTE_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100)/' +
+ 'periodo_ingresos2.IMPORTE_TOTAL)'#10'end as Porcentaje_Aumento_Ingre' +
+ 'sos,'#10#10'(periodo_gastos1.IMPORTE_TOTAL - periodo_gastos2.IMPORTE_T' +
+ 'OTAL) as Diferencia_Gastos,'#10'case'#10'when (periodo_gastos2.IMPORTE_T' +
+ 'OTAL = 0) then (100 - ((periodo_gastos1.IMPORTE_TOTAL - periodo_' +
+ 'gastos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_gastos1.IMPORTE_TOT' +
+ 'AL - periodo_gastos2.IMPORTE_TOTAL)*100)/periodo_gastos2.IMPORTE' +
+ '_TOTAL)'#10'end as Porcentaje_Aumento_Gastos,'#10#10'case when periodo_ing' +
+ 'resos2.ANO is null then 0'#10'else'#10'((coalesce(periodo_ingresos1.IMPO' +
+ 'RTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0)) - (c' +
+ 'oalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_g' +
+ 'astos2.IMPORTE_TOTAL, 0)))'#10'end as Diferencia_Beneficios,'#10#10'case w' +
+ 'hen periodo_ingresos2.ANO is null then 0'#10'else'#10'case'#10'when ((coales' +
+ 'ce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos' +
+ '2.IMPORTE_TOTAL, 0)) = 0) then (100 - (((coalesce(periodo_ingres' +
+ 'os1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, ' +
+ '0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(p' +
+ 'eriodo_gastos2.IMPORTE_TOTAL, 0)))*100))'#10'else (((((coalesce(peri' +
+ 'odo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPOR' +
+ 'TE_TOTAL, 0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)))*100) / (coalesce(pe' +
+ 'riodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMP' +
+ 'ORTE_TOTAL, 0))))'#10'end'#10'end as Porcentaje_Aumento_Beneficios'#10#10'FROM' +
+ #10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.ANO, MES' +
+ ' as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from V_INF' +
+ '_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (ANO = :A' +
+ 'NO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo_ingresos1 on ' +
+ '(VALOR = periodo_ingresos1.NFILA)'#10#10'left join'#10'(select comp2.ID_EM' +
+ 'PRESA, comp2.ANO, MES as NFILA, SUM(comp2.BASE_IMPONIBLE) as IMP' +
+ 'ORTE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp2'#10'where ID_EMPRESA = :ID' +
+ '_EMPRESA1'#10'and (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc' +
+ ') periodo_gastos1 on (VALOR = periodo_gastos1.NFILA)'#10#10'left join'#10 +
+ '(select comp3.ID_EMPRESA, comp3.ANO, MES as NFILA, SUM(comp3.BAS' +
+ 'E_IMPONIBLE) as IMPORTE_TOTAL'#10'from V_INF_FAC_CLIENTE comp3'#10'where' +
+ ' ID_EMPRESA = :ID_EMPRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'orde' +
+ 'r by 1 desc,2 asc) periodo_ingresos2 on (VALOR = periodo_ingreso' +
+ 's2.NFILA)'#10#10'left join'#10'(select comp4.ID_EMPRESA, comp4.ANO, MES as' +
+ ' NFILA, SUM(comp4.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from V_INF_FA' +
+ 'C_PROVEEDOR comp4'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'and (ANO = :AN' +
+ 'O2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo_gastos2 on (VA' +
+ 'LOR = periodo_gastos2.NFILA)'#10#10#10'where periodo= '#39'MENSUAL'#39#10'order by' +
+ ' valor asc'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO1'
+ TableField = 'INGRESOS_ANO1'
+ end
+ item
+ DatasetField = 'ANO11'
+ TableField = 'ANO11'
+ end
+ item
+ DatasetField = 'GASTOS_ANO1'
+ TableField = 'GASTOS_ANO1'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO1'
+ TableField = 'BENEFICIO_ANO1'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO2'
+ TableField = 'INGRESOS_ANO2'
+ end
+ item
+ DatasetField = 'ANO21'
+ TableField = 'ANO21'
+ end
+ item
+ DatasetField = 'GASTOS_ANO2'
+ TableField = 'GASTOS_ANO2'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO2'
+ TableField = 'BENEFICIO_ANO2'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ end
+ item
+ DatasetField = 'DIFERENCIA_INGRESOS'
+ TableField = 'DIFERENCIA_INGRESOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ TableField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_GASTOS'
+ TableField = 'DIFERENCIA_GASTOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_GASTOS'
+ TableField = 'PORCENTAJE_AUMENTO_GASTOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_BENEFICIOS'
+ TableField = 'DIFERENCIA_BENEFICIOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ TableField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ end>
+ end>
+ Name = 'InformeListadoBeneficiosGrafCompMensual'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO11'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO21'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_BENEFICIOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select VALOR, DESCRIPCION,'#10'periodo_ingresos1.ANO as Ano1, period' +
+ 'o_ingresos1.IMPORTE_TOTAL as INGRESOS_ANO1,'#10'periodo_gastos1.ANO ' +
+ 'as Ano1, periodo_gastos1.IMPORTE_TOTAL as GASTOS_ANO1,'#10'(coalesce' +
+ '(periodo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.' +
+ 'IMPORTE_TOTAL, 0)) as BENEFICIO_ANO1,'#10'case'#10'when (periodo_ingreso' +
+ 's1.IMPORTE_TOTAL = 0) then (100 - ((coalesce(periodo_ingresos1.I' +
+ 'MPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0))*1' +
+ '00))'#10'else ((((coalesce(periodo_ingresos1.IMPORTE_TOTAL, 0) - coa' +
+ 'lesce(periodo_gastos1.IMPORTE_TOTAL, 0))*100)/periodo_ingresos1.' +
+ 'IMPORTE_TOTAL))'#10'end as Porcentaje_Beneficios_Ano1,'#10#10'periodo_ingr' +
+ 'esos2.ANO as Ano2, periodo_ingresos2.IMPORTE_TOTAL as INGRESOS_A' +
+ 'NO2,'#10'periodo_gastos2.ANO as Ano2, periodo_gastos2.IMPORTE_TOTAL ' +
+ 'as GASTOS_ANO2,'#10'(coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)) as BENEFICIO_ANO2,'#10'c' +
+ 'ase'#10'when (periodo_ingresos2.IMPORTE_TOTAL = 0) then (100 - ((coa' +
+ 'lesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gas' +
+ 'tos2.IMPORTE_TOTAL, 0))*100))'#10'else ((((coalesce(periodo_ingresos' +
+ '2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)' +
+ ')*100)/periodo_ingresos2.IMPORTE_TOTAL))'#10'end as Porcentaje_Benef' +
+ 'icios_Ano2,'#10#10'(periodo_ingresos1.IMPORTE_TOTAL - periodo_ingresos' +
+ '2.IMPORTE_TOTAL) as Diferencia_Ingresos,'#10'case'#10'when (periodo_ingr' +
+ 'esos2.IMPORTE_TOTAL = 0) then (100 - ((periodo_ingresos1.IMPORTE' +
+ '_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_' +
+ 'ingresos1.IMPORTE_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100)/' +
+ 'periodo_ingresos2.IMPORTE_TOTAL)'#10'end as Porcentaje_Aumento_Ingre' +
+ 'sos,'#10#10'(periodo_gastos1.IMPORTE_TOTAL - periodo_gastos2.IMPORTE_T' +
+ 'OTAL) as Diferencia_Gastos,'#10'case'#10'when (periodo_gastos2.IMPORTE_T' +
+ 'OTAL = 0) then (100 - ((periodo_gastos1.IMPORTE_TOTAL - periodo_' +
+ 'gastos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_gastos1.IMPORTE_TOT' +
+ 'AL - periodo_gastos2.IMPORTE_TOTAL)*100)/periodo_gastos2.IMPORTE' +
+ '_TOTAL)'#10'end as Porcentaje_Aumento_Gastos,'#10#10'case when periodo_ing' +
+ 'resos2.ANO is null then 0'#10'else'#10'((coalesce(periodo_ingresos1.IMPO' +
+ 'RTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0)) - (c' +
+ 'oalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_g' +
+ 'astos2.IMPORTE_TOTAL, 0)))'#10'end as Diferencia_Beneficios,'#10#10'case w' +
+ 'hen periodo_ingresos2.ANO is null then 0'#10'else'#10'case'#10'when ((coales' +
+ 'ce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos' +
+ '2.IMPORTE_TOTAL, 0)) = 0) then (100 - (((coalesce(periodo_ingres' +
+ 'os1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, ' +
+ '0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(p' +
+ 'eriodo_gastos2.IMPORTE_TOTAL, 0)))*100))'#10'else (((((coalesce(peri' +
+ 'odo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPOR' +
+ 'TE_TOTAL, 0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)))*100) / (coalesce(pe' +
+ 'riodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMP' +
+ 'ORTE_TOTAL, 0))))'#10'end'#10'end as Porcentaje_Aumento_Beneficios'#10#10#10'FRO' +
+ 'M'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.ANO, TR' +
+ 'IMESTRE as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'fro' +
+ 'm V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (A' +
+ 'NO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo_ingres' +
+ 'os1 on (VALOR = periodo_ingresos1.NFILA)'#10#10'left join'#10'(select comp' +
+ '2.ID_EMPRESA, comp2.ANO, TRIMESTRE as NFILA, SUM(comp2.BASE_IMPO' +
+ 'NIBLE) as IMPORTE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp2'#10'where ID_' +
+ 'EMPRESA = :ID_EMPRESA1'#10'and (ANO = :ANO1)'#10'group by 1,2,3'#10'order by' +
+ ' 1 desc,2 asc) periodo_gastos1 on (VALOR = periodo_gastos1.NFILA' +
+ ')'#10#10'left join'#10'(select comp3.ID_EMPRESA, comp3.ANO, TRIMESTRE as N' +
+ 'FILA, SUM(comp3.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from V_INF_FAC_' +
+ 'CLIENTE comp3'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'and (ANO = :ANO2)'#10 +
+ 'group by 1,2,3'#10'order by 1 desc,2 asc) periodo_ingresos2 on (VALO' +
+ 'R = periodo_ingresos2.NFILA)'#10#10'left join'#10'(select comp4.ID_EMPRESA' +
+ ', comp4.ANO, TRIMESTRE as NFILA, SUM(comp4.BASE_IMPONIBLE) as IM' +
+ 'PORTE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp4'#10'where ID_EMPRESA = :I' +
+ 'D_EMPRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 as' +
+ 'c) periodo_gastos2 on (VALOR = periodo_gastos2.NFILA)'#10#10#10'where pe' +
+ 'riodo= '#39'TRIMESTRAL'#39#10'order by valor asc'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO1'
+ TableField = 'INGRESOS_ANO1'
+ end
+ item
+ DatasetField = 'ANO11'
+ TableField = 'ANO11'
+ end
+ item
+ DatasetField = 'GASTOS_ANO1'
+ TableField = 'GASTOS_ANO1'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO1'
+ TableField = 'BENEFICIO_ANO1'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO2'
+ TableField = 'INGRESOS_ANO2'
+ end
+ item
+ DatasetField = 'ANO21'
+ TableField = 'ANO21'
+ end
+ item
+ DatasetField = 'GASTOS_ANO2'
+ TableField = 'GASTOS_ANO2'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO2'
+ TableField = 'BENEFICIO_ANO2'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ end
+ item
+ DatasetField = 'DIFERENCIA_INGRESOS'
+ TableField = 'DIFERENCIA_INGRESOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ TableField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_GASTOS'
+ TableField = 'DIFERENCIA_GASTOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_GASTOS'
+ TableField = 'PORCENTAJE_AUMENTO_GASTOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_BENEFICIOS'
+ TableField = 'DIFERENCIA_BENEFICIOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ TableField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ end>
+ end>
+ Name = 'InformeListadoBeneficiosGrafCompTrimestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO11'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO21'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_BENEFICIOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select VALOR, DESCRIPCION,'#10'periodo_ingresos1.ANO as Ano1, period' +
+ 'o_ingresos1.IMPORTE_TOTAL as INGRESOS_ANO1,'#10'periodo_gastos1.ANO ' +
+ 'as Ano1, periodo_gastos1.IMPORTE_TOTAL as GASTOS_ANO1,'#10'(coalesce' +
+ '(periodo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.' +
+ 'IMPORTE_TOTAL, 0)) as BENEFICIO_ANO1,'#10'case'#10'when (periodo_ingreso' +
+ 's1.IMPORTE_TOTAL = 0) then (100 - ((coalesce(periodo_ingresos1.I' +
+ 'MPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0))*1' +
+ '00))'#10'else ((((coalesce(periodo_ingresos1.IMPORTE_TOTAL, 0) - coa' +
+ 'lesce(periodo_gastos1.IMPORTE_TOTAL, 0))*100)/periodo_ingresos1.' +
+ 'IMPORTE_TOTAL))'#10'end as Porcentaje_Beneficios_Ano1,'#10#10'periodo_ingr' +
+ 'esos2.ANO as Ano2, periodo_ingresos2.IMPORTE_TOTAL as INGRESOS_A' +
+ 'NO2,'#10'periodo_gastos2.ANO as Ano2, periodo_gastos2.IMPORTE_TOTAL ' +
+ 'as GASTOS_ANO2,'#10'(coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)) as BENEFICIO_ANO2,'#10'c' +
+ 'ase'#10'when (periodo_ingresos2.IMPORTE_TOTAL = 0) then (100 - ((coa' +
+ 'lesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gas' +
+ 'tos2.IMPORTE_TOTAL, 0))*100))'#10'else ((((coalesce(periodo_ingresos' +
+ '2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)' +
+ ')*100)/periodo_ingresos2.IMPORTE_TOTAL))'#10'end as Porcentaje_Benef' +
+ 'icios_Ano2,'#10#10'(periodo_ingresos1.IMPORTE_TOTAL - periodo_ingresos' +
+ '2.IMPORTE_TOTAL) as Diferencia_Ingresos,'#10'case'#10'when (periodo_ingr' +
+ 'esos2.IMPORTE_TOTAL = 0) then (100 - ((periodo_ingresos1.IMPORTE' +
+ '_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_' +
+ 'ingresos1.IMPORTE_TOTAL - periodo_ingresos2.IMPORTE_TOTAL)*100)/' +
+ 'periodo_ingresos2.IMPORTE_TOTAL)'#10'end as Porcentaje_Aumento_Ingre' +
+ 'sos,'#10#10'(periodo_gastos1.IMPORTE_TOTAL - periodo_gastos2.IMPORTE_T' +
+ 'OTAL) as Diferencia_Gastos,'#10'case'#10'when (periodo_gastos2.IMPORTE_T' +
+ 'OTAL = 0) then (100 - ((periodo_gastos1.IMPORTE_TOTAL - periodo_' +
+ 'gastos2.IMPORTE_TOTAL)*100))'#10'else (((periodo_gastos1.IMPORTE_TOT' +
+ 'AL - periodo_gastos2.IMPORTE_TOTAL)*100)/periodo_gastos2.IMPORTE' +
+ '_TOTAL)'#10'end as Porcentaje_Aumento_Gastos,'#10#10'case when periodo_ing' +
+ 'resos2.ANO is null then 0'#10'else'#10'((coalesce(periodo_ingresos1.IMPO' +
+ 'RTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, 0)) - (c' +
+ 'oalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_g' +
+ 'astos2.IMPORTE_TOTAL, 0)))'#10'end as Diferencia_Beneficios,'#10#10'case w' +
+ 'hen periodo_ingresos2.ANO is null then 0'#10'else'#10'case'#10'when ((coales' +
+ 'ce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos' +
+ '2.IMPORTE_TOTAL, 0)) = 0) then (100 - (((coalesce(periodo_ingres' +
+ 'os1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPORTE_TOTAL, ' +
+ '0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(p' +
+ 'eriodo_gastos2.IMPORTE_TOTAL, 0)))*100))'#10'else (((((coalesce(peri' +
+ 'odo_ingresos1.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos1.IMPOR' +
+ 'TE_TOTAL, 0)) - (coalesce(periodo_ingresos2.IMPORTE_TOTAL, 0) - ' +
+ 'coalesce(periodo_gastos2.IMPORTE_TOTAL, 0)))*100) / (coalesce(pe' +
+ 'riodo_ingresos2.IMPORTE_TOTAL, 0) - coalesce(periodo_gastos2.IMP' +
+ 'ORTE_TOTAL, 0))))'#10'end'#10'end as Porcentaje_Aumento_Beneficios'#10#10#10'FRO' +
+ 'M'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.ANO, SE' +
+ 'MESTRE as NFILA, SUM(comp1.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from' +
+ ' V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (AN' +
+ 'O = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo_ingreso' +
+ 's1 on (VALOR = periodo_ingresos1.NFILA)'#10#10'left join'#10'(select comp2' +
+ '.ID_EMPRESA, comp2.ANO, SEMESTRE as NFILA, SUM(comp2.BASE_IMPONI' +
+ 'BLE) as IMPORTE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp2'#10'where ID_EM' +
+ 'PRESA = :ID_EMPRESA1'#10'and (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1' +
+ ' desc,2 asc) periodo_gastos1 on (VALOR = periodo_gastos1.NFILA)'#10 +
+ #10'left join'#10'(select comp3.ID_EMPRESA, comp3.ANO, SEMESTRE as NFIL' +
+ 'A, SUM(comp3.BASE_IMPONIBLE) as IMPORTE_TOTAL'#10'from V_INF_FAC_CLI' +
+ 'ENTE comp3'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'and (ANO = :ANO2)'#10'gro' +
+ 'up by 1,2,3'#10'order by 1 desc,2 asc) periodo_ingresos2 on (VALOR =' +
+ ' periodo_ingresos2.NFILA)'#10#10'left join'#10'(select comp4.ID_EMPRESA, c' +
+ 'omp4.ANO, SEMESTRE as NFILA, SUM(comp4.BASE_IMPONIBLE) as IMPORT' +
+ 'E_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp4'#10'where ID_EMPRESA = :ID_EM' +
+ 'PRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) p' +
+ 'eriodo_gastos2 on (VALOR = periodo_gastos2.NFILA)'#10#10#10'where period' +
+ 'o= '#39'SEMESTRAL'#39#10'order by valor asc'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO1'
+ TableField = 'INGRESOS_ANO1'
+ end
+ item
+ DatasetField = 'ANO11'
+ TableField = 'ANO11'
+ end
+ item
+ DatasetField = 'GASTOS_ANO1'
+ TableField = 'GASTOS_ANO1'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO1'
+ TableField = 'BENEFICIO_ANO1'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO1'
+ end
+ item
+ DatasetField = 'INGRESOS_ANO2'
+ TableField = 'INGRESOS_ANO2'
+ end
+ item
+ DatasetField = 'ANO21'
+ TableField = 'ANO21'
+ end
+ item
+ DatasetField = 'GASTOS_ANO2'
+ TableField = 'GASTOS_ANO2'
+ end
+ item
+ DatasetField = 'BENEFICIO_ANO2'
+ TableField = 'BENEFICIO_ANO2'
+ end
+ item
+ DatasetField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ TableField = 'PORCENTAJE_BENEFICIOS_ANO2'
+ end
+ item
+ DatasetField = 'DIFERENCIA_INGRESOS'
+ TableField = 'DIFERENCIA_INGRESOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ TableField = 'PORCENTAJE_AUMENTO_INGRESOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_GASTOS'
+ TableField = 'DIFERENCIA_GASTOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_GASTOS'
+ TableField = 'PORCENTAJE_AUMENTO_GASTOS'
+ end
+ item
+ DatasetField = 'DIFERENCIA_BENEFICIOS'
+ TableField = 'DIFERENCIA_BENEFICIOS'
+ end
+ item
+ DatasetField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ TableField = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ end>
+ end>
+ Name = 'InformeListadoBeneficiosGrafCompSemestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO11'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'INGRESOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO21'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'GASTOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'BENEFICIO_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_BENEFICIOS_ANO2'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_INGRESOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_GASTOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA_BENEFICIOS'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE_AUMENTO_BENEFICIOS'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select SEN.ID_AGENTE, COALESCE(C.NOMBRE, '#39'SIN ASIGNAR'#39') || '#39' ('#39' ' +
+ '|| CLIENTES_TOTALES.NUM_CLIENTES_TOTALES || '#39')'#39' as AGENTE, ANO, ' +
+ 'MES,'#10' P.descripcion,'#10#10' sum(ALTAS_CLIENTE) as ALTAS_CLIENTE' +
+ ','#10#10' sum(CLIENTES_ACTIVOS) as CLIENTES_TOTALES,'#10#10' sum(CANTI' +
+ 'DAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum(IMPORTE_OBJETIVO) as IMP' +
+ 'ORTE_OBJETIVO,'#10#10' sum(CANTIDAD_CONSEGUIDA) as CANTIDAD_CONSEGU' +
+ 'IDA, sum(CANTIDAD_DEVUELTA) as CANTIDAD_DEVUELTA, sum(CANTIDAD_T' +
+ 'OTAL_CONSEGUIDA) as CANTIDAD_TOTAL_CONSEGUIDA,'#10' sum(IMPORTE_C' +
+ 'ONSEGUIDO) as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO) as IMPOR' +
+ 'TE_DEVUELTO, sum(IMPORTE_TOTAL_CONSEGUIDO) as IMPORTE_TOTAL_CONS' +
+ 'EGUIDO,'#10#10' (sum(CANTIDAD_TOTAL_CONSEGUIDA) - sum(CANTIDAD_OBJE' +
+ 'TIVO)) as CANTIDAD_RESULTADO,'#10' (sum(IMPORTE_TOTAL_CONSEGUIDO)' +
+ ' - sum(IMPORTE_OBJETIVO)) as IMPORTE_RESULTADO,'#10#10' case when (' +
+ 'sum(CANTIDAD_TOTAL_CONSEGUIDA) <> 0) then (sum(IMPORTE_TOTAL_CON' +
+ 'SEGUIDO)/sum(CANTIDAD_TOTAL_CONSEGUIDA))'#10' else 0'#10' end as I' +
+ 'MPORTE_MEDIO_UNIDAD,'#10#10' case when (sum(CLIENTES_ACTIVOS) <> 0)' +
+ ' then (sum(IMPORTE_TOTAL_CONSEGUIDO)/sum(CLIENTES_ACTIVOS))'#10' ' +
+ 'else 0'#10' end as IMPORTE_MEDIO_CLIENTE'#10#10#10'from'#10'('#10'select AO.ID_AG' +
+ 'ENTE, AO.ANO, AO.MES,'#10'0 as ALTAS_CLIENTE,'#10'0 as CLIENTES_ACTIVOS,' +
+ #10'sum(AO.CANTIDAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum(AO.IMPORTE_' +
+ 'OBJETIVO) as IMPORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUIDA, 0 as CA' +
+ 'NTIDAD_DEVUELTA, 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 as IMPORTE_CO' +
+ 'NSEGUIDO, 0 as IMPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_CONSEGUIDO'#10'f' +
+ 'rom V_INF_OBJETIVOS_ALB_AGENTES AO'#10'left join contactos C on (C.I' +
+ 'D = AO.ID_AGENTE)'#10'where (AO.ANO = :ANO1)'#10'group by 1,2,3'#10#10'UNION A' +
+ 'LL'#10#10'select ID_AGENTE, ANO, MES,'#10'0 as ALTAS_CLIENTE,'#10'0 as CLIENTE' +
+ 'S_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORTE_OBJETIVO,'#10'sum(CA' +
+ 'NTIDAD_CONSEGUIDA) as CANTIDAD_CONSEGUIDA, sum(CANTIDAD_DEVUELTA' +
+ ') as CANTIDAD_DEVUELTA, (sum(CANTIDAD_CONSEGUIDA) + sum(CANTIDAD' +
+ '_DEVUELTA)) as CANTIDAD_TOTAL_CONSEGUIDA,'#10'sum(IMPORTE_CONSEGUIDO' +
+ ') as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO) as IMPORTE_DEVUEL' +
+ 'TO, (sum(IMPORTE_CONSEGUIDO) + sum(IMPORTE_DEVUELTO)) as IMPORTE' +
+ '_TOTAL_CONSEGUIDO'#10'from v_inf_objetivos_facturas'#10'where ((v_inf_ob' +
+ 'jetivos_facturas.id_empresa = :ID_EMPRESA) and (v_inf_objetivos_' +
+ 'facturas.ANO = :ANO1))'#10'group by 1,2,3'#10#10'UNION ALL'#10#10'select ID_AGEN' +
+ 'TE, ANO, MES,'#10'count(ID_CLIENTE) as ALTAS_CLIENTE,'#10'0 as CLIENTES_' +
+ 'ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORTE_OBJETIVO,'#10'0 as CAN' +
+ 'TIDAD_CONSEGUIDA, 0 as CANTIDAD_DEVUELTA, 0 as CANTIDAD_TOTAL_CO' +
+ 'NSEGUIDA, 0 as IMPORTE_CONSEGUIDO, 0 as IMPORTE_DEVUELTO, 0 as I' +
+ 'MPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_obj_clientes_agentes'#10'where (A' +
+ 'NO = :ANO1)'#10'group by 1,2,3'#10#10'union all'#10#10'select ID_AGENTE, ANO, ME' +
+ 'S,'#10'0 as ALTAS_CLIENTE,'#10'count(distinct ID_CLIENTE) as CLIENTES_AC' +
+ 'TIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORTE_OBJETIVO,'#10'0 as CANTI' +
+ 'DAD_CONSEGUIDA, 0 as CANTIDAD_DEVUELTA, 0 as CANTIDAD_TOTAL_CONS' +
+ 'EGUIDA, 0 as IMPORTE_CONSEGUIDO, 0 as IMPORTE_DEVUELTO, 0 as IMP' +
+ 'ORTE_TOTAL_CONSEGUIDO'#10'from v_inf_obj_cli_activos_fac_age'#10'where (' +
+ 'ANO = :ANO1) and (v_inf_obj_cli_activos_fac_age.ID_EMPRESA = :ID' +
+ '_EMPRESA)'#10'group by 1,2,3'#10#10') SEN'#10#10'left join periodos_aux P on ((P' +
+ '.periodo = '#39'MENSUAL'#39') and (P.valor = MES))'#10'left join contactos C' +
+ ' on (C.ID = SEN.ID_AGENTE)'#10'left join agentes_datos AD on (AD.id_' +
+ 'agente = SEN.ID_AGENTE)'#10#10'left join'#10'('#10'select coalesce(ID_AGENTE, ' +
+ '-1) as ID_AGENTE, count(ID_CLIENTE) as NUM_CLIENTES_TOTALES'#10'from' +
+ ' clientes_datos'#10'group by 1'#10') CLIENTES_TOTALES on (CLIENTES_TOTAL' +
+ 'ES.ID_AGENTE = SEN.id_Agente)'#10#10'where AD.FECHA_BAJA is null'#10'and {' +
+ 'where}'#10'group by 1,2,3,4,5'#10'order by 1,2,3,4,5'#10#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_AGENTE'
+ TableField = 'ID_AGENTE'
+ end
+ item
+ DatasetField = 'AGENTE'
+ TableField = 'AGENTE'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end
+ item
+ DatasetField = 'MES'
+ TableField = 'MES'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'CLIENTES_TOTALES'
+ TableField = 'CLIENTES_TOTALES'
+ end
+ item
+ DatasetField = 'ALTAS_CLIENTE'
+ TableField = 'ALTAS_CLIENTE'
+ end
+ item
+ DatasetField = 'CANTIDAD_OBJETIVO'
+ TableField = 'CANTIDAD_OBJETIVO'
+ end
+ item
+ DatasetField = 'IMPORTE_OBJETIVO'
+ TableField = 'IMPORTE_OBJETIVO'
+ end
+ item
+ DatasetField = 'CANTIDAD_CONSEGUIDA'
+ TableField = 'CANTIDAD_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'CANTIDAD_DEVUELTA'
+ TableField = 'CANTIDAD_DEVUELTA'
+ end
+ item
+ DatasetField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ TableField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'IMPORTE_CONSEGUIDO'
+ TableField = 'IMPORTE_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'IMPORTE_DEVUELTO'
+ TableField = 'IMPORTE_DEVUELTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ TableField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'CANTIDAD_RESULTADO'
+ TableField = 'CANTIDAD_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_RESULTADO'
+ TableField = 'IMPORTE_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_UNIDAD'
+ TableField = 'IMPORTE_MEDIO_UNIDAD'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_CLIENTE'
+ TableField = 'IMPORTE_MEDIO_CLIENTE'
+ end>
+ end>
+ Name = 'InformeListadoObjetivosMensual'
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 269
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'MES'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select SEN.ID_AGENTE, COALESCE(C.NOMBRE, '#39'SIN ASIGNAR'#39') || '#39' ('#39' ' +
+ '|| CLIENTES_TOTALES.NUM_CLIENTES_TOTALES || '#39')'#39' as AGENTE, ANO, ' +
+ 'SEMESTRE,'#10' P.descripcion,'#10#10' sum(ALTAS_CLIENTE) as ALTAS_CL' +
+ 'IENTE,'#10#10' sum(CLIENTES_ACTIVOS) as CLIENTES_TOTALES,'#10#10' sum(' +
+ 'CANTIDAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum(IMPORTE_OBJETIVO) a' +
+ 's IMPORTE_OBJETIVO,'#10#10' sum(CANTIDAD_CONSEGUIDA) as CANTIDAD_CO' +
+ 'NSEGUIDA, sum(CANTIDAD_DEVUELTA) as CANTIDAD_DEVUELTA, sum(CANTI' +
+ 'DAD_TOTAL_CONSEGUIDA) as CANTIDAD_TOTAL_CONSEGUIDA,'#10' sum(IMPO' +
+ 'RTE_CONSEGUIDO) as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO) as ' +
+ 'IMPORTE_DEVUELTO, sum(IMPORTE_TOTAL_CONSEGUIDO) as IMPORTE_TOTAL' +
+ '_CONSEGUIDO,'#10#10' (sum(CANTIDAD_TOTAL_CONSEGUIDA) - sum(CANTIDAD' +
+ '_OBJETIVO)) as CANTIDAD_RESULTADO,'#10' (sum(IMPORTE_TOTAL_CONSEG' +
+ 'UIDO) - sum(IMPORTE_OBJETIVO)) as IMPORTE_RESULTADO,'#10#10' case w' +
+ 'hen (sum(CANTIDAD_TOTAL_CONSEGUIDA) <> 0) then (sum(IMPORTE_TOTA' +
+ 'L_CONSEGUIDO)/sum(CANTIDAD_TOTAL_CONSEGUIDA))'#10' else 0'#10' end' +
+ ' as IMPORTE_MEDIO_UNIDAD,'#10#10' case when (sum(CLIENTES_ACTIVOS) ' +
+ '<> 0) then (sum(IMPORTE_TOTAL_CONSEGUIDO)/sum(CLIENTES_ACTIVOS))' +
+ #10' else 0'#10' end as IMPORTE_MEDIO_CLIENTE'#10#10#10'from'#10'('#10'select AO.' +
+ 'ID_AGENTE, AO.ANO, AO.SEMESTRE,'#10'0 as ALTAS_CLIENTE,'#10'0 as CLIENTE' +
+ 'S_ACTIVOS,'#10'sum(AO.CANTIDAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum(A' +
+ 'O.IMPORTE_OBJETIVO) as IMPORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUID' +
+ 'A, 0 as CANTIDAD_DEVUELTA, 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 as ' +
+ 'IMPORTE_CONSEGUIDO, 0 as IMPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_CO' +
+ 'NSEGUIDO'#10'from V_INF_OBJETIVOS_ALB_AGENTES AO'#10'left join contactos' +
+ ' C on (C.ID = AO.ID_AGENTE)'#10'where (AO.ANO = :ANO1)'#10'group by 1,2,' +
+ '3'#10#10'UNION ALL'#10#10'select ID_AGENTE, ANO, SEMESTRE,'#10'0 as ALTAS_CLIENT' +
+ 'E,'#10'0 as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORTE_O' +
+ 'BJETIVO,'#10'sum(CANTIDAD_CONSEGUIDA) as CANTIDAD_CONSEGUIDA, sum(CA' +
+ 'NTIDAD_DEVUELTA) as CANTIDAD_DEVUELTA, (sum(CANTIDAD_CONSEGUIDA)' +
+ ' + sum(CANTIDAD_DEVUELTA)) as CANTIDAD_TOTAL_CONSEGUIDA,'#10'sum(IMP' +
+ 'ORTE_CONSEGUIDO) as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO) as' +
+ ' IMPORTE_DEVUELTO, (sum(IMPORTE_CONSEGUIDO) + sum(IMPORTE_DEVUEL' +
+ 'TO)) as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_objetivos_facturas'#10'w' +
+ 'here ((v_inf_objetivos_facturas.id_empresa = :ID_EMPRESA) and (v' +
+ '_inf_objetivos_facturas.ANO = :ANO1))'#10'group by 1,2,3'#10#10'UNION ALL'#10 +
+ #10'select ID_AGENTE, ANO, SEMESTRE,'#10'count(ID_CLIENTE) as ALTAS_CLI' +
+ 'ENTE,'#10'0 as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORT' +
+ 'E_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUIDA, 0 as CANTIDAD_DEVUELTA, 0 ' +
+ 'as CANTIDAD_TOTAL_CONSEGUIDA, 0 as IMPORTE_CONSEGUIDO, 0 as IMPO' +
+ 'RTE_DEVUELTO, 0 as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_obj_clien' +
+ 'tes_agentes'#10'where (ANO = :ANO1)'#10'group by 1,2,3'#10#10'UNION ALL'#10#10'selec' +
+ 't ID_AGENTE, ANO, SEMESTRE,'#10'0 as ALTAS_CLIENTE,'#10'count(distinct I' +
+ 'D_CLIENTE) as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMP' +
+ 'ORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUIDA, 0 as CANTIDAD_DEVUELTA,' +
+ ' 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 as IMPORTE_CONSEGUIDO, 0 as I' +
+ 'MPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_obj_cl' +
+ 'i_activos_fac_age'#10'where (ANO = :ANO1) and (v_inf_obj_cli_activos' +
+ '_fac_age.ID_EMPRESA = :ID_EMPRESA)'#10'group by 1,2,3'#10#10') SEN'#10#10'left j' +
+ 'oin periodos_aux P on ((P.periodo = '#39'SEMESTRAL'#39') and (P.valor = ' +
+ 'SEMESTRE))'#10'left join contactos C on (C.ID = SEN.ID_AGENTE)'#10'left ' +
+ 'join agentes_datos AD on (AD.id_agente = SEN.ID_AGENTE)'#10#10'left jo' +
+ 'in'#10'('#10'select coalesce(ID_AGENTE, -1) as ID_AGENTE, count(ID_CLIEN' +
+ 'TE) as NUM_CLIENTES_TOTALES'#10'from clientes_datos'#10'group by 1'#10') CLI' +
+ 'ENTES_TOTALES on (CLIENTES_TOTALES.ID_AGENTE = SEN.id_Agente)'#10#10'w' +
+ 'here AD.FECHA_BAJA is null'#10'and {where}'#10'group by 1,2,3,4,5'#10'order ' +
+ 'by 1,2,3,4,5'#10#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_AGENTE'
+ TableField = 'ID_AGENTE'
+ end
+ item
+ DatasetField = 'AGENTE'
+ TableField = 'AGENTE'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end
+ item
+ DatasetField = 'SEMESTRE'
+ TableField = 'SEMESTRE'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'CLIENTES_TOTALES'
+ TableField = 'CLIENTES_TOTALES'
+ end
+ item
+ DatasetField = 'ALTAS_CLIENTE'
+ TableField = 'ALTAS_CLIENTE'
+ end
+ item
+ DatasetField = 'CANTIDAD_OBJETIVO'
+ TableField = 'CANTIDAD_OBJETIVO'
+ end
+ item
+ DatasetField = 'IMPORTE_OBJETIVO'
+ TableField = 'IMPORTE_OBJETIVO'
+ end
+ item
+ DatasetField = 'CANTIDAD_CONSEGUIDA'
+ TableField = 'CANTIDAD_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'CANTIDAD_DEVUELTA'
+ TableField = 'CANTIDAD_DEVUELTA'
+ end
+ item
+ DatasetField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ TableField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'IMPORTE_CONSEGUIDO'
+ TableField = 'IMPORTE_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'IMPORTE_DEVUELTO'
+ TableField = 'IMPORTE_DEVUELTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ TableField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'CANTIDAD_RESULTADO'
+ TableField = 'CANTIDAD_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_RESULTADO'
+ TableField = 'IMPORTE_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_UNIDAD'
+ TableField = 'IMPORTE_MEDIO_UNIDAD'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_CLIENTE'
+ TableField = 'IMPORTE_MEDIO_CLIENTE'
+ end>
+ end>
+ Name = 'InformeListadoObjetivosSemestral'
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'SEMESTRE'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datInteger
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select SEN.ID_AGENTE, COALESCE(C.NOMBRE, '#39'SIN ASIGNAR'#39') || '#39' ('#39' ' +
+ '|| CLIENTES_TOTALES.NUM_CLIENTES_TOTALES || '#39')'#39' as AGENTE, ANO, ' +
+ 'TRIMESTRE,'#10' P.descripcion,'#10#10' sum(ALTAS_CLIENTE) as ALTAS_C' +
+ 'LIENTE,'#10#10' sum(CLIENTES_ACTIVOS) as CLIENTES_TOTALES,'#10#10' sum' +
+ '(CANTIDAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum(IMPORTE_OBJETIVO) ' +
+ 'as IMPORTE_OBJETIVO,'#10#10' sum(CANTIDAD_CONSEGUIDA) as CANTIDAD_C' +
+ 'ONSEGUIDA, sum(CANTIDAD_DEVUELTA) as CANTIDAD_DEVUELTA, sum(CANT' +
+ 'IDAD_TOTAL_CONSEGUIDA) as CANTIDAD_TOTAL_CONSEGUIDA,'#10' sum(IMP' +
+ 'ORTE_CONSEGUIDO) as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO) as' +
+ ' IMPORTE_DEVUELTO, sum(IMPORTE_TOTAL_CONSEGUIDO) as IMPORTE_TOTA' +
+ 'L_CONSEGUIDO,'#10#10' (sum(CANTIDAD_TOTAL_CONSEGUIDA) - sum(CANTIDA' +
+ 'D_OBJETIVO)) as CANTIDAD_RESULTADO,'#10' (sum(IMPORTE_TOTAL_CONSE' +
+ 'GUIDO) - sum(IMPORTE_OBJETIVO)) as IMPORTE_RESULTADO,'#10#10' case ' +
+ 'when (sum(CANTIDAD_TOTAL_CONSEGUIDA) <> 0) then (sum(IMPORTE_TOT' +
+ 'AL_CONSEGUIDO)/sum(CANTIDAD_TOTAL_CONSEGUIDA))'#10' else 0'#10' en' +
+ 'd as IMPORTE_MEDIO_UNIDAD,'#10#10' case when (sum(CLIENTES_ACTIVOS)' +
+ ' <> 0) then (sum(IMPORTE_TOTAL_CONSEGUIDO)/sum(CLIENTES_ACTIVOS)' +
+ ')'#10' else 0'#10' end as IMPORTE_MEDIO_CLIENTE'#10#10#10'from'#10'('#10'select AO' +
+ '.ID_AGENTE, AO.ANO, AO.TRIMESTRE,'#10'0 as ALTAS_CLIENTE,'#10'0 as CLIEN' +
+ 'TES_ACTIVOS,'#10'sum(AO.CANTIDAD_OBJETIVO) as CANTIDAD_OBJETIVO, sum' +
+ '(AO.IMPORTE_OBJETIVO) as IMPORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGU' +
+ 'IDA, 0 as CANTIDAD_DEVUELTA, 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 a' +
+ 's IMPORTE_CONSEGUIDO, 0 as IMPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_' +
+ 'CONSEGUIDO'#10'from V_INF_OBJETIVOS_ALB_AGENTES AO'#10'left join contact' +
+ 'os C on (C.ID = AO.ID_AGENTE)'#10'where (AO.ANO = :ANO1)'#10'group by 1,' +
+ '2,3'#10#10'UNION ALL'#10#10'select ID_AGENTE, ANO, TRIMESTRE,'#10'0 as ALTAS_CLI' +
+ 'ENTE,'#10'0 as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IMPORT' +
+ 'E_OBJETIVO,'#10'sum(CANTIDAD_CONSEGUIDA) as CANTIDAD_CONSEGUIDA, sum' +
+ '(CANTIDAD_DEVUELTA) as CANTIDAD_DEVUELTA, (sum(CANTIDAD_CONSEGUI' +
+ 'DA) + sum(CANTIDAD_DEVUELTA)) as CANTIDAD_TOTAL_CONSEGUIDA,'#10'sum(' +
+ 'IMPORTE_CONSEGUIDO) as IMPORTE_CONSEGUIDO, sum(IMPORTE_DEVUELTO)' +
+ ' as IMPORTE_DEVUELTO, (sum(IMPORTE_CONSEGUIDO) + sum(IMPORTE_DEV' +
+ 'UELTO)) as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_objetivos_factura' +
+ 's'#10'where ((v_inf_objetivos_facturas.id_empresa = :ID_EMPRESA) and' +
+ ' (v_inf_objetivos_facturas.ANO = :ANO1))'#10'group by 1,2,3'#10#10'UNION A' +
+ 'LL'#10#10'select ID_AGENTE, ANO, TRIMESTRE,'#10'count(ID_CLIENTE) as ALTAS' +
+ '_CLIENTE,'#10'0 as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 as IM' +
+ 'PORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUIDA, 0 as CANTIDAD_DEVUELTA' +
+ ', 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 as IMPORTE_CONSEGUIDO, 0 as ' +
+ 'IMPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_obj_c' +
+ 'lientes_agentes'#10'where (ANO = :ANO1)'#10'group by 1,2,3'#10#10'UNION ALL'#10#10's' +
+ 'elect ID_AGENTE, ANO, TRIMESTRE,'#10'0 as ALTAS_CLIENTE,'#10'count(disti' +
+ 'nct ID_CLIENTE) as CLIENTES_ACTIVOS,'#10'0 as CANTIDAD_OBJETIVO, 0 a' +
+ 's IMPORTE_OBJETIVO,'#10'0 as CANTIDAD_CONSEGUIDA, 0 as CANTIDAD_DEVU' +
+ 'ELTA, 0 as CANTIDAD_TOTAL_CONSEGUIDA, 0 as IMPORTE_CONSEGUIDO, 0' +
+ ' as IMPORTE_DEVUELTO, 0 as IMPORTE_TOTAL_CONSEGUIDO'#10'from v_inf_o' +
+ 'bj_cli_activos_fac_age'#10'where (ANO = :ANO1) and (v_inf_obj_cli_ac' +
+ 'tivos_fac_age.ID_EMPRESA = :ID_EMPRESA)'#10'group by 1,2,3'#10#10') SEN'#10#10'l' +
+ 'eft join periodos_aux P on ((P.periodo = '#39'TRIMESTRAL'#39') and (P.va' +
+ 'lor = TRIMESTRE))'#10'left join contactos C on (C.ID = SEN.ID_AGENTE' +
+ ')'#10'left join agentes_datos AD on (AD.id_agente = SEN.ID_AGENTE)'#10#10 +
+ 'left join'#10'('#10'select coalesce(ID_AGENTE, -1) as ID_AGENTE, count(I' +
+ 'D_CLIENTE) as NUM_CLIENTES_TOTALES'#10'from clientes_datos'#10'group by ' +
+ '1'#10') CLIENTES_TOTALES on (CLIENTES_TOTALES.ID_AGENTE = SEN.id_Age' +
+ 'nte)'#10#10'where FECHA_BAJA is null'#10'and {where}'#10'group by 1,2,3,4,5'#10'or' +
+ 'der by 1,2,3,4,5'#10#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_AGENTE'
+ TableField = 'ID_AGENTE'
+ end
+ item
+ DatasetField = 'AGENTE'
+ TableField = 'AGENTE'
+ end
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end
+ item
+ DatasetField = 'TRIMESTRE'
+ TableField = 'TRIMESTRE'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'CLIENTES_TOTALES'
+ TableField = 'CLIENTES_TOTALES'
+ end
+ item
+ DatasetField = 'ALTAS_CLIENTE'
+ TableField = 'ALTAS_CLIENTE'
+ end
+ item
+ DatasetField = 'CANTIDAD_OBJETIVO'
+ TableField = 'CANTIDAD_OBJETIVO'
+ end
+ item
+ DatasetField = 'IMPORTE_OBJETIVO'
+ TableField = 'IMPORTE_OBJETIVO'
+ end
+ item
+ DatasetField = 'CANTIDAD_CONSEGUIDA'
+ TableField = 'CANTIDAD_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'CANTIDAD_DEVUELTA'
+ TableField = 'CANTIDAD_DEVUELTA'
+ end
+ item
+ DatasetField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ TableField = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ end
+ item
+ DatasetField = 'IMPORTE_CONSEGUIDO'
+ TableField = 'IMPORTE_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'IMPORTE_DEVUELTO'
+ TableField = 'IMPORTE_DEVUELTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ TableField = 'IMPORTE_TOTAL_CONSEGUIDO'
+ end
+ item
+ DatasetField = 'CANTIDAD_RESULTADO'
+ TableField = 'CANTIDAD_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_RESULTADO'
+ TableField = 'IMPORTE_RESULTADO'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_UNIDAD'
+ TableField = 'IMPORTE_MEDIO_UNIDAD'
+ end
+ item
+ DatasetField = 'IMPORTE_MEDIO_CLIENTE'
+ TableField = 'IMPORTE_MEDIO_CLIENTE'
+ end>
+ end>
+ Name = 'InformeListadoObjetivosTrimestral'
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'TRIMESTRE'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datInteger
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ end>
+ JoinDataTables = <>
+ UnionDataTables = <>
+ Commands = <>
+ RelationShips = <>
+ UpdateRules = <>
+ Version = 0
+ Left = 48
+ Top = 16
+ end
+ object DataDictionary: TDADataDictionary
+ Fields = <
+ item
+ Name = 'FacturasCliente_ID'
+ DataType = datAutoInc
+ Required = True
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'FacturasCliente_ID_EMPRESA'
+ DataType = datInteger
+ DisplayLabel = 'ID_EMPRESA'
+ end
+ item
+ Name = 'FacturasCliente_ID_CONTRATO'
+ DataType = datInteger
+ DisplayLabel = 'ID_CONTRATO'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_FACTURA'
+ DataType = datDateTime
+ DisplayLabel = 'Fecha de las factura'
+ end
+ item
+ Name = 'FacturasCliente_VENCIMIENTO'
+ DataType = datInteger
+ DisplayLabel = 'Vencimiento'
+ end
+ item
+ Name = 'FacturasCliente_SITUACION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Situaci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_BASE_IMPONIBLE'
+ DataType = datFloat
+ DisplayLabel = 'Base imponible'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'Importe dto.'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_IVA'
+ DataType = datFloat
+ DisplayLabel = 'Importe IVA'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_TOTAL'
+ DataType = datFloat
+ DisplayLabel = 'Importe total'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_FORMA_PAGO'
+ DataType = datMemo
+ DisplayLabel = 'Forma de pago'
+ end
+ item
+ Name = 'FacturasCliente_ID_CLIENTE'
+ DataType = datInteger
+ DisplayLabel = 'ID_CLIENTE'
+ end
+ item
+ Name = 'FacturasCliente_NIF_CIF'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'NIF/CIF'
+ end
+ item
+ Name = 'FacturasCliente_CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DisplayLabel = 'C'#243'd. postal'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_ALTA'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_ALTA'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_MODIFICACION'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_MODIFICACION'
+ end
+ item
+ Name = 'FacturasCliente_OBSERVACIONES'
+ DataType = datMemo
+ DisplayLabel = 'Observaciones'
+ end
+ item
+ Name = 'FacturasCliente_NOMBRE'
+ DataType = datString
+ Size = 100
+ DisplayLabel = 'Cliente'
+ end
+ item
+ Name = 'FacturasCliente_CALLE'
+ DataType = datString
+ Size = 150
+ DisplayLabel = 'Direcci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_PROVINCIA'
+ DataType = datString
+ Size = 30
+ DisplayLabel = 'Provincia'
+ end
+ item
+ Name = 'FacturasCliente_POBLACION'
+ DataType = datString
+ Size = 150
+ DisplayLabel = 'Poblaci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_IVA'
+ DataType = datFloat
+ DisplayLabel = 'IVA'
+ end
+ item
+ Name = 'FacturasCliente_USUARIO'
+ DataType = datString
+ Size = 100
+ DisplayLabel = 'USUARIO'
+ end
+ item
+ Name = 'FacturasCliente_REFERENCIA'
+ DataType = datString
+ Size = 20
+ DisplayLabel = 'Referencia'
+ end
+ item
+ Name = 'FacturasCliente_DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'Dto.'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_ID'
+ DataType = datAutoInc
+ Required = True
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_ID_FACTURA'
+ DataType = datInteger
+ DisplayLabel = 'ID_FACTURA'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ DisplayLabel = 'Tipo detalle'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_CONCEPTO'
+ DataType = datString
+ Size = 2000
+ DisplayLabel = 'Concepto'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_IMPORTE_UNIDAD'
+ DataType = datFloat
+ DisplayLabel = 'Importe unidad'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_Detalles_IMPORTE_TOTAL'
+ DataType = datFloat
+ DisplayLabel = 'Importe total'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_Detalles_VISIBLE'
+ DataType = datInteger
+ DisplayLabel = #191'Visible?'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_POSICION'
+ DataType = datInteger
+ DisplayLabel = 'Posici'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_CANTIDAD'
+ DataType = datInteger
+ DisplayLabel = 'Cantidad'
+ end>
+ Left = 46
+ Top = 158
+ end
+ object frxDBCabecera: TfrxDBDataset
+ UserName = 'frxDBCabecera'
+ CloseDataSource = False
+ DataSource = DADSCabecera
+ BCDToCurrency = False
+ Left = 264
+ Top = 16
+ end
+ object frxDBDetalles: TfrxDBDataset
+ UserName = 'frxDBDetalles'
+ CloseDataSource = False
+ DataSource = DADSDetalles
+ BCDToCurrency = False
+ Left = 344
+ Top = 16
+ end
+ object IBDatabase1: TIBDatabase
+ DatabaseName = 'C:\Codigo\Output\Debug\Database\FACTUGES.FDB'
+ Params.Strings = (
+ 'user_name=sysdba'
+ 'password=masterkey'
+ 'lc_ctype=ISO8859_1')
+ LoginPrompt = False
+ DefaultTransaction = IBTransaction1
+ Left = 48
+ Top = 296
+ end
+ object IBTransaction1: TIBTransaction
+ Left = 48
+ Top = 352
+ end
+ object DataSource1: TDataSource
+ DataSet = cabecera
+ Left = 216
+ Top = 296
+ end
+ object DataSource2: TDataSource
+ DataSet = detalles
+ Left = 216
+ Top = 352
+ end
+ object cabecera: TIBQuery
+ Database = IBDatabase1
+ Transaction = IBTransaction1
+ SQL.Strings = (
+ 'select'
+ ' v_facturas_cliente.id, v_facturas_cliente.id_empresa,'
+ ' v_facturas_cliente.referencia, v_facturas_cliente.tipo,'
+
+ ' v_facturas_cliente.fecha_factura, v_facturas_cliente.base_imp' +
+ 'onible,'
+ ' v_facturas_cliente.situacion, v_facturas_cliente.descuento,'
+ ' v_facturas_cliente.importe_descuento, v_facturas_cliente.iva,'
+ ' v_facturas_cliente.importe_iva, v_facturas_cliente.re,'
+
+ ' v_facturas_cliente.importe_re, v_facturas_cliente.importe_tot' +
+ 'al,'
+ ' v_facturas_cliente.observaciones, v_facturas_cliente.nif_cif,'
+ ' v_facturas_cliente.id_cliente, v_facturas_cliente.nombre,'
+ ' v_facturas_cliente.calle, v_facturas_cliente.provincia,'
+
+ ' v_facturas_cliente.poblacion, v_facturas_cliente.codigo_posta' +
+ 'l,'
+
+ ' v_facturas_cliente.recargo_equivalencia, v_facturas_cliente.i' +
+ 'mporte_neto,'
+
+ ' v_facturas_cliente.importe_porte, formas_pago.descripcion as ' +
+ 'FORMA_PAGO,'
+ ' v_facturas_cliente.DATOS_BANCARIOS'
+ 'from v_facturas_cliente'
+
+ ' left outer join formas_pago on (formas_pago.id = v_facturas_c' +
+ 'liente.id_forma_pago)'
+ 'WHERE V_FACTURAS_CLIENTE.ID = 2')
+ Left = 136
+ Top = 296
+ object cabeceraID: TIntegerField
+ FieldName = 'ID'
+ Origin = '"V_FACTURAS_CLIENTE"."ID"'
+ end
+ object cabeceraID_EMPRESA: TIntegerField
+ FieldName = 'ID_EMPRESA'
+ Origin = '"V_FACTURAS_CLIENTE"."ID_EMPRESA"'
+ end
+ object cabeceraREFERENCIA: TIBStringField
+ FieldName = 'REFERENCIA'
+ Origin = '"V_FACTURAS_CLIENTE"."REFERENCIA"'
+ Size = 255
+ end
+ object cabeceraTIPO: TIBStringField
+ FieldKind = fkInternalCalc
+ FieldName = 'TIPO'
+ Origin = '"V_FACTURAS_CLIENTE"."TIPO"'
+ ProviderFlags = []
+ ReadOnly = True
+ FixedChar = True
+ Size = 1
+ end
+ object cabeceraFECHA_FACTURA: TDateField
+ FieldName = 'FECHA_FACTURA'
+ Origin = '"V_FACTURAS_CLIENTE"."FECHA_FACTURA"'
+ end
+ object cabeceraBASE_IMPONIBLE: TIBBCDField
+ FieldName = 'BASE_IMPONIBLE'
+ Origin = '"V_FACTURAS_CLIENTE"."BASE_IMPONIBLE"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraSITUACION: TIBStringField
+ FieldKind = fkInternalCalc
+ FieldName = 'SITUACION'
+ Origin = '"V_FACTURAS_CLIENTE"."SITUACION"'
+ ProviderFlags = []
+ ReadOnly = True
+ FixedChar = True
+ Size = 19
+ end
+ object cabeceraDESCUENTO: TFloatField
+ FieldName = 'DESCUENTO'
+ Origin = '"V_FACTURAS_CLIENTE"."DESCUENTO"'
+ end
+ object cabeceraIMPORTE_DESCUENTO: TIBBCDField
+ FieldName = 'IMPORTE_DESCUENTO'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_DESCUENTO"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraIVA: TFloatField
+ FieldName = 'IVA'
+ Origin = '"V_FACTURAS_CLIENTE"."IVA"'
+ end
+ object cabeceraIMPORTE_IVA: TIBBCDField
+ FieldName = 'IMPORTE_IVA'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_IVA"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraRE: TFloatField
+ FieldName = 'RE'
+ Origin = '"V_FACTURAS_CLIENTE"."RE"'
+ end
+ object cabeceraIMPORTE_RE: TIBBCDField
+ FieldName = 'IMPORTE_RE'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_RE"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraIMPORTE_TOTAL: TIBBCDField
+ FieldName = 'IMPORTE_TOTAL'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_TOTAL"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraOBSERVACIONES: TMemoField
+ FieldName = 'OBSERVACIONES'
+ Origin = '"V_FACTURAS_CLIENTE"."OBSERVACIONES"'
+ ProviderFlags = [pfInUpdate]
+ BlobType = ftMemo
+ Size = 8
+ end
+ object cabeceraNIF_CIF: TIBStringField
+ FieldName = 'NIF_CIF'
+ Origin = '"V_FACTURAS_CLIENTE"."NIF_CIF"'
+ Size = 15
+ end
+ object cabeceraID_CLIENTE: TIntegerField
+ FieldName = 'ID_CLIENTE'
+ Origin = '"V_FACTURAS_CLIENTE"."ID_CLIENTE"'
+ end
+ object cabeceraNOMBRE: TIBStringField
+ FieldName = 'NOMBRE'
+ Origin = '"V_FACTURAS_CLIENTE"."NOMBRE"'
+ Size = 255
+ end
+ object cabeceraCALLE: TIBStringField
+ FieldName = 'CALLE'
+ Origin = '"V_FACTURAS_CLIENTE"."CALLE"'
+ Size = 255
+ end
+ object cabeceraPROVINCIA: TIBStringField
+ FieldName = 'PROVINCIA'
+ Origin = '"V_FACTURAS_CLIENTE"."PROVINCIA"'
+ Size = 255
+ end
+ object cabeceraPOBLACION: TIBStringField
+ FieldName = 'POBLACION'
+ Origin = '"V_FACTURAS_CLIENTE"."POBLACION"'
+ Size = 255
+ end
+ object cabeceraCODIGO_POSTAL: TIBStringField
+ FieldName = 'CODIGO_POSTAL'
+ Origin = '"V_FACTURAS_CLIENTE"."CODIGO_POSTAL"'
+ Size = 10
+ end
+ object cabeceraRECARGO_EQUIVALENCIA: TSmallintField
+ FieldName = 'RECARGO_EQUIVALENCIA'
+ Origin = '"V_FACTURAS_CLIENTE"."RECARGO_EQUIVALENCIA"'
+ end
+ object cabeceraIMPORTE_NETO: TIBBCDField
+ FieldName = 'IMPORTE_NETO'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_NETO"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraIMPORTE_PORTE: TIBBCDField
+ FieldName = 'IMPORTE_PORTE'
+ Origin = '"V_FACTURAS_CLIENTE"."IMPORTE_PORTE"'
+ Precision = 18
+ Size = 2
+ end
+ object cabeceraFORMA_PAGO: TIBStringField
+ FieldName = 'FORMA_PAGO'
+ Origin = '"FORMAS_PAGO"."DESCRIPCION"'
+ Size = 255
+ end
+ object cabeceraDATOS_BANCARIOS: TIBStringField
+ FieldName = 'DATOS_BANCARIOS'
+ Origin = '"V_FACTURAS_CLIENTE"."DATOS_BANCARIOS"'
+ Size = 255
+ end
+ end
+ object detalles: TIBQuery
+ Database = IBDatabase1
+ Transaction = IBTransaction1
+ SQL.Strings = (
+ 'SELECT'
+
+ ' DET.ID, DET.ID_FACTURA, DET.POSICION, DET.TIPO_DETALLE, ARTI' +
+ 'CULOS.REFERENCIA,'
+
+ ' DET.CONCEPTO, DET.CANTIDAD, DET.IMPORTE_UNIDAD, DET.DESCUENT' +
+ 'O,'
+ ' DET.IMPORTE_TOTAL, DET.VISIBLE'
+ 'FROM FACTURAS_CLIENTE_DETALLES DET'
+ 'LEFT OUTER JOIN ARTICULOS ON (ARTICULOS.ID = DET.ID_ARTICULO)'
+ 'WHERE DET.ID_FACTURA = 2 AND DET.VISIBLE = 1 '
+ 'ORDER BY DET.ID_FACTURA, DET.POSICION;')
+ Left = 136
+ Top = 352
+ object detallesID: TIntegerField
+ FieldName = 'ID'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."ID"'
+ ProviderFlags = [pfInUpdate, pfInWhere, pfInKey]
+ Required = True
+ end
+ object detallesID_FACTURA: TIntegerField
+ FieldName = 'ID_FACTURA'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."ID_FACTURA"'
+ Required = True
+ end
+ object detallesPOSICION: TIntegerField
+ FieldName = 'POSICION'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."POSICION"'
+ end
+ object detallesTIPO_DETALLE: TIBStringField
+ FieldName = 'TIPO_DETALLE'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."TIPO_DETALLE"'
+ Size = 10
+ end
+ object detallesCONCEPTO: TIBStringField
+ FieldName = 'CONCEPTO'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."CONCEPTO"'
+ Size = 2000
+ end
+ object detallesCANTIDAD: TIntegerField
+ FieldName = 'CANTIDAD'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."CANTIDAD"'
+ end
+ object detallesIMPORTE_UNIDAD: TIBBCDField
+ FieldName = 'IMPORTE_UNIDAD'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."IMPORTE_UNIDAD"'
+ Precision = 18
+ Size = 2
+ end
+ object detallesDESCUENTO: TFloatField
+ FieldName = 'DESCUENTO'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."DESCUENTO"'
+ end
+ object detallesIMPORTE_TOTAL: TIBBCDField
+ FieldName = 'IMPORTE_TOTAL'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."IMPORTE_TOTAL"'
+ Precision = 18
+ Size = 2
+ end
+ object detallesVISIBLE: TSmallintField
+ FieldName = 'VISIBLE'
+ Origin = '"FACTURAS_CLIENTE_DETALLES"."VISIBLE"'
+ end
+ object detallesREFERENCIA: TIBStringField
+ FieldName = 'REFERENCIA'
+ Origin = '"ARTICULOS"."REFERENCIA"'
+ Size = 255
+ end
+ end
+ object DADSCabecera: TDADataSource
+ DataSet = tbl_Cabecera.Dataset
+ DataTable = tbl_Cabecera
+ Left = 264
+ Top = 72
+ end
+ object DADSDetalles: TDADataSource
+ DataSet = tbl_Detalles.Dataset
+ DataTable = tbl_Detalles
+ Left = 344
+ Top = 72
+ end
+ object tbl_Detalles: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ end
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ end>
+ Params = <
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ Value = '2'
+ ParamType = daptInput
+ end>
+ MasterParamsMappings.Strings = (
+ 'ID_FACTURA=ID')
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeFacturasCliente_Detalles'
+ IndexDefs = <>
+ Left = 344
+ Top = 128
+ end
+ object tbl_Cabecera: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID'
+ InPrimaryKey = True
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_REFERENCIA'
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasCliente_FECHA_FACTURA'
+ end
+ item
+ Name = 'TIPO'
+ DataType = datString
+ Size = 1
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_BASE_IMPONIBLE'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasCliente_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_DESCUENTO'
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasCliente_IVA'
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_IVA'
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasCliente_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ DictionaryEntry = 'FacturasCliente_OBSERVACIONES'
+ end
+ item
+ Name = 'FORMA_PAGO'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID_CLIENTE'
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'FacturasCliente_NIF_CIF'
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_NOMBRE'
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_CALLE'
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_PROVINCIA'
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DictionaryEntry = 'FacturasCliente_CODIGO_POSTAL'
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasCliente_POBLACION'
+ end
+ item
+ Name = 'TITULAR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ENTIDAD'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'SUCURSAL'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'DC'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'CUENTA'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasCliente_ID_EMPRESA'
+ end
+ item
+ Name = 'NIF_CIF_EMPRESA'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'RAZON_SOCIAL'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CALLE_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'POBLACION_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PROVINCIA_EMPRESA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'CODIGO_POSTAL_EMPRESA'
+ DataType = datString
+ Size = 10
+ end
+ item
+ Name = 'TELEFONO_1'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'FAX'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'MOVIL_1'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'EMAIL_1'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PAGINA_WEB'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'REGISTRO_MERCANTIL'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'LOGOTIPO'
+ DataType = datBlob
+ end>
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ Value = '1'
+ ParamType = daptInput
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeFacturasCliente'
+ IndexDefs = <>
+ Left = 264
+ Top = 128
+ end
+ object frxCheckBoxObject1: TfrxCheckBoxObject
+ Left = 296
+ Top = 288
+ end
+ object frxChartObject1: TfrxChartObject
+ Left = 296
+ Top = 336
+ end
+ object frxGradientObject1: TfrxGradientObject
+ Left = 360
+ Top = 288
+ end
+ object frxCrossObject1: TfrxCrossObject
+ Left = 360
+ Top = 440
+ end
+ object frxOLEObject1: TfrxOLEObject
+ Left = 296
+ Top = 440
+ end
+ object frxBarCodeObject1: TfrxBarCodeObject
+ Left = 360
+ Top = 392
+ end
+ object frxRichObject1: TfrxRichObject
+ Left = 296
+ Top = 392
+ end
+ object frxReport: TfrxReport
+ Version = '4.7.71'
+ DotMatrixReport = False
+ EngineOptions.DoublePass = True
+ IniFile = '\Software\Fast Reports'
+ PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick]
+ PreviewOptions.OutlineWidth = 180
+ PreviewOptions.Zoom = 1.000000000000000000
+ PrintOptions.Printer = 'Default'
+ PrintOptions.PrintOnSheet = 0
+ ReportOptions.CreateDate = 37871.995398692100000000
+ ReportOptions.LastChange = 41474.500467106500000000
+ ReportOptions.VersionBuild = '1'
+ ReportOptions.VersionMajor = '12'
+ ReportOptions.VersionMinor = '13'
+ ReportOptions.VersionRelease = '1'
+ ScriptLanguage = 'PascalScript'
+ ScriptText.Strings = (
+ 'procedure DatosClienteOnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' DatosCliente.Lines.Clear;'
+ ' DatosCliente.Lines.Add();'
+ ''
+ ' if ( <> '#39#39')'
+ ' or ( <> '#39#39') then'
+
+ ' DatosCliente.Lines.Add( + '#39' ' +
+ ' '#39' + );'
+ ''
+ ' if ( <> '#39#39') then'
+ ' DatosCliente.Lines.Add();'
+ 'end;'
+ ''
+ 'procedure BandaDetallesOnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' BandaDetalles.StartNewPage := False;'
+ ' BandaDetalles.Visible := True;'
+ ' MemPrecio.Style := '#39'Concepto normal'#39';'
+ ' MemCantidad.Style := '#39'Concepto normal'#39';'
+ ' MemImpTotal.Style := '#39'Concepto normal'#39';'
+ ' RichConcepto.Visible := True;'
+ ' MemImpTotal.HideZeros := True;'
+ ' '
+ ' case of'
+ ' '#39'Salto'#39': begin'
+ ' BandaDetalles.StartNewPage := True;'
+ ' RichConcepto.Visible := False;'
+ ' end;'
+ ' '#39'Titulo'#39': begin'
+ ' MemPrecio.Style := '#39'Concepto titulo'#39';'
+ ' MemCantidad.Style := '#39'Concepto titulo'#39';'
+ ' MemImpTotal.Style := '#39'Concepto titulo'#39';'
+ ' end;'
+ ' '#39'Concepto'#39': begin'
+ ' MemPrecio.Style := '#39'Concepto normal'#39';'
+ ' MemCantidad.Style := '#39'Concepto normal'#39';'
+ ' MemImpTotal.Style := '#39'Concepto normal'#39';'
+ ' end;'
+ ' '#39'Subtotal'#39': begin'
+ ' MemPrecio.Style := '#39'Concepto subtotal'#39';'
+ ' MemCantidad.Style := '#39'Concepto subtotal'#39';'
+ ' MemImpTotal.Style := '#39'Concepto subtotal'#39';'
+
+ ' MemImpTotal.HideZeros := False; ' +
+ ' '
+ ' end;'
+ ' '#39'Descuento'#39': begin'
+ ' BandaDetalles.Visible := False;'
+ ' RichConcepto.Color := clNone;'
+ ' end;'
+ ' end;'
+ ''
+ ' RichConcepto.Color := MemImpTotal.Color;'
+ ' RichConcepto.Frame := MemImpTotal.Frame;'
+ 'end;'
+ ''
+ 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+
+ ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1' +
+ '.Height - 1;'
+ 'end;'
+ ''
+ 'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);'
+ 'var'
+ ' Cadena: String;'
+ 'begin'
+ ' { '
+ ' DatosEmpresa.Lines.Clear;'
+ ' DatosEmpresa.Lines.Add();'
+ ' DatosEmpresa.Lines.Add();'
+ ''
+ ' Cadena := '#39#39';'
+ ' if ( <> '#39#39') then'
+ ' Cadena := '#39'TLF: '#39' + ;'
+ ' if ( <> '#39#39') then'
+ ' Cadena := Cadena + '#39' FAX: '#39' + ;'
+ ' DatosEmpresa.Lines.Add(Cadena);'
+ ''
+ ' Cadena := '#39#39';'
+ ' if ( <> '#39#39') then'
+ ' Cadena := ;'
+ ' if ( <> '#39#39') then'
+
+ ' Cadena := Cadena + '#39' '#39' + ;'
+ ' if ( <> '#39#39') then'
+
+ ' Cadena := Cadena + '#39' - '#39' + ;'
+ ' DatosEmpresa.Lines.Add(Cadena);'
+ ' } '
+ 'end;'
+ ''
+ 'procedure Memo15OnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' Memo15.Lines.Clear;'
+ ' if (StrToFloat() < 0) then'
+ ' Memo15.Lines.Add('#39'ABONO'#39')'
+ ' else'
+ ' Memo15.Lines.Add('#39'FACTURA'#39')'
+ 'end;'
+ ''
+ 'procedure Memo20OnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' if (StrToFloat() = 0) then'
+ ' begin'
+ ' Memo21.Lines.Clear;'
+ ' Memo29.Lines.Clear;'
+ ' end;'
+ ''
+ 'end;'
+ ''
+ 'procedure Memo11OnBeforePrint(Sender: TfrxComponent);'
+ 'var'
+ ' Cadena : String;'
+ 'begin'
+ ' if ( <> '#39#39') then'
+ ' begin'
+ ' Cadena := Memo11.Lines.Text;'
+ ' Memo11.Lines.Clear;'
+ ' Memo11.Lines.Add();'
+ ' Memo11.Lines.Add(Cadena);'
+ ' end'
+ 'end;'
+ ''
+ 'procedure Band2OnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' if not Engine.FinalPass then'
+ ' Set('#39'TotalPaginas'#39', ( + 1));'
+ ''
+ ' if Engine.FinalPass then'
+ ' Set('#39'Pagina'#39', ( + 1));'
+ 'end;'
+ ''
+ 'procedure frxReportOnStartReport(Sender: TfrxComponent);'
+ 'begin'
+ ' Set('#39'Pagina'#39', 0);'
+ ' Set('#39'TotalPaginas'#39', 0);'
+ 'end;'
+ ''
+ 'procedure Picture1OnBeforePrint(Sender: TfrxComponent);'
+ 'begin'
+ ' if then'
+ ' begin '
+ ' Picture1.Visible := True; '
+ '// Picture2.Visible := True; '
+ '// Picture3.Visible := True; '
+ '// Picture4.Visible := True; '
+ '// Picture5.Visible := True; '
+ '// Picture6.Visible := True; '
+ ' Memo12.Visible := True;'
+
+ ' Memo14.Visible := True; ' +
+ ' '
+ ' end'
+ ' else'
+ ' begin '
+ ' Picture1.Visible := False;'
+ '// Picture2.Visible := False;'
+ '// Picture3.Visible := False;'
+ '// Picture4.Visible := False;'
+ '// Picture5.Visible := False;'
+ '// Picture6.Visible := False;'
+ ' Memo12.Visible := False;'
+
+ ' Memo14.Visible := False; ' +
+ ' '
+ ' end'
+ 'end;'
+ ''
+ ''
+ ''
+ 'begin'
+ ''
+ 'end.')
+ ShowProgress = False
+ StoreInDFM = False
+ OnGetValue = frxReportGetValue
+ OnStartReport = 'frxReportOnStartReport'
+ Left = 145
+ Top = 16
+ end
+ object frxDBVencimientos: TfrxDBDataset
+ UserName = 'frxDBVencimientos'
+ CloseDataSource = False
+ DataSource = DADSVencimientos
+ BCDToCurrency = False
+ Left = 440
+ Top = 16
+ end
+ object DADSVencimientos: TDADataSource
+ DataSet = tbl_Vencimientos.Dataset
+ DataTable = tbl_Vencimientos
+ Left = 440
+ Top = 72
+ end
+ object tbl_Vencimientos: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_FACTURA'
+ Value = ''
+ ParamType = daptInput
+ end>
+ MasterParamsMappings.Strings = (
+ 'ID_FACTURA=ID')
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeFacturasCliente_Vencimientos'
+ IndexDefs = <>
+ Left = 440
+ Top = 128
+ end
+ object vencimientos: TIBQuery
+ Database = IBDatabase1
+ Transaction = IBTransaction1
+ SQL.Strings = (
+ 'SELECT'
+
+ ' V_RECIBOS_CLIENTE.FECHA_VENCIMIENTO, V_RECIBOS_CLIENTE.IMPOR' +
+ 'TE_TOTAL'
+ 'FROM V_RECIBOS_CLIENTE'
+ 'WHERE V_RECIBOS_CLIENTE.ID_FACTURA = 2'
+ 'ORDER BY V_RECIBOS_CLIENTE.FECHA_VENCIMIENTO')
+ Left = 136
+ Top = 408
+ object vencimientosFECHA_VENCIMIENTO: TDateField
+ FieldName = 'FECHA_VENCIMIENTO'
+ Origin = '"V_RECIBOS_CLIENTE"."FECHA_VENCIMIENTO"'
+ end
+ object vencimientosIMPORTE_TOTAL: TIBBCDField
+ FieldKind = fkInternalCalc
+ FieldName = 'IMPORTE_TOTAL'
+ Origin = '"V_RECIBOS_CLIENTE"."IMPORTE_TOTAL"'
+ ProviderFlags = []
+ ReadOnly = True
+ Precision = 18
+ Size = 2
+ end
+ end
+ object DataSource3: TDataSource
+ DataSet = vencimientos
+ Left = 216
+ Top = 408
+ end
+ object frxPDFExport1: TfrxPDFExport
+ ShowDialog = False
+ UseFileCache = True
+ ShowProgress = False
+ OverwritePrompt = False
+ PrintOptimized = True
+ Outline = False
+ Background = False
+ HTMLTags = True
+ Author = 'FactuGES'
+ Subject = 'FactuGES'
+ Creator = 'FactuGES'
+ ProtectionFlags = [ePrint, eModify, eCopy, eAnnot]
+ HideToolbar = False
+ HideMenubar = False
+ HideWindowUI = False
+ FitWindow = False
+ CenterWindow = False
+ PrintScaling = False
+ Left = 424
+ Top = 288
+ end
+ object Bin2DataStreamer: TDABin2DataStreamer
+ Left = 48
+ Top = 88
+ end
+ object DADSInformeObjetivos: TDADataSource
+ DataSet = tbl_InformeObjetivosMensual.Dataset
+ DataTable = tbl_InformeObjetivosMensual
+ Left = 152
+ Top = 152
+ end
+ object frxDBInformeObjetivos: TfrxDBDataset
+ UserName = 'frxDBInformeObjetivos'
+ CloseDataSource = False
+ DataSource = DADSInformeObjetivos
+ BCDToCurrency = False
+ Left = 152
+ Top = 96
+ end
+ object tbl_InformeObjetivosMensual: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'MES'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datInteger
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoObjetivosMensual'
+ IndexDefs = <>
+ Left = 64
+ Top = 216
+ end
+ object tbl_InformeObjetivosTrimestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'TRIMESTRE'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datInteger
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoObjetivosTrimestral'
+ IndexDefs = <>
+ Left = 192
+ Top = 216
+ end
+ object tbl_InformeObjetivosSemestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID_AGENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'AGENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'SEMESTRE'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'CLIENTES_TOTALES'
+ DataType = datInteger
+ end
+ item
+ Name = 'ALTAS_CLIENTE'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'CANTIDAD_OBJETIVO'
+ DataType = datLargeInt
+ end
+ item
+ Name = 'IMPORTE_OBJETIVO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_DEVUELTA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_TOTAL_CONSEGUIDA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_DEVUELTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL_CONSEGUIDO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'CANTIDAD_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_RESULTADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_MEDIO_CLIENTE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ANO1'
+ Value = '2012'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoObjetivosSemestral'
+ IndexDefs = <>
+ Left = 312
+ Top = 216
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.pas b/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.pas
new file mode 100644
index 0000000..a67e89a
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Reports/uRptFacturasProforma_Server.pas
@@ -0,0 +1,1086 @@
+unit uRptFacturasProforma_Server;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
+ uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient,
+ frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes,
+ uDAInterfaces, uDADataStreamer, IBCustomDataSet, IBQuery, IBDatabase,
+ uDAMemDataTable, FactuGES_Intf, frxExportPDF, uDABin2DataStreamer;
+
+type
+ TRptFacturasProforma = class(TDataModule)
+ frxDBCabecera: TfrxDBDataset;
+ frxDBDetalles: TfrxDBDataset;
+ DataDictionary: TDADataDictionary;
+ IBDatabase1: TIBDatabase;
+ IBTransaction1: TIBTransaction;
+ DataSource1: TDataSource;
+ DataSource2: TDataSource;
+ cabecera: TIBQuery;
+ detalles: TIBQuery;
+ DADSCabecera: TDADataSource;
+ DADSDetalles: TDADataSource;
+ tbl_Detalles: TDAMemDataTable;
+ tbl_Cabecera: TDAMemDataTable;
+ frxCheckBoxObject1: TfrxCheckBoxObject;
+ frxChartObject1: TfrxChartObject;
+ frxGradientObject1: TfrxGradientObject;
+ frxCrossObject1: TfrxCrossObject;
+ frxOLEObject1: TfrxOLEObject;
+ frxBarCodeObject1: TfrxBarCodeObject;
+ frxRichObject1: TfrxRichObject;
+ frxReport: TfrxReport;
+ cabeceraID: TIntegerField;
+ cabeceraID_EMPRESA: TIntegerField;
+ cabeceraREFERENCIA: TIBStringField;
+ cabeceraTIPO: TIBStringField;
+ cabeceraFECHA_FACTURA: TDateField;
+ cabeceraBASE_IMPONIBLE: TIBBCDField;
+ cabeceraSITUACION: TIBStringField;
+ cabeceraDESCUENTO: TFloatField;
+ cabeceraIMPORTE_DESCUENTO: TIBBCDField;
+ cabeceraIVA: TFloatField;
+ cabeceraIMPORTE_IVA: TIBBCDField;
+ cabeceraRE: TFloatField;
+ cabeceraIMPORTE_RE: TIBBCDField;
+ cabeceraIMPORTE_TOTAL: TIBBCDField;
+ cabeceraOBSERVACIONES: TMemoField;
+ cabeceraNIF_CIF: TIBStringField;
+ cabeceraID_CLIENTE: TIntegerField;
+ cabeceraNOMBRE: TIBStringField;
+ cabeceraCALLE: TIBStringField;
+ cabeceraPROVINCIA: TIBStringField;
+ cabeceraPOBLACION: TIBStringField;
+ cabeceraCODIGO_POSTAL: TIBStringField;
+ cabeceraRECARGO_EQUIVALENCIA: TSmallintField;
+ cabeceraIMPORTE_NETO: TIBBCDField;
+ cabeceraIMPORTE_PORTE: TIBBCDField;
+ cabeceraFORMA_PAGO: TIBStringField;
+ detallesID: TIntegerField;
+ detallesID_FACTURA: TIntegerField;
+ detallesPOSICION: TIntegerField;
+ detallesTIPO_DETALLE: TIBStringField;
+ detallesCONCEPTO: TIBStringField;
+ detallesCANTIDAD: TIntegerField;
+ detallesIMPORTE_UNIDAD: TIBBCDField;
+ detallesDESCUENTO: TFloatField;
+ detallesIMPORTE_TOTAL: TIBBCDField;
+ detallesVISIBLE: TSmallintField;
+ detallesREFERENCIA: TIBStringField;
+ frxDBVencimientos: TfrxDBDataset;
+ DADSVencimientos: TDADataSource;
+ tbl_Vencimientos: TDAMemDataTable;
+ vencimientos: TIBQuery;
+ DataSource3: TDataSource;
+ cabeceraDATOS_BANCARIOS: TIBStringField;
+ vencimientosFECHA_VENCIMIENTO: TDateField;
+ vencimientosIMPORTE_TOTAL: TIBBCDField;
+ frxPDFExport1: TfrxPDFExport;
+ Bin2DataStreamer: TDABin2DataStreamer;
+ DADSInformeObjetivos: TDADataSource;
+ frxDBInformeObjetivos: TfrxDBDataset;
+ tbl_InformeObjetivosMensual: TDAMemDataTable;
+ tbl_InformeObjetivosTrimestral: TDAMemDataTable;
+ tbl_InformeObjetivosSemestral: TDAMemDataTable;
+ schReport: TDASchema;
+ procedure DataModuleCreate(Sender: TObject);
+ procedure DataModuleDestroy(Sender: TObject);
+ procedure frxReportGetValue(const VarName: string; var Value: Variant);
+ private
+ FConnection: IDAConnection;
+ FIdEmpresa: Integer;
+ FFechaInicio: Variant;
+ FFechaFin: Variant;
+ FFechaVenInicio: Variant;
+ FFechaVenFin: Variant;
+ FAno1: Variant;
+ FAno2: Variant;
+ FIntervalo: Variant;
+ FAgentesActivos: Boolean;
+ FListaIDClientes: TIntegerArray;
+ FListaNombresClientes : TStringList;
+ FListaIDAgentes: TIntegerArray;
+ FListaNombresAgentes : TStringList;
+ FImporteMinimo: Currency;
+ FDesglosado : Boolean;
+ FShowLogotipo: Boolean;
+ FTopN: Integer;
+
+ //Genera cada una de las facturas a imprimir
+ procedure _GenerarFactura(const ID: Integer; const VerSello: Boolean = True; const VerCopia: Boolean = True);
+
+ procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInforme(ATabla: IDADataset);
+ procedure PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInformeGrafComp(ATabla: TDAMemDataTable);
+ procedure PrepararTablaInformeObjetivos(ATabla: TDAMemDataTable);
+ function _GenerarInforme(const TipoInforme: String): Binary;
+ procedure IniciarParametrosInforme;
+ procedure RecuperarNombresClientes;
+ procedure RecuperarNombresAgentes;
+ public
+ function GenerarFactura(const ListaID : TIntegerArray; const VerSello: Boolean = True; const VerCopia: Boolean = True): Binary;
+ function GenerarFacturaEnPDF(const ListaID : TIntegerArray; const VerSello: Boolean = True): Binary;
+ function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeListadoFacturas(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeListadoFacturasPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
+ function GenerarInformeBeneficiosGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const Serie: Variant): Binary;
+ function GenerarInformeObjetivosAgentesFacturas(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const AgentesActivos: Boolean; const ListaIDAgentes: TIntegerArray; const TopN: Integer): Binary;
+ end;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ uSistemaFunc, StrUtils, uDataModuleServer, schFacturasClienteClient_Intf,
+ uROServer, DataAbstract4_Intf, srvGestorInformes_Impl;
+
+const
+ rptFacturaCliente = 'InfFacturaCliente.fr3';
+ rptInformeIVA = 'InformeIVAClientes.fr3';
+ rptInformeIVADesglosado = 'InformeIVAClientesDesglosado.fr3';
+ rptInformeListadoFacturasCliente = 'InformeListadoFacturasCliente.fr3';
+ rptInformeListadoFacturasClienteDesglosado = 'InformeListadoFacturasClienteDesglosado.fr3';
+ rptInformeListadoFactuasClientePendiente = 'InformeListadoFacturasClientePendientes.fr3';
+ rptInformeListadoFactuasClientePendienteDesglosado = 'InformeListadoFacturasClientePendientesDesglosado.fr3';
+ rptInformeListadoFacturasClienteGrafComp = 'InformeListadoFacturasClienteGrafComp.fr3';
+ rptInformeListadoBeneficiosGrafComp = 'InformeListadoBeneficiosGrafComp.fr3';
+ rptInformeObjetivosAgentesFacturas = 'InformeObjetivosAgentesFacturas.fr3';
+
+ { Dataset names for schReport }
+ ds_InformeListadoFacturasResumen = 'InformeListadoFacturasResumen';
+
+
+{ TRptFacturasCliente }
+
+
+procedure TRptFacturasProforma.DataModuleCreate(Sender: TObject);
+begin
+ FShowLogotipo := False;
+
+ schReport.ConnectionManager := dmServer.ConnectionManager;
+ FConnection := dmServer.DarNuevaConexion;
+ frxReport.EngineOptions.NewSilentMode := simReThrow;
+
+ FListaNombresClientes := TStringList.Create;
+ FListaNombresAgentes := TStringList.Create;
+
+ frxDBCabecera.DataSource := DADSCabecera;
+ frxDBCabecera.CloseDataSource := False;
+
+ frxDBDetalles.DataSource := DADSDetalles;
+ frxDBDetalles.CloseDataSource := False;
+
+ frxDBVencimientos.DataSource := DADSVencimientos;
+ frxDBVencimientos.CloseDataSource := False;
+end;
+
+procedure TRptFacturasProforma.DataModuleDestroy(Sender: TObject);
+begin
+ tbl_Cabecera.Active := False;
+ tbl_Detalles.Active := False;
+ tbl_Vencimientos.Active := False;
+
+ FreeANDNIL(FListaNombresClientes);
+ FreeANDNIL(FListaNombresAgentes);
+end;
+
+procedure TRptFacturasProforma.frxReportGetValue(const VarName: string; var Value: Variant);
+begin
+ if VarName = 'ShowLogotipo' then
+ Value := FShowLogotipo;
+end;
+
+function TRptFacturasProforma.GenerarFactura(const ListaID: TIntegerArray; const VerSello: Boolean = True; const VerCopia: Boolean = True): Binary;
+var
+ i: Integer;
+begin
+ Result := Binary.Create;
+ FShowLogotipo := VerSello;
+
+ try
+ //Vamos generando todos y cada una de las facturas recibidas
+ for i := 0 to ListaID.Count - 1 do
+ _GenerarFactura(ListaID.Items[i], VerSello, VerCopia);
+
+ frxReport.PreviewPages.SaveToStream(Result);
+ finally
+ end;
+end;
+
+function TRptFacturasProforma.GenerarFacturaEnPDF(const ListaID: TIntegerArray; const VerSello: Boolean = True): Binary;
+var
+ i: Integer;
+begin
+ Result := Binary.Create;
+ FShowLogotipo := VerSello;
+ try
+ //Vamos generando todos y cada una de las facturas recibidas
+ for i := 0 to ListaID.Count - 1 do
+ _GenerarFactura(ListaID.Items[i], VerSello);
+
+ frxPDFExport1.Stream := Result;
+ frxReport.Export(frxPDFExport1)
+ finally
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeBeneficiosGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2,
+ Serie: Variant): Binary;
+var
+ AStream: TMemoryStream;
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FAno1 := Ano1;
+ FAno2 := Ano2;
+ FIntervalo := Intervalo;
+
+ //Preparamos la tabla correspondiente y la abrimos para el informe
+ if (FIntervalo = CTE_MENSUAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoBeneficiosGrafCompMensual)
+ else if (FIntervalo = CTE_TRIMESTRAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoBeneficiosGrafCompTrimestral)
+ else
+ PrepararTablaInformeGrafComp(tbl_InformeListadoBeneficiosGrafCompSemestral);
+
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptInformeListadoBeneficiosGrafComp, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarInformeBeneficiosGrafComp, no encuentra informe ' + rptInformeListadoBeneficiosGrafComp));
+
+ frxReport.LoadFromFile(AInforme, True);
+// IniciarParametrosInforme;
+
+ frxReport.Variables.Variables['Ano1']:= Ano1;
+ frxReport.Variables.Variables['Ano2']:= Ano2;
+ frxReport.Variables.Variables['Serie']:= Serie;
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+
+ finally
+ AStream.Free;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeFacturasGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
+var
+ AStream: TMemoryStream;
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FAno1 := Ano1;
+ FAno2 := Ano2;
+ FIntervalo := Intervalo;
+ FTopN := TopN;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Preparamos la tabla correspondiente y la abrimos para el informe
+ if (FIntervalo = CTE_MENSUAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompMensual)
+ else if (FIntervalo = CTE_TRIMESTRAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompTrimestral)
+ else
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompSemestral);
+
+ //Se preparan las tablas del listado resumen del informe
+ PrepararTablaResumenInformeGrafComp(tbl_InformeListadoClientesMayorFacturacionResumen);
+ PrepararTablaResumenInformeGrafComp(tbl_InformeListadoClientesMayorDescuentoResumen);
+ PrepararTablaResumenInformeGrafComp(tbl_InformeListadoAgentesMayorFacturacionResumen);
+
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptInformeListadoFacturasClienteGrafComp, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarInformeFacturasGrafComp, no encuentra informe ' + rptInformeListadoFacturasClienteGrafComp));
+
+ frxReport.LoadFromFile(AInforme, True);
+// IniciarParametrosInforme;
+
+ frxReport.Variables.Variables['Ano1']:= Ano1;
+ frxReport.Variables.Variables['Ano2']:= Ano2;
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+
+ finally
+ AStream.Free;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+var
+ ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := Null;
+ FFechaVenFin := Null;
+ FImporteMinimo := ImporteMinimo;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se van a prepara las tablas del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ if Desglosado then
+ ATipoInforme := rptInformeIVADesglosado
+ else
+ ATipoInforme := rptInformeIVA;
+
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeListadoFacturas(const IdEmpresa: Integer;
+ const FechaInicio, FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant;
+ const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+var
+ ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := FechaVenInicio;
+ FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FDesglosado := Desglosado;
+ if FDesglosado then
+ ATipoInforme := rptInformeListadoFacturasClienteDesglosado
+ else
+ ATipoInforme := rptInformeListadoFacturasCliente;
+
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeListadoFacturasPendientes(
+ const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant;
+ const FechaVenInicio: Variant; const FechaVenFin: Variant;
+ const ListaIDClientes: TIntegerArray; const Desglosado: Boolean;
+ const ImporteMinimo: Currency): Binary;
+var
+ Condicion: TDAWhereExpression;
+ ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := FechaVenInicio;
+ FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturasPendientes.Active then
+ tbl_InformeListadoFacturasPendientes.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturasPendientes);
+
+ // Filtrar el informe por situacion
+ with tbl_InformeListadoFacturasPendientes.DynamicWhere do
+ begin
+ // (ID_EMPRESA >= ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteSITUACION), NewConstant('PAGADA', datString), dboNotEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FDesglosado := Desglosado;
+ if FDesglosado then
+ ATipoInforme := rptInformeListadoFactuasClientePendienteDesglosado
+ else
+ ATipoInforme := rptInformeListadoFactuasClientePendiente;
+
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturasPendientes.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma.GenerarInformeObjetivosAgentesFacturas(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const AgentesActivos: Boolean; const ListaIDAgentes: TIntegerArray; const TopN: Integer): Binary;
+var
+ AStream: TMemoryStream;
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FAno1 := Ano1;
+ FIntervalo := Intervalo;
+ FAgentesActivos := AgentesActivos;
+ FFechaVenInicio := Null;
+ FFechaVenFin := Null;
+
+ if Assigned(FListaIDAgentes) then
+ FListaIDClientes.Free;
+ FListaIDAgentes := ListaIDAgentes;
+
+ //Preparamos la tabla correspondiente y la abrimos para el informe
+ if (FIntervalo = CTE_MENSUAL) then
+ PrepararTablaInformeObjetivos(tbl_InformeObjetivosMensual)
+ else if (FIntervalo = CTE_TRIMESTRAL) then
+ PrepararTablaInformeObjetivos(tbl_InformeObjetivosTrimestral)
+ else
+ PrepararTablaInformeObjetivos(tbl_InformeObjetivosSemestral);
+
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptInformeObjetivosAgentesFacturas, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarInformeObjetivosAgentesFacturas, no encuentra informe ' + rptInformeObjetivosAgentesFacturas));
+
+ frxReport.LoadFromFile(AInforme, True);
+ IniciarParametrosInforme;
+
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+
+ finally
+ AStream.Free;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+procedure TRptFacturasProforma.IniciarParametrosInforme;
+var
+ ATextos : TStringList;
+ ACadena : String;
+begin
+ ATextos := TStringList.Create;
+
+ try
+ if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then
+ ACadena := Format('Fechas de factura desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)])
+ else
+ ACadena := 'Sin rango de fechas';
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ // Filtrar el informe por fechas de vencimiento
+ if (not VarIsNull(FFechaVenInicio)) and (not VarIsNull(FFechaVenFin)) then
+ begin
+ ACadena := Format('Vencimientos desde el %s hasta el %s', [VarToStr(FFechaVenInicio), VarToStr(FFechaVenFin)]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+
+ if (FImporteMinimo > 0) then
+ begin
+ ACadena := Format('Facturas con importe superior a %m', [FImporteMinimo]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+
+ if Assigned(FListaIDClientes) and (FListaIDClientes.Count > 0) then
+ begin
+ RecuperarNombresClientes;
+ ACadena := FListaNombresClientes.Text;
+ end
+ else begin
+ ACadena := 'Todos los clientes';
+ if FDesglosado then
+ ACadena := ACadena + ' (desglosados)'
+ end;
+
+ if not VarIsNull(FAno1) then
+ begin
+ ACadena := 'Año: ' + FAno1;
+ ATextos.Add(ACadena);
+ end;
+
+ if Assigned(FListaIDAgentes) and (FListaIDAgentes.Count > 0) then
+ begin
+ ACadena := 'Agente: ';
+ RecuperarNombresAgentes;
+ ACadena := ACadena + FListaNombresAgentes.Text;
+ end
+ else begin
+ ACadena := 'Todos los agentes';
+// if FDesglosado then
+ ACadena := ACadena + ' (desglosados)'
+ end;
+
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+
+
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ frxReport.Variables.Variables['TextoParametros'] := ATextos.Text;
+ finally
+ FreeAndNil(ATextos);
+ end;
+end;
+
+procedure TRptFacturasProforma.PrepararTablaInforme(ATabla: TDAMemDataTable);
+var
+ Condicion: TDAWhereExpression;
+ i: Integer;
+
+begin
+ // Filtrar el informe por empresa
+ with ATabla.DynamicWhere do
+ begin
+ // (ID_EMPRESA >= ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_EMPRESA), NewConstant(FIdEmpresa, datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio)
+ and not VarIsNull(FFechaFin) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (FECHA_INICIO between FECHA_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FFechaInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FFechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+
+ // Filtrar el informe por fechas de vencimiento
+ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+
+ // Filtrar el informe por proveedor
+ if Assigned(FListaIDClientes) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+
+ // (ID_CLIENTE = ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_CLIENTE), NewConstant(FListaIDClientes.Items[i], datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+ end;
+
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (IMPORTE_TOTAL > ImporteMinimo)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasCLienteIMPORTE_TOTAL), NewConstant(FImporteMinimo, datCurrency), dboGreaterOrEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+end;
+
+procedure TRptFacturasProforma.PrepararTablaInformeGrafComp(
+ ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ DASInformeListadoFacturasGrafComp.DataTable := ATabla;
+ ATabla.ParamByName('ID_EMPRESA1').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ID_EMPRESA2').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO1').AsVariant := FAno1;
+ ATabla.ParamByName('ANO2').AsVariant := FAno2;
+ ATabla.Active := True;
+end;
+
+procedure TRptFacturasProforma.PrepararTablaInformeObjetivos(
+ ATabla: TDAMemDataTable);
+var
+ Condicion: TDAWhereExpression;
+ i: Integer;
+
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+{
+ if (FAgentesActivos) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (SOLO AGENTES ACTIVOS)
+ Condicion := NewBinaryExpression(NewField('AD', 'FECHA_BAJA'), NewNull(), dboEqual);
+
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+}
+ // Filtrar el informe por agente
+ if Assigned(FListaIDAgentes) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ for i := 0 to FListaIDAgentes.Count - 1 do
+ begin
+
+ // (ID_AGENTE = ID)
+ Condicion := NewBinaryExpression(NewField('SEN', 'ID_AGENTE'), NewConstant(FListaIDAgentes.Items[i], datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+ end;
+
+ DADSInformeObjetivos.DataTable := ATabla;
+ ATabla.ParamByName('ID_EMPRESA').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO1').AsVariant := FAno1;
+ ATabla.Active := True;
+end;
+
+procedure TRptFacturasProforma.PrepararTablaResumenInforme(ATabla: IDADataset);
+var
+ i: Integer;
+ AWhereStr : String;
+
+begin
+ // Filtrar el informe por empresa
+ AWhereStr := ' (' + fld_FacturasCLienteID_EMPRESA + ' = ' + IntToStr(FIdEmpresa) + ') ';
+
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio)
+ and not VarIsNull(FFechaFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteFECHA_FACTURA + ' between ''' + ReplaceStr(VarToStr(FFechaInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaFin),'/','.') + ''') ';
+ end;
+
+ // Filtrar el informe por fechas de vencimiento
+ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteFECHA_VENCIMIENTO + ' between ''' + ReplaceStr(VarToStr(FFechaVenInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaVenFin),'/','.') + ''') ';
+ end;
+
+ // Filtrar el informe por proveedor
+ if Assigned(FListaIDClientes) then
+ begin
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteID_CLIENTE + ' = ' + IntToStr(FListaIDClientes.Items[i]) + ') ';
+ end;
+ end;
+
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteIMPORTE_TOTAL + ' >= ' + CurrToStr(FImporteMinimo) + ') ';
+ end;
+
+ ATabla.Where.AddText(AWhereStr);
+end;
+
+procedure TRptFacturasProforma.PrepararTablaResumenInformeGrafComp(
+ ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ ATabla.ParamByName('ID_EMPRESA').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO').AsVariant := FAno1;
+ ATabla.ParamByName('ANO2').AsVariant := FAno2;
+ ATabla.ParamByName('NTOP').AsInteger := FTopN;
+ ATabla.Active := True;
+end;
+
+procedure TRptFacturasProforma.RecuperarNombresAgentes;
+var
+ AContactosService : IsrvContactos;
+ Intf : IInterface;
+ AClientID : TGUID;
+
+ ATableNameArray: StringArray;
+ ATableRequestInfoArray: TableRequestInfoArray;
+ ATableRequestInfo: TableRequestInfoV5;
+ AStream: TMemoryStream;
+ ADataTable: TDAMemDataTable;
+ i: Integer;
+ AWhereBuilder : TDAWhereBuilder;
+ ACondicion : TDAWhereExpression;
+begin
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvContactos').CreateInstance(AClientID, Intf);
+
+ if Assigned(Intf) then
+ begin
+ AContactosService := Intf as IsrvContactos;
+
+ ATableNameArray := StringArray.Create;
+ ATableRequestInfoArray := TableRequestInfoArray.Create;
+ AWhereBuilder := TDAWhereBuilder.Create;
+ try
+ ATableNameArray.Add('Agentes');
+ ATableRequestInfo := TableRequestInfoV5.Create;
+
+ with ATableRequestInfo do
+ begin
+ IncludeSchema := True;
+ MaxRecords := -1;
+ UserFilter := '';
+
+ AWhereBuilder.Clear;
+ with AWhereBuilder do
+ for i := 0 to FListaIDAgentes.Count - 1 do
+ begin
+ ACondicion := NewBinaryExpression(
+ NewBinaryExpression(NewField('', 'ID'), NewConstant(FListaIDAgentes[i], datInteger), dboEqual),
+ NewBinaryExpression(NewField('', 'ID_EMPRESA'), NewConstant(FIdEmpresa, datInteger), dboEqual),
+ dboAnd);
+
+ if not AWhereBuilder.IsEmpty then
+ Expression := NewBinaryExpression(Expression, ACondicion, dboOr)
+ else
+ Expression := ACondicion;
+ end;
+
+ WhereClause := AWhereBuilder.ExpressionToXmlNode(AWhereBuilder.Expression);
+ end;
+
+ try
+ ATableRequestInfoArray.Add(ATableRequestInfo);
+ AStream := AContactosService.GetData(ATableNameArray, ATableRequestInfoArray);
+ if Assigned(AStream) then
+ begin
+ ADataTable := TDAMemDataTable.Create(nil);
+ try
+ ADataTable.Name := 'Agentes';
+ ADataTable.LocalDataStreamer := Bin2DataStreamer;
+ ADataTable.RemoteFetchEnabled := False;
+ Bin2DataStreamer.ReadDataset(AStream, ADataTable, True);
+
+ ADataTable.Open;
+ FListaNombresAgentes.Clear;
+ for i := 0 to ADataTable.RecordCount - 1 do
+ begin
+ FListaNombresAgentes.Add(ADataTable.FieldByName('NOMBRE').AsString);
+ ADataTable.Next;
+ end;
+
+ finally
+ FreeANDNil(ADataTable);
+ end;
+ end;
+ except
+ on e: Exception do
+ dmServer.EscribirLog(e.Message);
+ end;
+ finally
+ FreeANDNIL(ATableRequestInfoArray);
+ FreeANDNIL(ATableNameArray);
+ FreeANDNIL(AWhereBuilder);
+ end;
+ end;
+end;
+
+procedure TRptFacturasProforma.RecuperarNombresClientes;
+var
+ AContactosService : IsrvContactos;
+ Intf : IInterface;
+ AClientID : TGUID;
+
+ ATableNameArray: StringArray;
+ ATableRequestInfoArray: TableRequestInfoArray;
+ ATableRequestInfo: TableRequestInfoV5;
+ AStream: TMemoryStream;
+ ADataTable: TDAMemDataTable;
+ i: Integer;
+ AWhereBuilder : TDAWhereBuilder;
+ ACondicion : TDAWhereExpression;
+begin
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvContactos').CreateInstance(AClientID, Intf);
+
+ if Assigned(Intf) then
+ begin
+ AContactosService := Intf as IsrvContactos;
+
+ ATableNameArray := StringArray.Create;
+ ATableRequestInfoArray := TableRequestInfoArray.Create;
+ AWhereBuilder := TDAWhereBuilder.Create;
+ try
+ ATableNameArray.Add('Clientes');
+ ATableRequestInfo := TableRequestInfoV5.Create;
+
+ with ATableRequestInfo do
+ begin
+ IncludeSchema := True;
+ MaxRecords := -1;
+ UserFilter := '';
+
+ AWhereBuilder.Clear;
+ with AWhereBuilder do
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+ ACondicion := NewBinaryExpression(
+ NewBinaryExpression(NewField('', 'ID'), NewConstant(FListaIDClientes[i], datInteger), dboEqual),
+ NewBinaryExpression(NewField('', 'ID_EMPRESA'), NewConstant(FIdEmpresa, datInteger), dboEqual),
+ dboAnd);
+
+ if not AWhereBuilder.IsEmpty then
+ Expression := NewBinaryExpression(Expression, ACondicion, dboOr)
+ else
+ Expression := ACondicion;
+ end;
+
+ WhereClause := AWhereBuilder.ExpressionToXmlNode(AWhereBuilder.Expression);
+ end;
+
+ try
+ ATableRequestInfoArray.Add(ATableRequestInfo);
+ AStream := AContactosService.GetData(ATableNameArray, ATableRequestInfoArray);
+ if Assigned(AStream) then
+ begin
+ ADataTable := TDAMemDataTable.Create(nil);
+ try
+ ADataTable.Name := 'Clientes';
+ ADataTable.LocalDataStreamer := Bin2DataStreamer;
+ ADataTable.RemoteFetchEnabled := False;
+ Bin2DataStreamer.ReadDataset(AStream, ADataTable, True);
+
+ ADataTable.Open;
+ FListaNombresClientes.Clear;
+ for i := 0 to ADataTable.RecordCount - 1 do
+ begin
+ FListaNombresClientes.Add(ADataTable.FieldByName('NOMBRE').AsString);
+ ADataTable.Next;
+ end;
+
+ finally
+ FreeANDNil(ADataTable);
+ end;
+ end;
+ except
+ on e: Exception do
+ dmServer.EscribirLog(e.Message);
+ end;
+ finally
+ FreeANDNIL(ATableRequestInfoArray);
+ FreeANDNIL(ATableNameArray);
+ FreeANDNIL(AWhereBuilder);
+ end;
+ end;
+end;
+
+procedure TRptFacturasProforma._GenerarFactura(const ID: Integer; const VerSello: Boolean = True; const VerCopia: Boolean = True);
+var
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ try
+ tbl_Cabecera.Active := False;
+ tbl_Detalles.Active := False;
+ tbl_Vencimientos.Active := False;
+
+ tbl_Cabecera.ParamByName('ID').AsInteger := ID;
+ tbl_Detalles.ParamByName('ID_FACTURA').AsInteger := ID;
+ tbl_Vencimientos.ParamByName('ID_FACTURA').AsInteger := ID;
+
+ tbl_Cabecera.Active := True;
+ tbl_Detalles.Active := True;
+ tbl_Vencimientos.Active := True;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptFacturaCliente, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString);
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: _GenerarFactura, no encuentra informe ' + rptFacturaCliente));
+
+ frxReport.LoadFromFile(AInforme, True);
+
+// if VerSello then
+// frxReport.Variables.Variables['ShowLogotipo'] := VerSello;
+// else
+// frxReport.Variables.Variables['ShowLogotipo'] := 0;
+ //La primera impresion siempre es sin la etiqueta copia
+// frxReport.Variables.Variables['VerCopia'] := 0;
+
+ frxReport.PrepareReport(False);
+// frxReport.PreviewPages.Print;
+{
+ if VerCopia then
+ begin
+ frxReport.Variables.Variables['VerCopia'] := 1;
+ frxReport.Variables.Variables['VerSello'] := 0; //El sello nunca saldrá en la copia
+ frxReport.PrepareReport(False);
+ end;
+}
+ finally
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
+function TRptFacturasProforma._GenerarInforme(const TipoInforme: String): Binary;
+var
+ AInforme: Variant;
+begin
+ Result := Binary.Create;
+ AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme));
+
+ frxReport.LoadFromFile(AInforme, True);
+ IniciarParametrosInforme;
+
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.dfm b/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.dfm
new file mode 100644
index 0000000..975b118
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.dfm
@@ -0,0 +1,1843 @@
+object srvFacturasProforma: TsrvFacturasProforma
+ OldCreateOrder = True
+ OnCreate = DARemoteServiceCreate
+ ConnectionName = 'IBX'
+ ServiceSchema = schFacturasProforma
+ ServiceDataStreamer = Bin2DataStreamer
+ ExportedDataTables = <>
+ BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
+ Height = 180
+ Width = 386
+ object schFacturasProforma: TDASchema
+ ConnectionManager = dmServer.ConnectionManager
+ DataDictionary = DataDictionary
+ Diagrams = Diagrams
+ Datasets = <
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select ANO from'#10'(select distinct(substr(FECHA_FACTURA, 1,4)) as ' +
+ 'ANO'#10'from facturas_proforma'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select d' +
+ 'istinct '#39'Todos'#39' as ANO'#10'from empresas'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end>
+ end>
+ Name = 'ListaAnosFacturas'
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datString
+ Size = 254
+ end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'V_FACTURAS_PROFORMA'
+ StatementType = stAutoSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'FECHA_FACTURA'
+ TableField = 'FECHA_FACTURA'
+ end
+ item
+ DatasetField = 'FECHA_VENCIMIENTO'
+ TableField = 'FECHA_VENCIMIENTO'
+ end
+ item
+ DatasetField = 'SITUACION'
+ TableField = 'SITUACION'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO'
+ TableField = 'IMPORTE_DESCUENTO'
+ end
+ item
+ DatasetField = 'DESCRIPCION_DESCUENTO'
+ TableField = 'DESCRIPCION_DESCUENTO'
+ end
+ item
+ DatasetField = 'IVA'
+ TableField = 'IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'RE'
+ TableField = 'RE'
+ end
+ item
+ DatasetField = 'IMPORTE_RE'
+ TableField = 'IMPORTE_RE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'OBSERVACIONES'
+ TableField = 'OBSERVACIONES'
+ end
+ item
+ DatasetField = 'ID_CLIENTE'
+ TableField = 'ID_CLIENTE'
+ end
+ item
+ DatasetField = 'NIF_CIF'
+ TableField = 'NIF_CIF'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'ID_DIRECCION'
+ TableField = 'ID_DIRECCION'
+ end
+ item
+ DatasetField = 'CALLE'
+ TableField = 'CALLE'
+ end
+ item
+ DatasetField = 'POBLACION'
+ TableField = 'POBLACION'
+ end
+ item
+ DatasetField = 'PROVINCIA'
+ TableField = 'PROVINCIA'
+ end
+ item
+ DatasetField = 'CODIGO_POSTAL'
+ TableField = 'CODIGO_POSTAL'
+ end
+ item
+ DatasetField = 'FECHA_ALTA'
+ TableField = 'FECHA_ALTA'
+ end
+ item
+ DatasetField = 'FECHA_MODIFICACION'
+ TableField = 'FECHA_MODIFICACION'
+ end
+ item
+ DatasetField = 'USUARIO'
+ TableField = 'USUARIO'
+ end
+ item
+ DatasetField = 'ID_FORMA_PAGO'
+ TableField = 'ID_FORMA_PAGO'
+ end
+ item
+ DatasetField = 'RECARGO_EQUIVALENCIA'
+ TableField = 'RECARGO_EQUIVALENCIA'
+ end
+ item
+ DatasetField = 'ID_TIPO_IVA'
+ TableField = 'ID_TIPO_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_NETO'
+ TableField = 'IMPORTE_NETO'
+ end
+ item
+ DatasetField = 'IMPORTE_PORTE'
+ TableField = 'IMPORTE_PORTE'
+ end
+ item
+ DatasetField = 'NUM_COPIAS'
+ TableField = 'NUM_COPIAS'
+ end
+ item
+ DatasetField = 'NUM_CORREOS'
+ TableField = 'NUM_CORREOS'
+ end
+ item
+ DatasetField = 'DATOS_BANCARIOS'
+ TableField = 'DATOS_BANCARIOS'
+ end
+ item
+ DatasetField = 'ID_PEDIDO'
+ TableField = 'ID_PEDIDO'
+ end
+ item
+ DatasetField = 'ID_FACTURA_FINAL'
+ TableField = 'ID_FACTURA_FINAL'
+ end>
+ end>
+ Name = 'FacturasProforma'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_ID'
+ DictionaryEntry = 'FacturasProforma_ID'
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_EMPRESA'
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_REFERENCIA'
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasProforma_FECHA_FACTURA'
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasProforma_FECHA_VENCIMIENTO'
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_SITUACION'
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_BASE_IMPONIBLE'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasProforma_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_DESCUENTO'
+ end
+ item
+ Name = 'DESCRIPCION_DESCUENTO'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_DESCRIPCION_DESCUENTO'
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasProforma_IVA'
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_IVA'
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasProforma_RE'
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_RE'
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ DictionaryEntry = 'FacturasProforma_OBSERVACIONES'
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_CLIENTE'
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ DictionaryEntry = 'FacturasProforma_NIF_CIF'
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_NOMBRE'
+ end
+ item
+ Name = 'ID_DIRECCION'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_DIRECCION'
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_CALLE'
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_POBLACION'
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_PROVINCIA'
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DictionaryEntry = 'FacturasProforma_CODIGO_POSTAL'
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasProforma_FECHA_ALTA'
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ DictionaryEntry = 'FacturasProforma_FECHA_MODIFICACION'
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ DictionaryEntry = 'FacturasProforma_USUARIO'
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_FORMA_PAGO'
+ end
+ item
+ Name = 'RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ DictionaryEntry = 'FacturasProforma_RECARGO_EQUIVALENCIA'
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_TIPO_IVA'
+ end
+ item
+ Name = 'IMPORTE_NETO'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_NETO'
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_IMPORTE_PORTE'
+ end
+ item
+ Name = 'NUM_COPIAS'
+ DataType = datSmallInt
+ DictionaryEntry = 'FacturasProforma_NUM_COPIAS'
+ end
+ item
+ Name = 'NUM_CORREOS'
+ DataType = datSmallInt
+ DictionaryEntry = 'FacturasProforma_NUM_CORREOS'
+ end
+ item
+ Name = 'DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_DATOS_BANCARIOS'
+ end
+ item
+ Name = 'ID_PEDIDO'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_PEDIDO'
+ end
+ item
+ Name = 'ID_FACTURA_FINAL'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_ID_FACTURA_FINAL'
+ end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'FACTURAS_PROFORMA_DETALLES'
+ SQL =
+ 'SELECT'#10' FACTURAS_PROFORMA_DETALLES.ID, FACTURAS_PROFORMA_DETA' +
+ 'LLES.ID_FACTURA,'#10' FACTURAS_PROFORMA_DETALLES.POSICION, FACTUR' +
+ 'AS_PROFORMA_DETALLES.TIPO_DETALLE,'#10' FACTURAS_PROFORMA_DETALLE' +
+ 'S.CONCEPTO, FACTURAS_PROFORMA_DETALLES.CANTIDAD,'#10' FACTURAS_PR' +
+ 'OFORMA_DETALLES.UNIDAD_MEDIDA, FACTURAS_PROFORMA_DETALLES.IMPORT' +
+ 'E_UNIDAD,'#10' FACTURAS_PROFORMA_DETALLES.IMPORTE_TOTAL, FACTURAS' +
+ '_PROFORMA_DETALLES.VISIBLE,'#10#10' FACTURAS_PROFORMA_DETALLES.ID_A' +
+ 'RTICULO, FACTURAS_PROFORMA_DETALLES.DESCUENTO,'#10' FACTURAS_PROF' +
+ 'ORMA_DETALLES.IMPORTE_PORTE, ARTICULOS.REFERENCIA, ARTICULOS.REF' +
+ 'ERENCIA_PROV as REFERENCIA_PROVEEDOR'#10#10'FROM FACTURAS_PROFORMA_DET' +
+ 'ALLES'#10'LEFT JOIN ARTICULOS ON FACTURAS_PROFORMA_DETALLES.ID_ARTIC' +
+ 'ULO = ARTICULOS.ID'#10'where {where}'#10'ORDER BY POSICION;'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_FACTURA'
+ TableField = 'ID_FACTURA'
+ end
+ item
+ DatasetField = 'POSICION'
+ TableField = 'POSICION'
+ end
+ item
+ DatasetField = 'TIPO_DETALLE'
+ TableField = 'TIPO_DETALLE'
+ end
+ item
+ DatasetField = 'CONCEPTO'
+ TableField = 'CONCEPTO'
+ end
+ item
+ DatasetField = 'CANTIDAD'
+ TableField = 'CANTIDAD'
+ end
+ item
+ DatasetField = 'UNIDAD_MEDIDA'
+ TableField = 'UNIDAD_MEDIDA'
+ end
+ item
+ DatasetField = 'IMPORTE_UNIDAD'
+ TableField = 'IMPORTE_UNIDAD'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'VISIBLE'
+ TableField = 'VISIBLE'
+ end
+ item
+ DatasetField = 'ID_ARTICULO'
+ TableField = 'ID_ARTICULO'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_PORTE'
+ TableField = 'IMPORTE_PORTE'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = ''
+ SQLOrigin = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'REFERENCIA_PROVEEDOR'
+ TableField = ''
+ SQLOrigin = 'REFERENCIA_PROVEEDOR'
+ end>
+ end>
+ Name = 'FacturasProforma_Detalles'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_DETALLES_ID'
+ LogChanges = False
+ ReadOnly = True
+ ServerCalculated = True
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_Detalles_ID_FACTURA'
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_Detalles_POSICION'
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ DictionaryEntry = 'FacturasProforma_Detalles_TIPO_DETALLE'
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ DictionaryEntry = 'FacturasProforma_Detalles_CONCEPTO'
+ end
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_Detalles_CANTIDAD'
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_Detalles_UNIDAD_MEDIDA'
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_UNIDAD'
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_TOTAL'
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ DictionaryEntry = 'FacturasProforma_Detalles_VISIBLE'
+ end
+ item
+ Name = 'ID_ARTICULO'
+ DataType = datInteger
+ DictionaryEntry = 'FacturasProforma_Detalles_ID_ARTICULO'
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ DictionaryEntry = 'FacturasProforma_Detalles_DESCUENTO'
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ DictionaryEntry = 'FacturasProforma_Detalles_IMPORTE_PORTE'
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_Detalles_REFERENCIA'
+ end
+ item
+ Name = 'REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ DictionaryEntry = 'FacturasProforma_Detalles_REFERENCIA_PROVEEDOR'
+ end>
+ end>
+ JoinDataTables = <>
+ UnionDataTables = <>
+ Commands = <
+ item
+ Params = <
+ item
+ Name = 'OLD_ID'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'FACTURAS_PROFORMA'
+ SQL = 'DELETE '#10' FROM'#10' FACTURAS_PROFORMA'#10' WHERE'#10' (ID = :OLD_ID)'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Delete_FacturasProforma'
+ end
+ item
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURA_CLIENTE_DET_ID'
+ Value = ''
+ end
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_ARTICULO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ Default = True
+ TargetTable = 'FACTURAS_PROFORMA_DETALLES'
+ SQL =
+ 'INSERT'#10' INTO FACTURAS_PROFORMA_DETALLES'#10' (ID, CANTIDAD, UNID' +
+ 'AD_MEDIDA, POSICION, ID_FACTURA, TIPO_DETALLE, CONCEPTO,'#10' IM' +
+ 'PORTE_UNIDAD, IMPORTE_TOTAL, VISIBLE,'#10' ID_ARTICULO, DESCUENT' +
+ 'O, IMPORTE_PORTE)'#10' VALUES'#10' (:ID, :CANTIDAD, :UNIDAD_MEDIDA, ' +
+ ':POSICION, :ID_FACTURA, :TIPO_DETALLE, :CONCEPTO,'#10' :IMPORTE_' +
+ 'UNIDAD, :IMPORTE_TOTAL, :VISIBLE,'#10' :ID_ARTICULO, :DESCUENTO,' +
+ ' :IMPORTE_PORTE)'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Insert_FacturasProforma_Detalles'
+ end
+ item
+ Params = <
+ item
+ Name = 'OLD_ID'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'FACTURAS_PROFORMA_DETALLES'
+ SQL =
+ 'DELETE '#10' FROM'#10' FACTURAS_PROFORMA_DETALLES'#10' WHERE'#10' (ID = ' +
+ ':OLD_ID)'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Delete_FacturasProforma_Detalles'
+ end
+ item
+ Params = <
+ item
+ Name = 'CANTIDAD'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POSICION'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ID_FACTURA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ Value = ''
+ end
+ item
+ Name = 'CONCEPTO'
+ DataType = datString
+ Size = 2000
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_UNIDAD'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'VISIBLE'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_ARTICULO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'OLD_ID'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'FACTURAS_PROFORMA_DETALLES'
+ SQL =
+ 'UPDATE FACTURAS_PROFORMA_DETALLES'#10' SET '#10' CANTIDAD = :CANTIDA' +
+ 'D, '#10' UNIDAD_MEDIDA = :UNIDAD_MEDIDA,'#10' POSICION = :POSICION' +
+ ', '#10' ID_FACTURA = :ID_FACTURA, '#10' TIPO_DETALLE = :TIPO_DETAL' +
+ 'LE, '#10' CONCEPTO = :CONCEPTO, '#10' IMPORTE_UNIDAD = :IMPORTE_UN' +
+ 'IDAD, '#10' IMPORTE_TOTAL = :IMPORTE_TOTAL,'#10' VISIBLE = :VISIBL' +
+ 'E,'#10' ID_ARTICULO = :ID_ARTICULO,'#10' DESCUENTO = :DESCUENTO,'#10' ' +
+ ' IMPORTE_PORTE = :IMPORTE_PORTE'#10' WHERE'#10' (ID = :OLD_ID)'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Update_FacturasProforma_Detalles'
+ end
+ item
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_ID'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'DESCRIPCION_DESCUENTO'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ Value = ''
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ Value = ''
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'ID_DIRECCION'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ Value = ''
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ Value = ''
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_NETO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'ID_PEDIDO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ID_FACTURA_FINAL'
+ DataType = datInteger
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ Default = True
+ TargetTable = 'FACTURAS_PROFORMA'
+ SQL =
+ 'INSERT INTO FACTURAS_PROFORMA ('#10' ID,'#10' ID_EMPRESA,'#10' REFE' +
+ 'RENCIA,'#10' FECHA_FACTURA,'#10' FECHA_VENCIMIENTO,'#10' SITUACION,' +
+ #10' BASE_IMPONIBLE,'#10' DESCUENTO,'#10' IMPORTE_DESCUENTO,'#10' D' +
+ 'ESCRIPCION_DESCUENTO,'#10' IVA,'#10' IMPORTE_IVA,'#10' RE,'#10' IMPO' +
+ 'RTE_RE,'#10' IMPORTE_TOTAL,'#10' OBSERVACIONES,'#10' ID_CLIENTE,'#10' ' +
+ ' NIF_CIF,'#10' NOMBRE,'#10' ID_DIRECCION,'#10' CALLE,'#10' POBLACIO' +
+ 'N,'#10' PROVINCIA,'#10' CODIGO_POSTAL,'#10' FECHA_ALTA,'#10' FECHA_M' +
+ 'ODIFICACION,'#10' USUARIO,'#10' ID_FORMA_PAGO,'#10' RECARGO_EQUIVAL' +
+ 'ENCIA,'#10' ID_TIPO_IVA,'#10' IMPORTE_NETO,'#10' IMPORTE_PORTE,'#10' ' +
+ ' DATOS_BANCARIOS,'#10' REFERENCIA_CLIENTE,'#10' ID_PEDIDO,'#10' ID_' +
+ 'FACTURA_FINAL'#10' )'#10' VALUES ('#10' :ID,'#10' :ID_EMPRESA,'#10' :RE' +
+ 'FERENCIA,'#10' :FECHA_FACTURA,'#10' :FECHA_VENCIMIENTO,'#10' :SITUA' +
+ 'CION,'#10' :BASE_IMPONIBLE,'#10' :DESCUENTO,'#10' :IMPORTE_DESCUENT' +
+ 'O,'#10' :DESCRIPCION_DESCUENTO,'#10' :IVA,'#10' :IMPORTE_IVA,'#10' :' +
+ 'RE,'#10' :IMPORTE_RE,'#10' :IMPORTE_TOTAL,'#10' :OBSERVACIONES,'#10' ' +
+ ' :ID_CLIENTE,'#10' :NIF_CIF,'#10' :NOMBRE,'#10' :ID_DIRECCION,'#10' ' +
+ ':CALLE,'#10' :POBLACION,'#10' :PROVINCIA,'#10' :CODIGO_POSTAL,'#10' ' +
+ ':FECHA_ALTA,'#10' :FECHA_MODIFICACION,'#10' :USUARIO,'#10' :ID_FORM' +
+ 'A_PAGO,'#10' :RECARGO_EQUIVALENCIA,'#10' :ID_TIPO_IVA,'#10' :IMPORT' +
+ 'E_NETO,'#10' :IMPORTE_PORTE,'#10' :DATOS_BANCARIOS,'#10' :REFERENCI' +
+ 'A_CLIENTE,'#10' :ID_PEDIDO,'#10' :ID_FACTURA_FINAL);'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Insert_FacturasProforma'
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'FECHA_FACTURA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'SITUACION'
+ Value = ''
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'DESCRIPCION_DESCUENTO'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IVA'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'RE'
+ DataType = datFloat
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_RE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'OBSERVACIONES'
+ DataType = datMemo
+ Value = ''
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ Value = ''
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'ID_DIRECCION'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'CALLE'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'POBLACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'PROVINCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ Value = ''
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 30
+ Value = ''
+ end
+ item
+ Name = 'ID_FORMA_PAGO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ Value = ''
+ end
+ item
+ Name = 'ID_TIPO_IVA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_NETO'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'IMPORTE_PORTE'
+ DataType = datCurrency
+ Value = ''
+ end
+ item
+ Name = 'DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ Value = ''
+ end
+ item
+ Name = 'ID_PEDIDO'
+ Value = ''
+ end
+ item
+ Name = 'ID_FACTURA_FINAL'
+ Value = ''
+ end
+ item
+ Name = 'OLD_ID'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'FACTURAS_PROFORMA'
+ SQL =
+ 'UPDATE FACTURAS_PROFORMA'#10' SET'#10' ID_EMPRESA = :ID_EMPRESA,'#10' ' +
+ ' REFERENCIA = :REFERENCIA,'#10' FECHA_FACTURA = :FECHA_FACTURA,'#10' ' +
+ ' FECHA_VENCIMIENTO = :FECHA_VENCIMIENTO,'#10' SITUACION = :SITU' +
+ 'ACION,'#10' BASE_IMPONIBLE = :BASE_IMPONIBLE,'#10' DESCUENTO = :DE' +
+ 'SCUENTO,'#10' DESCRIPCION_DESCUENTO = :DESCRIPCION_DESCUENTO,'#10' ' +
+ ' IMPORTE_DESCUENTO = :IMPORTE_DESCUENTO,'#10' IVA = :IVA,'#10' IMP' +
+ 'ORTE_IVA = :IMPORTE_IVA,'#10' RE = :RE,'#10' IMPORTE_RE = :IMPORTE' +
+ '_RE,'#10' IMPORTE_TOTAL = :IMPORTE_TOTAL,'#10' OBSERVACIONES = :OB' +
+ 'SERVACIONES,'#10' ID_CLIENTE = :ID_CLIENTE,'#10' NIF_CIF = :NIF_CI' +
+ 'F,'#10' NOMBRE = :NOMBRE,'#10' ID_DIRECCION = :ID_DIRECCION,'#10' C' +
+ 'ALLE = :CALLE,'#10' POBLACION = :POBLACION,'#10' PROVINCIA = :PROV' +
+ 'INCIA,'#10' CODIGO_POSTAL = :CODIGO_POSTAL,'#10' FECHA_ALTA = :FEC' +
+ 'HA_ALTA,'#10' FECHA_MODIFICACION = :FECHA_MODIFICACION,'#10' USUAR' +
+ 'IO = :USUARIO,'#10' ID_FORMA_PAGO = :ID_FORMA_PAGO,'#10' RECARGO_E' +
+ 'QUIVALENCIA = :RECARGO_EQUIVALENCIA,'#10' ID_TIPO_IVA = :ID_TIPO_' +
+ 'IVA,'#10' IMPORTE_NETO = :IMPORTE_NETO,'#10' IMPORTE_PORTE = :IMPO' +
+ 'RTE_PORTE,'#10' DATOS_BANCARIOS = :DATOS_BANCARIOS,'#10' REFERENCI' +
+ 'A_CLIENTE = :REFERENCIA_CLIENTE,'#10' ID_PEDIDO = :ID_PEDIDO,'#10' ' +
+ ' ID_FACTURA_FINAL = :ID_FACTURA_FINAL'#10' WHERE'#10' (ID = :OLD_ID);'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Update_FacturasProforma'
+ end>
+ RelationShips = <
+ item
+ Name = 'FK_FacturasProforma_Detalles'
+ MasterDatasetName = 'FacturasProforma'
+ MasterFields = 'ID'
+ DetailDatasetName = 'FacturasProforma_Detalles'
+ DetailFields = 'ID_FACTURA'
+ RelationshipType = rtForeignKey
+ end>
+ UpdateRules = <
+ item
+ Name = 'Insert FacturasProforma'
+ DoUpdate = False
+ DoDelete = False
+ DatasetName = 'FacturasProforma'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Insert FacturasProforma_Detalles'
+ DoUpdate = False
+ DoDelete = False
+ DatasetName = 'FacturasProforma_Detalles'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Update FacturasProforma'
+ DoInsert = False
+ DoDelete = False
+ DatasetName = 'FacturasProforma'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Update FacturasProforma_Detalles'
+ DoInsert = False
+ DoDelete = False
+ DatasetName = 'FacturasProforma_Detalles'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Delete FacturasProforma_Detalles'
+ DoUpdate = False
+ DoInsert = False
+ DatasetName = 'FacturasProforma_Detalles'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Delete FacturasProforma'
+ DoUpdate = False
+ DoInsert = False
+ DatasetName = 'FacturasProforma'
+ FailureBehavior = fbRaiseException
+ end>
+ Version = 0
+ Left = 48
+ Top = 24
+ end
+ object Diagrams: TDADiagrams
+ Left = 150
+ Top = 74
+ DiagramData = ''#13#10''#13#10
+ end
+ object DataDictionary: TDADataDictionary
+ Fields = <
+ item
+ Name = 'FacturasCliente_CLIENTE_FINAL'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Cliente final'
+ end
+ item
+ Name = 'FacturasCliente_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_CLIENTE_ID'
+ Required = True
+ DisplayLabel = 'ID'
+ ServerAutoRefresh = True
+ end
+ item
+ Name = 'FacturasCliente_ID_EMPRESA'
+ DataType = datInteger
+ DisplayLabel = 'ID_EMPRESA'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_FACTURA'
+ DataType = datDateTime
+ DisplayLabel = 'Fecha de las factura'
+ end
+ item
+ Name = 'FacturasCliente_VENCIMIENTO'
+ DataType = datInteger
+ DisplayLabel = 'Vencimiento'
+ end
+ item
+ Name = 'FacturasCliente_SITUACION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Situaci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_BASE_IMPONIBLE'
+ DataType = datCurrency
+ DisplayLabel = 'Base imponible'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ DisplayLabel = 'Importe dto.'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_IVA'
+ DataType = datCurrency
+ DisplayLabel = 'Importe IVA'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_TOTAL'
+ DataType = datCurrency
+ DisplayLabel = 'Importe total'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_FORMA_PAGO'
+ DataType = datMemo
+ DisplayLabel = 'Forma de pago'
+ end
+ item
+ Name = 'FacturasCliente_ID_CLIENTE'
+ DataType = datInteger
+ DisplayLabel = 'ID_CLIENTE'
+ end
+ item
+ Name = 'FacturasCliente_NIF_CIF'
+ DataType = datString
+ Size = 15
+ DisplayLabel = 'NIF/CIF'
+ end
+ item
+ Name = 'FacturasCliente_CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ DisplayLabel = 'C'#243'd. postal'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_ALTA'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_ALTA'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_MODIFICACION'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_MODIFICACION'
+ end
+ item
+ Name = 'FacturasCliente_OBSERVACIONES'
+ DataType = datMemo
+ DisplayLabel = 'Observaciones'
+ end
+ item
+ Name = 'FacturasCliente_NOMBRE'
+ DataType = datString
+ Size = 100
+ DisplayLabel = 'Cliente'
+ end
+ item
+ Name = 'FacturasCliente_CALLE'
+ DataType = datString
+ Size = 150
+ DisplayLabel = 'Direcci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_PROVINCIA'
+ DataType = datString
+ Size = 30
+ DisplayLabel = 'Provincia'
+ end
+ item
+ Name = 'FacturasCliente_POBLACION'
+ DataType = datString
+ Size = 150
+ DisplayLabel = 'Poblaci'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_IVA'
+ DataType = datFloat
+ DisplayLabel = 'IVA'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_USUARIO'
+ DataType = datString
+ Size = 100
+ DisplayLabel = 'USUARIO'
+ end
+ item
+ Name = 'FacturasCliente_DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'Dto.'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_Detalles_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURA_CLIENTE_DETALLES_ID'
+ Required = True
+ DisplayLabel = 'ID'
+ ServerAutoRefresh = True
+ end
+ item
+ Name = 'FacturasCliente_Detalles_ID_FACTURA'
+ DataType = datInteger
+ DisplayLabel = 'ID_FACTURA'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ DisplayLabel = 'Tipo detalle'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_CONCEPTO'
+ DataType = datString
+ Size = 2000
+ DisplayLabel = 'Concepto'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_IMPORTE_UNIDAD'
+ DataType = datCurrency
+ DisplayLabel = 'Importe unidad'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_Detalles_IMPORTE_TOTAL'
+ DataType = datCurrency
+ DisplayLabel = 'Importe total'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_Detalles_VISIBLE'
+ DataType = datInteger
+ DisplayLabel = #191'Visible?'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_POSICION'
+ DataType = datInteger
+ DisplayLabel = 'Posici'#243'n'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_CANTIDAD'
+ DataType = datFloat
+ DisplayLabel = 'Cantidad'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_PAGADO'
+ DataType = datDateTime
+ DisplayLabel = 'Fecha de pago'
+ end
+ item
+ Name = 'FacturasCliente_FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ DisplayLabel = 'Fecha de vencimiento'
+ ServerAutoRefresh = True
+ end
+ item
+ Name = 'FacturasCliente_RE'
+ DataType = datFloat
+ DisplayLabel = 'RE'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_RE'
+ DataType = datCurrency
+ DisplayLabel = 'Importe RE'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_REFERENCIA'
+ DataType = datString
+ Size = 20
+ DisplayLabel = 'Referencia'
+ ServerAutoRefresh = True
+ end
+ item
+ Name = 'FacturasCliente_ID_FORMA_PAGO'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_NETO'
+ DataType = datCurrency
+ DisplayLabel = 'Importe neto'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_IMPORTE_PORTE'
+ DataType = datCurrency
+ DisplayLabel = 'Importe del porte'
+ Alignment = taRightJustify
+ end
+ item
+ Name = 'FacturasCliente_RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ DisplayLabel = #191'Con R.E.?'
+ end
+ item
+ Name = 'FacturasCliente_TIPO'
+ DataType = datString
+ Size = 1
+ DisplayLabel = 'Tipo'
+ end
+ item
+ Name = 'FacturasCliente_ID_TIPO_IVA'
+ DataType = datInteger
+ DisplayLabel = 'ID_TIPO_IVA'
+ end
+ item
+ Name = 'FacturasCliente_ID_COMISION_LIQUIDADA'
+ DataType = datInteger
+ DisplayLabel = 'ID_COMISION_LIQUIDADA'
+ end
+ item
+ Name = 'FacturasCliente_REFERENCIA_COMISION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'REFERENCIA_COMISION'
+ end
+ item
+ Name = 'FacturasCliente_ID_AGENTE'
+ DataType = datInteger
+ DisplayLabel = 'ID_AGENTE'
+ end
+ item
+ Name = 'FacturasCliente_Detalles_ID_ARTICULO'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasCliente_Detalles_DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'FacturasCliente_Detalles_IMPORTE_PORTE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasCliente_Detalles_REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasCliente_Detalles_REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasCliente_DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Datos bancarios'
+ end
+ item
+ Name = 'FacturasProforma_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_ID'
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'FacturasProforma_ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_FECHA_FACTURA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FacturasProforma_FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FacturasProforma_SITUACION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_DESCRIPCION_DESCUENTO'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_IVA'
+ DataType = datFloat
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_RE'
+ DataType = datFloat
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_RE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_OBSERVACIONES'
+ DataType = datMemo
+ end
+ item
+ Name = 'FacturasProforma_ID_CLIENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_NIF_CIF'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'FacturasProforma_NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_ID_DIRECCION'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_CALLE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_POBLACION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_PROVINCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_CODIGO_POSTAL'
+ DataType = datString
+ Size = 10
+ end
+ item
+ Name = 'FacturasProforma_FECHA_ALTA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FacturasProforma_FECHA_MODIFICACION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FacturasProforma_USUARIO'
+ DataType = datString
+ Size = 30
+ end
+ item
+ Name = 'FacturasProforma_ID_FORMA_PAGO'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_RECARGO_EQUIVALENCIA'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'FacturasProforma_ID_TIPO_IVA'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_NETO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_IMPORTE_PORTE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_NUM_COPIAS'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'FacturasProforma_NUM_CORREOS'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'FacturasProforma_DATOS_BANCARIOS'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_ID_PEDIDO'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_ID_FACTURA_FINAL'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_Detalles_UNIDAD_MEDIDA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_Detalles_REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FacturasProforma_Detalles_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_FACTURAS_PROFORMA_DETALLES_ID'
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'FacturasProforma_Detalles_ID_FACTURA'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_Detalles_POSICION'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_Detalles_TIPO_DETALLE'
+ DataType = datString
+ Size = 25
+ end
+ item
+ Name = 'FacturasProforma_Detalles_CONCEPTO'
+ DataType = datString
+ Size = 2000
+ end
+ item
+ Name = 'FacturasProforma_Detalles_CANTIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_Detalles_IMPORTE_UNIDAD'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_Detalles_IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_Detalles_VISIBLE'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'FacturasProforma_Detalles_ID_ARTICULO'
+ DataType = datInteger
+ end
+ item
+ Name = 'FacturasProforma_Detalles_DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'FacturasProforma_Detalles_IMPORTE_PORTE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'FacturasProforma_Detalles_REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end>
+ Left = 150
+ Top = 22
+ end
+ object Bin2DataStreamer: TDABin2DataStreamer
+ Left = 48
+ Top = 80
+ end
+ object bpFacturasProforma: TDABusinessProcessor
+ Schema = schFacturasProforma
+ InsertCommandName = 'Insert_FacturasProforma'
+ DeleteCommandName = 'Delete_FacturasProforma'
+ UpdateCommandName = 'Update_FacturasProforma'
+ ReferencedDataset = 'FacturasProforma'
+ ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands]
+ UpdateMode = updWhereKeyOnly
+ Left = 248
+ Top = 24
+ end
+ object bpFacturasProformaDetalles: TDABusinessProcessor
+ Schema = schFacturasProforma
+ InsertCommandName = 'Insert_FacturasProforma_Detalles'
+ DeleteCommandName = 'Delete_FacturasProforma_Detalles'
+ UpdateCommandName = 'Update_FacturasProforma_Detalles'
+ ReferencedDataset = 'FacturasProforma_Detalles'
+ ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands]
+ UpdateMode = updWhereKeyOnly
+ Left = 248
+ Top = 77
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.pas b/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.pas
new file mode 100644
index 0000000..06097c7
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Servidor/srvFacturasProforma_Impl.pas
@@ -0,0 +1,122 @@
+unit srvFacturasProforma_Impl;
+
+{----------------------------------------------------------------------------}
+{ This unit was automatically generated by the RemObjects SDK after reading }
+{ the RODL file associated with this project . }
+{ }
+{ This is where you are supposed to code the implementation of your objects. }
+{----------------------------------------------------------------------------}
+
+interface
+
+uses
+ {vcl:} Classes, SysUtils,
+ {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
+ {Ancestor Implementation:} DataAbstractService_Impl,
+ {Used RODLs:} DataAbstract4_Intf,
+ {Generated:} uDABusinessProcessor, uDABin2DataStreamer, uDADataStreamer,
+ uDAScriptingProvider, uDAClasses,
+ FactuGES_Intf, uDAInterfaces;
+
+type
+ { TsrvFacturasCliente }
+ TsrvFacturasProforma = class(TDataAbstractService, IsrvFacturasProforma)
+ Diagrams: TDADiagrams;
+ Bin2DataStreamer: TDABin2DataStreamer;
+ bpFacturasProforma: TDABusinessProcessor;
+ bpFacturasProformaDetalles: TDABusinessProcessor;
+ schFacturasProforma: TDASchema;
+ DataDictionary: TDADataDictionary;
+ procedure DARemoteServiceCreate(Sender: TObject);
+ procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string);
+
+ protected
+ { IsrvFacturasCliente methods }
+ function GenerarInforme(const ListaID: TIntegerArray): Binary;
+ function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
+
+ public
+ function DarListaAnos: StringArray;
+
+ end;
+
+implementation
+
+{$R *.dfm}
+uses
+ {Generated:} FactuGES_Invk, Dialogs, uSistemaFunc, uROClasses,
+ uDataModuleServer, uDatabaseUtils, uUsersManager, schFacturasProformaClient_Intf,
+ uRestriccionesUsuarioUtils,
+ uBizFacturasProformaServer; //, uRptFacturasProforma_Server;
+
+procedure Create_srvFacturasProforma(out anInstance : IUnknown);
+begin
+ anInstance := TsrvFacturasProforma.Create(NIL);
+end;
+
+{ srvFacturasCliente }
+
+procedure TsrvFacturasProforma.DARemoteServiceCreate(Sender: TObject);
+begin
+ //SessionManager := dmServer.SessionManager;
+ bpFacturasProforma.BusinessRulesID := BIZ_SERVER_FACTURAS_PROFORMA;
+end;
+
+function TsrvFacturasProforma.DarListaAnos: StringArray;
+var
+ dsAnos : IDADataset;
+begin
+ Result := StringArray.Create();
+ try
+ dsAnos := schFacturasProforma.NewDataset(Connection, 'ListaAnosFacturas', '', True);
+ while not dsAnos.EOF do
+ begin
+ Result.Add(dsAnos.Fields[0].AsString);
+ dsAnos.Next;
+ end;
+ finally
+ dsAnos.Close;
+ dsAnos := NIL;
+ end;
+end;
+
+procedure TsrvFacturasProforma.DataAbstractServiceBeforeAcquireConnection(
+ aSender: TObject; var aConnectionName: string);
+begin
+ ConnectionName := dmServer.ConnectionName;
+end;
+
+function TsrvFacturasProforma.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
+//var
+// AReportGenerator : TRptFacturasProforma;
+begin
+{
+ AReportGenerator := TRptFacturasProforma.Create(nil);
+ try
+ Result := AReportGenerator.GenerarFacturaEnPDF(ListaID);
+ finally
+ FreeAndNIL(AReportGenerator);
+ end;
+}
+end;
+
+function TsrvFacturasProforma.GenerarInforme(const ListaID: TIntegerArray): Binary;
+//var
+// AReportGenerator : TRptFacturasProforma;
+begin
+{
+ AReportGenerator := TRptFacturasProforma.Create(nil);
+ try
+ Result := AReportGenerator.GenerarFactura(ListaID);
+ finally
+ FreeAndNIL(AReportGenerator);
+ end;
+ }
+end;
+
+initialization
+ TROClassFactory.Create('srvFacturasProforma', Create_srvFacturasProforma, TsrvFacturasProforma_Invoker);
+
+finalization
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dpk b/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dpk
new file mode 100644
index 0000000..57168f2
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dpk
@@ -0,0 +1,58 @@
+package FacturasProforma_view;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$IMPLICITBUILD OFF}
+
+requires
+ Base,
+ GUIBase,
+ ApplicationBase,
+ Contactos_view,
+ Articulos_view,
+ rtl,
+ vcl,
+ cxLibraryD11,
+ dxThemeD11,
+ dxGDIPlusD11,
+ dxCoreD11,
+ vclx,
+ FacturasProforma_model,
+ FacturasProforma_controller;
+
+contains
+ uFacturasProformaViewRegister in 'uFacturasProformaViewRegister.pas',
+ uViewFacturasProforma in 'uViewFacturasProforma.pas' {frViewFacturasProforma: TFrame},
+ uEditorFacturasProforma in 'uEditorFacturasProforma.pas' {fEditorFacturasProforma: TfEditorFacturasCliente},
+ uViewFacturaProforma in 'uViewFacturaProforma.pas' {frViewFacturaProforma: TFrame},
+ uEditorFacturaProforma in 'uEditorFacturaProforma.pas' {fEditorFacturaProforma: TfEditorFacturaCliente},
+ uViewDetallesFacturaProforma in 'uViewDetallesFacturaProforma.pas' {frViewDetallesFacturaProforma: TFrame},
+ uEditorFacturasProformaReport in 'uEditorFacturasProformaReport.pas' {fEditorFacturasProformaPreview},
+ uEditorElegirArticulosFacturaProforma in 'uEditorElegirArticulosFacturaProforma.pas' {fEditorElegirArticulosFacturaProforma: TForm},
+ uViewElegirArticulosFacturasProforma in 'uViewElegirArticulosFacturasProforma.pas' {frViewElegirArticulosFacturasProforma: TFrame},
+ uEditorElegirFacturasCliente in 'uEditorElegirFacturasCliente.pas' {fEditorElegirFacturasCliente: TfEditorElegirFacturasCliente},
+ uViewDatosYSeleccionClienteFacturaProforma in 'uViewDatosYSeleccionClienteFacturaProforma.pas' {frViewDatosYSeleccionClienteFacturaProforma: TFrame},
+ uDialogOpcionesImpresionFacturasProforma in 'uDialogOpcionesImpresionFacturasProforma.pas' {fDialogOpcionesImpresionFacturasProforma: TfEditorElegirFacturasCliente},
+ uDialogListaFacturasProformaEnvioEMail in 'uDialogListaFacturasProformaEnvioEMail.pas' {fDialogListaFacturasProformaEnvioEMail: TForm};
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dproj b/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dproj
new file mode 100644
index 0000000..9b41439
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/FacturasProforma_view.dproj
@@ -0,0 +1,598 @@
+
+
+
+ {9e558626-cf49-4cff-a178-e12c186758ac}
+ FacturasProforma_view.dpk
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\..\..\Output\Debug\Cliente\FacturasProforma_view.bpl
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ RELEASE
+
+
+ 7.0
+ 3
+ .\
+ .\
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+
+
+ Delphi.Personality
+ Package
+
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0FacturasProforma_view.dpk
+
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TForm
+
+
+
+ TfEditorElegirFacturasCliente
+
+
+
+ TForm
+
+
+
+ TfEditorElegirFacturasCliente
+
+
+
+ TfEditorFacturaCliente
+
+
+
+ TfEditorFacturasCliente
+
+
+
+
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.dfm b/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.dfm
new file mode 100644
index 0000000..e7ee6ed
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.dfm
@@ -0,0 +1,97 @@
+inherited fDialogListaFacturasProformaEnvioEMail: TfDialogListaFacturasProformaEnvioEMail
+ Caption = 'Enviar facturas por correo electr'#243'nico'
+ ClientHeight = 490
+ ClientWidth = 665
+ ExplicitWidth = 671
+ ExplicitHeight = 522
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited Bevel2: TBevel
+ Width = 665
+ ExplicitWidth = 627
+ end
+ inherited Bevel3: TBevel
+ Top = 446
+ Width = 665
+ ExplicitTop = 466
+ ExplicitWidth = 627
+ end
+ inherited pnlBotones: TPanel
+ Top = 448
+ Width = 665
+ ExplicitTop = 448
+ ExplicitWidth = 665
+ inherited btnAceptar: TButton
+ Left = 482
+ Width = 100
+ ExplicitLeft = 482
+ ExplicitWidth = 100
+ end
+ inherited btnCancelar: TButton
+ Left = 586
+ ExplicitLeft = 586
+ end
+ end
+ inherited pnlHeader: TPanel
+ Width = 665
+ ExplicitWidth = 665
+ inherited lblInstruccion: TLabel
+ Width = 615
+ Caption = 'Enviar facturas por correo electr'#243'nico'
+ ExplicitWidth = 213
+ end
+ inherited Label2: TLabel
+ Width = 590
+ Height = 27
+ Caption =
+ 'Se generar'#225'n correos electr'#243'nicos autom'#225'ticos adjuntando las fac' +
+ 'turas elegidas en formato PDF. S'#243'lo se tendr'#225'n en cuenta los cli' +
+ 'entes que tengan relleno su e-mail administrativo.'
+ WordWrap = True
+ ExplicitWidth = 562
+ ExplicitHeight = 26
+ end
+ end
+ inherited pnlCuerpo: TPanel
+ Width = 665
+ Height = 380
+ ExplicitWidth = 665
+ ExplicitHeight = 380
+ end
+ inherited ListView1: TListView
+ Width = 665
+ Height = 380
+ Columns = <
+ item
+ Caption = 'Documento'
+ Width = 120
+ end
+ item
+ Caption = 'Destinatario'
+ Width = 250
+ end
+ item
+ Caption = 'Direcci'#243'n E-Mail'
+ Width = 170
+ end
+ item
+ Caption = 'Estado'
+ Width = 120
+ end>
+ ExplicitLeft = 0
+ ExplicitTop = 66
+ ExplicitWidth = 665
+ ExplicitHeight = 380
+ end
+ inherited ActionList1: TActionList
+ Top = 352
+ inherited actAceptar: TAction
+ Caption = '&Generar correos'
+ OnExecute = actAceptarExecute
+ OnUpdate = actAceptarUpdate
+ end
+ inherited actCancelar: TAction
+ OnExecute = actCancelarExecute
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.pas b/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.pas
new file mode 100644
index 0000000..49be415
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uDialogListaFacturasProformaEnvioEMail.pas
@@ -0,0 +1,158 @@
+unit uDialogListaFacturasProformaEnvioEMail;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, ComCtrls,
+ uDialogListaEnvioEMail, uIDialogListaFacturasEnvioEMail, uFacturasClienteController,
+ uBizFacturasCliente;
+
+type
+ TfDialogListaFacturasProformaEnvioEMail = class(TfDialogListaEnvioEMail, IDialogListaFacturasEnvioEMail)
+ procedure actCancelarExecute(Sender: TObject);
+ procedure actAceptarUpdate(Sender: TObject);
+ procedure actAceptarExecute(Sender: TObject);
+ private
+ FFacturas : IBizFacturaCliente;
+ FController : IFacturasClienteController;
+ protected
+ function GetFacturas: IBizFacturaCliente;
+ procedure SetFacturas(const Value: IBizFacturaCliente);
+
+ procedure RellenarLista;
+ procedure BorrarLista;
+ public
+ constructor Create(AOwner: TComponent); override;
+ property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
+ end;
+
+implementation
+
+uses
+ schFacturasClienteClient_Intf, uStringsUtils, cxControls;
+
+{$R *.dfm}
+
+
+{ TfDialogListaFacturasEnvioEMail }
+
+procedure TfDialogListaFacturasProformaEnvioEMail.actAceptarExecute(Sender: TObject);
+var
+ i : Integer;
+begin
+ ShowHourglassCursor;
+ Application.ProcessMessages;
+ try
+ FFacturas.First;
+ FController.RecuperarCliente(FFacturas);
+ FFacturas.Cliente.DataTable.Active := True;
+ try
+ for i := 0 to FFacturas.DataTable.RecordCount - 1 do
+ begin
+ if not EsCadenaVacia(FFacturas.Cliente.EMAIL_ADMINISTRACION) then
+ begin
+ if FController.EnviarFacturaPorEMail(FFacturas, True, FFacturas.Cliente.EMAIL_ADMINISTRACION) then
+ begin
+ ListView1.Items[i].SubItems[2] := 'Correo generado';
+ ModalResult := mrOk;
+ end
+ else
+ ListView1.Items[i].SubItems[2] := 'Error al generar correo';
+ Self.Update;
+ Application.ProcessMessages;
+ end;
+
+ FFacturas.Next;
+ FController.RecuperarCliente(FFacturas);
+ FFacturas.Cliente.DataTable.Active := True;
+ end;
+ btnAceptar.Enabled := False;
+ finally
+ ListView1.Items.EndUpdate;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+
+ btnCancelar.SetFocus;
+end;
+
+procedure TfDialogListaFacturasProformaEnvioEMail.actAceptarUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := (ListView1.Items.Count > 0)
+end;
+
+procedure TfDialogListaFacturasProformaEnvioEMail.actCancelarExecute(Sender: TObject);
+begin
+ inherited;
+ ModalResult := mrOk;
+end;
+
+procedure TfDialogListaFacturasProformaEnvioEMail.BorrarLista;
+begin
+ ListView1.Items.Clear;
+end;
+
+constructor TfDialogListaFacturasProformaEnvioEMail.Create(AOwner: TComponent);
+begin
+ inherited;
+ ModalResult := mrCancel;
+ FController := TFacturasClienteController.Create;
+end;
+
+function TfDialogListaFacturasProformaEnvioEMail.GetFacturas: IBizFacturaCliente;
+begin
+ Result := FFacturas;
+end;
+
+procedure TfDialogListaFacturasProformaEnvioEMail.RellenarLista;
+var
+ i : Integer;
+begin
+ ListView1.Items.BeginUpdate;
+ ListView1.Items.Clear;
+
+ FFacturas.First;
+ FFacturas.DataTable.DisableControls;
+ try
+ for i := 0 to FFacturas.DataTable.RecordCount - 1 do
+ begin
+ FController.RecuperarCliente(FFacturas);
+ FFacturas.Cliente.DataTable.Active := True;
+
+ with ListView1.Items.Add do
+ begin
+ Caption := FFacturas.REFERENCIA;
+ SubItems.Add(FFacturas.NOMBRE);
+ SubItems.Add(FFacturas.Cliente.EMAIL_ADMINISTRACION);
+
+ if EsCadenaVacia(FFacturas.Cliente.EMAIL_ADMINISTRACION) then
+ SubItems.Add('Sin dirección e-mail administrativa')
+ else
+ SubItems.Add('')
+ end;
+ FFacturas.Next;
+ end;
+ finally
+ FFacturas.DataTable.EnableControls;
+ ListView1.Items.EndUpdate;
+ end;
+end;
+
+procedure TfDialogListaFacturasProformaEnvioEMail.SetFacturas(
+ const Value: IBizFacturaCliente);
+begin
+ FFacturas := Value;
+
+ if Assigned(FFacturas) then
+ begin
+ FFacturas.DataTable.Open;
+ RellenarLista;
+ end
+ else
+ BorrarLista;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.dfm b/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.dfm
new file mode 100644
index 0000000..c48c1e6
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.dfm
@@ -0,0 +1,88 @@
+inherited fDialogOpcionesImpresionFacturasProforma: TfDialogOpcionesImpresionFacturasProforma
+ Caption = 'Opciones para facturas de cliente'
+ ClientHeight = 197
+ ClientWidth = 418
+ ExplicitWidth = 424
+ ExplicitHeight = 229
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited Bevel2: TBevel
+ Width = 418
+ ExplicitWidth = 418
+ end
+ inherited Bevel3: TBevel
+ Top = 153
+ Width = 418
+ ExplicitTop = 196
+ ExplicitWidth = 418
+ end
+ inherited pnlBotones: TPanel
+ Top = 155
+ Width = 418
+ ExplicitTop = 155
+ ExplicitWidth = 418
+ inherited btnAceptar: TButton
+ Left = 254
+ ExplicitLeft = 254
+ end
+ inherited btnCancelar: TButton
+ Left = 333
+ ExplicitLeft = 333
+ end
+ end
+ inherited pnlHeader: TPanel
+ Width = 418
+ ExplicitWidth = 418
+ inherited lblInstruccion: TLabel
+ Width = 368
+ Margins.Bottom = 10
+ Caption = 'Indique las siguiente opciones para la factura de cliente:'
+ ExplicitWidth = 317
+ end
+ inherited Label2: TLabel
+ Top = 31
+ Width = 343
+ Height = 25
+ Visible = False
+ ExplicitTop = 31
+ end
+ end
+ inherited pnlCuerpo: TPanel
+ Width = 418
+ Height = 87
+ ExplicitWidth = 418
+ ExplicitHeight = 87
+ object cbVerCopia: TCheckBox
+ AlignWithMargins = True
+ Left = 50
+ Top = 51
+ Width = 279
+ Height = 17
+ Caption = 'Indicar '#39'COPIA'#39' en la cabecera'
+ Checked = True
+ State = cbChecked
+ TabOrder = 0
+ Visible = False
+ end
+ object cbVerSello: TCheckBox
+ AlignWithMargins = True
+ Left = 50
+ Top = 28
+ Width = 200
+ Height = 17
+ Caption = 'Mostrar logotipo de la empresa'
+ Checked = True
+ State = cbChecked
+ TabOrder = 1
+ end
+ end
+ inherited ActionList1: TActionList
+ Top = 16
+ inherited actAceptar: TAction
+ OnExecute = actAceptarExecute
+ end
+ inherited actCancelar: TAction
+ OnExecute = actCancelarExecute
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.pas b/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.pas
new file mode 100644
index 0000000..6698a15
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uDialogOpcionesImpresionFacturasProforma.pas
@@ -0,0 +1,59 @@
+unit uDialogOpcionesImpresionFacturasProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls;
+
+type
+ TfDialogOpcionesImpresionFacturasProforma = class(TfDialogBase)
+ cbVerSello: TCheckBox;
+ cbVerCopia: TCheckBox;
+ procedure actAceptarExecute(Sender: TObject);
+ procedure actCancelarExecute(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+ function ElegirOpcionesImpresionFacturaCliente(var AVerSello : Boolean; var AVerCopia : Boolean): Boolean;
+
+implementation
+
+{$R *.dfm}
+
+function ElegirOpcionesImpresionFacturaCliente(var AVerSello : Boolean; var AVerCopia : Boolean): Boolean;
+var
+ AEditor : TfDialogOpcionesImpresionFacturasCliente;
+begin
+ AEditor := TfDialogOpcionesImpresionFacturasCliente.Create(NIL);
+ try
+ AEditor.cbVerSello.Checked := AVerSello;
+ AEditor.cbVerCopia.Checked := AVerCopia;
+
+ Result := (AEditor.ShowModal = mrOk);
+ if Result then
+ begin
+ AVerSello := AEditor.cbVerSello.Checked;
+ AVerCopia := AEditor.cbVerCopia.Checked;
+ end;
+ finally
+ AEditor.Release;
+ end;
+end;
+
+procedure TfDialogOpcionesImpresionFacturasProforma.actAceptarExecute(Sender: TObject);
+begin
+ inherited;
+ ModalResult := mrOk
+end;
+
+procedure TfDialogOpcionesImpresionFacturasProforma.actCancelarExecute(Sender: TObject);
+begin
+ inherited;
+ ModalResult := mrCancel;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.dfm b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.dfm
new file mode 100644
index 0000000..06d8499
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.dfm
@@ -0,0 +1,15 @@
+inherited fEditorElegirArticulosFacturaCliente: TfEditorElegirArticulosFacturaCliente
+ Caption = 'fEditorElegirArticulosFacturaCliente'
+ ExplicitHeight = 538
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited pnlHeader: TPanel
+ inherited lblTitle: TLabel
+ Width = 606
+ end
+ inherited lblComments: TLabel
+ Width = 581
+ Height = 24
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.pas b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.pas
new file mode 100644
index 0000000..f99c801
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaCliente.pas
@@ -0,0 +1,35 @@
+unit uEditorElegirArticulosFacturaCliente;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorElegirArticulos, Menus, DB, uDADataTable, JvAppStorage,
+ JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
+ StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls,
+ JvExComCtrls, JvStatusBar, TBX, TB2ExtItems, TBXExtItems, TB2Item, TB2Dock,
+ TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane,
+ uIEditorElegirArticulosFacturasCliente, uDAInterfaces,
+ uViewGridBase, uViewGrid, uViewArticulos, StdCtrls;
+
+type
+ TfEditorElegirArticulosFacturaCliente = class(TfEditorElegirArticulos, IEditorElegirArticulosFacturasCliente)
+ public
+ constructor Create(AOwner: TComponent); override;
+ end;
+
+
+implementation
+{$R *.dfm}
+
+uses uViewElegirArticulosFacturasCliente;
+
+{ TfEditorElegirArticulosFacturaCliente }
+
+constructor TfEditorElegirArticulosFacturaCliente.Create(AOwner: TComponent);
+begin
+ inherited;
+ ViewGrid := CreateView(TfrViewElegirArticulosFacturasCliente) as IViewElegirArticulosFacturasCliente;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.dfm b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.dfm
new file mode 100644
index 0000000..36e7fc0
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.dfm
@@ -0,0 +1,15 @@
+inherited fEditorElegirArticulosFacturaProforma: TfEditorElegirArticulosFacturaProforma
+ Caption = 'fEditorElegirArticulosFacturaProforma'
+ ExplicitHeight = 538
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited pnlHeader: TPanel
+ inherited lblTitle: TLabel
+ Width = 606
+ end
+ inherited lblComments: TLabel
+ Width = 581
+ Height = 24
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.pas b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.pas
new file mode 100644
index 0000000..7fffb3a
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirArticulosFacturaProforma.pas
@@ -0,0 +1,35 @@
+unit uEditorElegirArticulosFacturaProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorElegirArticulos, Menus, DB, uDADataTable, JvAppStorage,
+ JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
+ StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls,
+ JvExComCtrls, JvStatusBar, TBX, TB2ExtItems, TBXExtItems, TB2Item, TB2Dock,
+ TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane,
+ uIEditorElegirArticulosFacturasCliente, uDAInterfaces,
+ uViewGridBase, uViewGrid, uViewArticulos, StdCtrls;
+
+type
+ TfEditorElegirArticulosFacturaProforma = class(TfEditorElegirArticulos, IEditorElegirArticulosFacturasCliente)
+ public
+ constructor Create(AOwner: TComponent); override;
+ end;
+
+
+implementation
+{$R *.dfm}
+
+uses uViewElegirArticulosFacturasCliente;
+
+{ TfEditorElegirArticulosFacturaCliente }
+
+constructor TfEditorElegirArticulosFacturaProforma.Create(AOwner: TComponent);
+begin
+ inherited;
+ ViewGrid := CreateView(TfrViewElegirArticulosFacturasCliente) as IViewElegirArticulosFacturasCliente;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.dfm b/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.dfm
new file mode 100644
index 0000000..a6981c8
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.dfm
@@ -0,0 +1,357 @@
+inherited fEditorElegirFacturasCliente: TfEditorElegirFacturasCliente
+ Caption = 'Seleccionar facturas de cliente'
+ ClientWidth = 654
+ ExplicitWidth = 662
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Top = 113
+ Width = 654
+ Caption = 'Lista de facturas de cliente para liquidar su comisi'#243'n'
+ Visible = False
+ ExplicitLeft = -8
+ ExplicitTop = 169
+ ExplicitWidth = 654
+ inherited Image1: TImage
+ Left = 627
+ ExplicitLeft = 629
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Top = 64
+ Width = 654
+ Height = 49
+ ExplicitTop = 64
+ ExplicitWidth = 654
+ ExplicitHeight = 49
+ inherited tbxMain: TTBXToolbar
+ Left = 97
+ ExplicitLeft = 97
+ ExplicitWidth = 371
+ inherited TBXSubmenuItem2: TTBXSubmenuItem
+ Visible = False
+ end
+ inherited TBXItem5: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem6: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem36: TTBXItem
+ Action = actAnchoAuto2
+ end
+ end
+ inherited tbxFiltro: TTBXToolbar
+ Top = 23
+ DockRow = 1
+ ExplicitTop = 23
+ ExplicitWidth = 97
+ inherited sepAno: TTBXSeparatorItem
+ Visible = False
+ end
+ inherited TBXLabelItem1: TTBXLabelItem
+ Visible = False
+ end
+ inherited tbxEditFiltro: TTBXEditItem
+ Visible = False
+ end
+ inherited TBXItem34: TTBXItem
+ Action = actQuitarFiltro2
+ Visible = False
+ end
+ inherited TBXItem37: TTBXItem
+ Visible = False
+ end
+ end
+ inherited tbxMenu: TTBXToolbar
+ ExplicitWidth = 654
+ end
+ inherited TBXTMain2: TTBXToolbar
+ Left = 468
+ Top = 23
+ DockPos = 462
+ DockRow = 1
+ ExplicitLeft = 468
+ ExplicitTop = 23
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Width = 654
+ ExplicitWidth = 654
+ end
+ inline frViewBarraSeleccion1: TfrViewBarraSeleccion [3]
+ Left = 0
+ Top = 611
+ Width = 654
+ Height = 36
+ Align = alBottom
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 4
+ ReadOnly = False
+ ExplicitTop = 611
+ ExplicitWidth = 654
+ ExplicitHeight = 36
+ inherited JvFooter1: TJvFooter
+ Width = 654
+ Height = 36
+ ExplicitWidth = 654
+ ExplicitHeight = 36
+ inherited bSeleccionar: TJvFooterBtn
+ Left = 442
+ Top = 3
+ ExplicitLeft = 444
+ ExplicitTop = 3
+ end
+ inherited bCancelar: TJvFooterBtn
+ Left = 546
+ Top = 4
+ ExplicitLeft = 546
+ ExplicitTop = 4
+ end
+ end
+ inherited BarraSeleccionActionList: TActionList
+ inherited actSeleccionar: TAction
+ OnExecute = frViewBarraSeleccion1actSeleccionarExecute
+ OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate
+ end
+ inherited actCancelar: TAction
+ OnExecute = frViewBarraSeleccion1actCancelarExecute
+ end
+ end
+ end
+ object pnlHeader: TPanel [4]
+ Left = 0
+ Top = 0
+ Width = 654
+ Height = 64
+ Align = alTop
+ BevelOuter = bvNone
+ Color = clWhite
+ Padding.Left = 25
+ Padding.Top = 8
+ Padding.Right = 25
+ Padding.Bottom = 8
+ ParentBackground = False
+ TabOrder = 5
+ object lblTitle: TLabel
+ AlignWithMargins = True
+ Left = 25
+ Top = 8
+ Width = 604
+ Height = 13
+ Margins.Left = 0
+ Margins.Top = 0
+ Margins.Right = 0
+ Margins.Bottom = 8
+ Align = alTop
+ Caption =
+ 'Seleccione las facturas de cliente, que desea liquidar su comisi' +
+ #243'n'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = [fsBold]
+ ParentFont = False
+ ExplicitWidth = 365
+ end
+ object lblComments: TLabel
+ AlignWithMargins = True
+ Left = 50
+ Top = 29
+ Width = 579
+ Height = 24
+ Margins.Left = 25
+ Margins.Top = 0
+ Margins.Right = 0
+ Align = alClient
+ ExplicitWidth = 3
+ ExplicitHeight = 13
+ end
+ end
+ inherited frViewFacturasCliente1: TfrViewFacturasCliente [5]
+ Top = 140
+ Width = 654
+ Height = 471
+ ExplicitTop = 163
+ ExplicitWidth = 654
+ ExplicitHeight = 448
+ inherited cxGrid: TcxGrid
+ Width = 654
+ Height = 343
+ RootLevelOptions.DetailTabsPosition = dtpNone
+ ExplicitWidth = 654
+ ExplicitHeight = 320
+ inherited cxGridView: TcxGridDBTableView
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Format = ',0.00 '#8364';-,0.00 '#8364
+ Kind = skSum
+ Position = spFooter
+ Column = frViewFacturasCliente1.cxGridViewIMPORTE_IVA
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Format = ',0.00 '#8364';-,0.00 '#8364
+ Kind = skSum
+ Column = frViewFacturasCliente1.cxGridViewIMPORTE_IVA
+ end
+ item
+ Format = '0 facturas'
+ Kind = skCount
+ Column = frViewFacturasCliente1.cxGridViewTIPO
+ end>
+ end
+ end
+ inherited frViewFiltroBase1: TfrViewFiltroBase
+ Width = 654
+ Visible = True
+ ExplicitWidth = 654
+ inherited TBXDockablePanel1: TTBXDockablePanel
+ ExplicitWidth = 654
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 654
+ ExplicitWidth = 654
+ inherited txtFiltroTodo: TcxTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 273
+ Width = 273
+ end
+ inherited edtFechaIniFiltro: TcxDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 121
+ Width = 121
+ end
+ inherited edtFechaFinFiltro: TcxDateEdit
+ Left = 208
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 208
+ ExplicitWidth = 416
+ Width = 416
+ end
+ inherited eLista: TcxComboBox
+ Left = 624
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 624
+ ExplicitWidth = 20
+ Width = 20
+ end
+ end
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 654
+ ExplicitWidth = 654
+ inherited tbxBotones: TTBXToolbar
+ Width = 644
+ ExplicitWidth = 644
+ end
+ end
+ end
+ end
+ inherited pnlAgrupaciones: TTBXDockablePanel
+ Top = 445
+ ExplicitTop = 422
+ ExplicitWidth = 654
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 654
+ ExplicitWidth = 654
+ inherited TBXToolbar1: TTBXToolbar
+ Width = 644
+ ExplicitWidth = 644
+ end
+ end
+ end
+ inherited dxComponentPrinter: TdxComponentPrinter
+ inherited dxComponentPrinterLink: TdxGridReportLink
+ BuiltInReportLink = True
+ end
+ end
+ inherited cxViewGridPopupMenu: TcxGridPopupMenu
+ PopupMenus = <
+ item
+ GridView = frViewFacturasCliente1.cxGridView
+ HitTypes = [gvhtCell]
+ Index = 0
+ end>
+ end
+ end
+ inherited EditorActionList: TActionList [8]
+ Left = 112
+ Top = 192
+ inherited actNuevo: TAction
+ Visible = False
+ end
+ inherited actEliminar: TAction
+ Visible = False
+ end
+ inherited actPrevisualizar: TAction
+ Visible = False
+ end
+ inherited actImprimir: TAction
+ Visible = False
+ end
+ inherited actDuplicar: TAction
+ Visible = False
+ end
+ end
+ inherited dsDataTable: TDADataSource
+ Left = 8
+ Top = 192
+ end
+ inherited JvFormStorage: TJvFormStorage [12]
+ end
+ inherited GridPopupMenu: TPopupMenu [13]
+ Left = 80
+ Top = 192
+ end
+ inherited JsNuevaFacturaDialog: TJSDialog [14]
+ end
+ inherited JsListaFacturasGeneradas: TJSDialog [15]
+ end
+ inherited JsPrevisualizarDialog: TJSDialog [16]
+ end
+ inherited JsImprimirDialog: TJSDialog [17]
+ end
+ inherited JsNuevoAbonoDialog: TJSDialog [18]
+ end
+ inherited JsListaFacturasNoEliminadas: TJSDialog [19]
+ end
+ object EditorSeleccionActionList: TActionList
+ Images = SmallImages
+ Left = 152
+ Top = 192
+ object actBuscar2: TAction
+ Category = 'Buscar'
+ Caption = 'Buscar'
+ ImageIndex = 10
+ ShortCut = 114
+ end
+ object actQuitarFiltro2: TAction
+ Category = 'Buscar'
+ Caption = 'Quitar filtro y ver todo'
+ ImageIndex = 19
+ end
+ object actAnchoAuto2: TAction
+ Category = 'Ver'
+ Caption = 'Ancho autom'#225'tico'
+ ImageIndex = 21
+ OnExecute = actAnchoAuto2Execute
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.pas b/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.pas
new file mode 100644
index 0000000..f4e0e56
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorElegirFacturasCliente.pas
@@ -0,0 +1,150 @@
+{
+===============================================================================
+ Copyright (©) 2007. 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:
+ Versión actual: 1.0.0
+ Fecha versión actual:
+===============================================================================
+ Modificaciones:
+
+ Fecha Comentarios
+ ---------------------------------------------------------------------------
+===============================================================================
+}
+
+unit uEditorElegirFacturasCliente;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage,
+ JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns,
+ ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid,
+ JvExComCtrls, JvStatusBar,
+ ComCtrls, TB2ExtItems, TBXExtItems, TBX,
+ TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
+ JvNavigationPane, uViewBarraSeleccion, StdCtrls,
+
+ uViewFacturasCliente, uEditorFacturasCliente, uBizFacturasCliente, uIEditorElegirFacturasCliente,
+ Buttons, cxRadioGroup, cxMaskEdit, cxDropDownEdit, cxCalendar, cxControls,
+ cxContainer, cxEdit, cxTextEdit, TBXDkPanels, JSDialog, uDAInterfaces;
+
+
+type
+ TfEditorElegirFacturasCliente = class(TfEditorFacturasCliente, IEditorElegirFacturasCliente)
+ frViewBarraSeleccion1: TfrViewBarraSeleccion;
+ lblTitle: TLabel;
+ lblComments: TLabel;
+ EditorSeleccionActionList: TActionList;
+ actBuscar2: TAction;
+ actQuitarFiltro2: TAction;
+ actAnchoAuto2: TAction;
+ pnlHeader: TPanel;
+ procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
+ procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
+ procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure actAnchoAuto2Execute(Sender: TObject);
+ protected
+ procedure SetMultiSelect (AValue : Boolean);
+ function GetMultiSelect : Boolean;
+ function GetFacturasClienteSeleccionados: IBizFacturaCliente;
+ procedure SetViewGrid(const Value: IViewGridBase); override;
+ procedure SetMensaje (const AValue: String);
+ function GetMensaje: String;
+ public
+ property Mensaje : String read GetMensaje write SetMensaje;
+ property FacturasClienteSeleccionados: IBizFacturaCliente read GetFacturasClienteSeleccionados;
+ property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
+ end;
+
+implementation
+
+uses
+ uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils,
+ uGridStatusUtils, uDialogUtils, uEditorBase, uFacturasClienteController, uDateUtils;
+
+{$R *.dfm}
+
+{ TfEditorElegirFacturasCliente }
+
+procedure TfEditorElegirFacturasCliente.actAnchoAuto2Execute(Sender: TObject);
+begin
+ inherited;
+ actAnchoAuto.Execute;
+end;
+
+procedure TfEditorElegirFacturasCliente.FormShow(Sender: TObject);
+begin
+ inherited;
+ EditorActionList.State := asSuspended;
+
+ frViewFacturasCliente1.frViewFiltroBase1.edtFechaIniFiltro.EditValue := darFechaPrimerDia(now);
+ frViewFacturasCliente1.frViewFiltroBase1.edtFechaFinFiltro.EditValue := darFechaUltimoDia(now);
+end;
+
+procedure TfEditorElegirFacturasCliente.frViewBarraSeleccion1actCancelarExecute(
+ Sender: TObject);
+begin
+ inherited;
+ Close;
+end;
+
+procedure TfEditorElegirFacturasCliente.frViewBarraSeleccion1actSeleccionarExecute(
+ Sender: TObject);
+begin
+ inherited;
+ ModalResult := mrOk;
+end;
+
+procedure TfEditorElegirFacturasCliente.frViewBarraSeleccion1actSeleccionarUpdate(
+ Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0)
+end;
+
+function TfEditorElegirFacturasCliente.GetFacturasClienteSeleccionados: IBizFacturaCliente;
+begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
+ // En SelectedRecords tengo los ID de las filas seleccionadas del grid
+ Result := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
+end;
+
+function TfEditorElegirFacturasCliente.GetMensaje: String;
+begin
+ Result := lblComments.Caption;
+end;
+
+function TfEditorElegirFacturasCliente.GetMultiSelect: Boolean;
+begin
+ Result := ViewGrid.MultiSelect;
+end;
+
+procedure TfEditorElegirFacturasCliente.SetMensaje(const AValue: String);
+begin
+ lblComments.Caption := AValue;
+end;
+
+procedure TfEditorElegirFacturasCliente.SetMultiSelect(AValue: Boolean);
+begin
+ ViewGrid.MultiSelect := AValue;
+end;
+
+procedure TfEditorElegirFacturasCliente.SetViewGrid(const Value: IViewGridBase);
+begin
+ inherited;
+ ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.dfm b/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.dfm
new file mode 100644
index 0000000..31a3844
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.dfm
@@ -0,0 +1,1950 @@
+inherited fEditorFacturaProforma: TfEditorFacturaProforma
+ Left = 454
+ Top = 208
+ Caption = 'Nueva factura de cliente'
+ ClientHeight = 611
+ ClientWidth = 823
+ Position = poScreenCenter
+ OnClose = CustomEditorClose
+ ExplicitWidth = 831
+ ExplicitHeight = 645
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Width = 823
+ Caption = 'Nueva factura de cliente'
+ ExplicitWidth = 823
+ inherited Image1: TImage
+ Left = 796
+ Picture.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800
+ 0000180806000000E0773DF80000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F
+ 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601
+ EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6
+ 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C
+ 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058
+ 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB
+ 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3
+ C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960
+ 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C
+ C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859
+ 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8
+ 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF
+ 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116
+ 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D
+ 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049
+ 454E44AE426082}
+ ExplicitLeft = 742
+ end
+ inherited lblDesbloquear: TcxLabel
+ Left = 698
+ ExplicitLeft = 698
+ AnchorX = 743
+ AnchorY = 14
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Width = 823
+ ExplicitWidth = 823
+ inherited tbxMain: TTBXToolbar
+ ExplicitWidth = 613
+ inherited TBXItem2: TTBXItem
+ Visible = False
+ end
+ inherited TBXSeparatorItem1: TTBXSeparatorItem
+ Visible = False
+ end
+ inherited TBXItem5: TTBXItem
+ Visible = False
+ end
+ object TBXSeparatorItem6: TTBXSeparatorItem [11]
+ end
+ object TBXItem7: TTBXItem [12]
+ Action = actEnviarEMail
+ DisplayMode = nbdmImageAndText
+ end
+ end
+ inherited tbxMenu: TTBXToolbar
+ ExplicitWidth = 823
+ inherited TBXSubmenuItem4: TTBXSubmenuItem
+ inherited TBXItem8: TTBXItem
+ Visible = False
+ end
+ inherited TBXSeparatorItem5: TTBXSeparatorItem
+ Visible = False
+ end
+ inherited TBXItem10: TTBXItem
+ Visible = False
+ end
+ end
+ object TBXSubmenuItem2: TTBXSubmenuItem [4]
+ Caption = 'A&cciones'
+ object TBXItem33: TTBXItem
+ Action = actEnviarEMail
+ end
+ end
+ end
+ end
+ inherited pgPaginas: TPageControl
+ Width = 817
+ Height = 318
+ OnChanging = pgPaginasChanging
+ ExplicitWidth = 817
+ ExplicitHeight = 318
+ inherited pagGeneral: TTabSheet
+ ExplicitLeft = 4
+ ExplicitTop = 24
+ ExplicitWidth = 809
+ ExplicitHeight = 290
+ inline frViewFacturaProforma1: TfrViewFacturaProforma
+ Left = 0
+ Top = 0
+ Width = 809
+ Height = 290
+ Align = alClient
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 0
+ ReadOnly = False
+ ExplicitWidth = 809
+ ExplicitHeight = 290
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 809
+ Height = 290
+ ExplicitWidth = 809
+ ExplicitHeight = 290
+ inherited Label1: TLabel
+ Left = 448
+ Width = 311
+ ExplicitLeft = 448
+ ExplicitWidth = 311
+ end
+ inherited eReferencia: TcxDBTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 165
+ Width = 165
+ end
+ inherited edtFecha: TcxDBDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 293
+ Width = 293
+ end
+ inherited memObservaciones: TcxDBMemo
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 355
+ ExplicitHeight = 345
+ Height = 345
+ Width = 355
+ end
+ inherited cbFormaPago: TcxDBLookupComboBox
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 269
+ Width = 269
+ end
+ inherited bFormasPago: TButton
+ Left = 266
+ ExplicitLeft = 266
+ end
+ inherited cbCuentaBancaria: TcxDBComboBox
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 165
+ Width = 165
+ end
+ inherited cbClienteFinal: TcxDBTextEdit
+ Left = 448
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 448
+ ExplicitWidth = 339
+ Width = 339
+ end
+ inherited bElegirClienteFinal: TButton
+ Left = 736
+ ExplicitLeft = 736
+ end
+ inherited edtFechaVemcimiento: TcxDBDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 275
+ Width = 275
+ end
+ inherited frViewDatosYSeleccionClienteFacturaProforma1: TfrViewDatosYSeleccionClienteFacturaProforma
+ Left = 437
+ Width = 467
+ ExplicitLeft = 437
+ ExplicitWidth = 467
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 467
+ inherited edtlNombre: TcxDBTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 224
+ Width = 224
+ end
+ inherited edtNIFCIF: TcxDBTextEdit
+ Left = 220
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 220
+ end
+ inherited Button3: TBitBtn
+ Left = 131
+ Top = 199
+ ExplicitLeft = 131
+ ExplicitTop = 199
+ end
+ inherited Button4: TButton
+ Left = 300
+ ExplicitLeft = 300
+ end
+ inherited edtDireccion: TcxMemo
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 403
+ Width = 403
+ end
+ end
+ end
+ end
+ end
+ end
+ object pagContenido: TTabSheet
+ Caption = 'Contenido'
+ ImageIndex = 1
+ inline frViewDetallesFacturaProforma1: TfrViewDetallesFacturaProforma
+ Left = 0
+ Top = 0
+ Width = 809
+ Height = 290
+ Align = alClient
+ BiDiMode = bdLeftToRight
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentBiDiMode = False
+ ParentFont = False
+ TabOrder = 0
+ ReadOnly = False
+ ExplicitWidth = 809
+ ExplicitHeight = 290
+ inherited ToolBar1: TToolBar
+ Width = 809
+ Height = 51
+ ExplicitWidth = 809
+ ExplicitHeight = 51
+ inherited ToolButton3: TToolButton
+ Wrap = False
+ end
+ inherited ToolButton4: TToolButton
+ Left = 278
+ Top = 0
+ ExplicitLeft = 278
+ ExplicitTop = 0
+ end
+ inherited ToolButton14: TToolButton
+ Left = 334
+ Top = 0
+ Wrap = False
+ ExplicitLeft = 334
+ ExplicitTop = 0
+ end
+ inherited FontName: TJvFontComboBox
+ Left = 399
+ Top = 0
+ ExplicitLeft = 399
+ ExplicitTop = 0
+ end
+ inherited FontSize: TEdit
+ Left = 544
+ Top = 0
+ Width = 58
+ ExplicitLeft = 544
+ ExplicitTop = 0
+ ExplicitWidth = 58
+ end
+ inherited UpDown1: TUpDown
+ Left = 602
+ Top = 0
+ ExplicitLeft = 602
+ ExplicitTop = 0
+ end
+ inherited ToolButton13: TToolButton
+ Left = 0
+ Top = 0
+ Wrap = True
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitHeight = 27
+ end
+ inherited ToolButton6: TToolButton
+ Left = 0
+ Top = 27
+ ExplicitLeft = 0
+ ExplicitTop = 27
+ end
+ inherited ToolButton7: TToolButton
+ Left = 66
+ Top = 27
+ ExplicitLeft = 66
+ ExplicitTop = 27
+ end
+ inherited ToolButton8: TToolButton
+ Left = 133
+ Top = 27
+ ExplicitLeft = 133
+ ExplicitTop = 27
+ end
+ inherited ToolButton12: TToolButton
+ Left = 216
+ Top = 27
+ ExplicitLeft = 216
+ ExplicitTop = 27
+ end
+ inherited ToolButton9: TToolButton
+ Left = 224
+ Top = 27
+ ExplicitLeft = 224
+ ExplicitTop = 27
+ end
+ inherited ToolButton10: TToolButton
+ Left = 369
+ Top = 27
+ ExplicitLeft = 369
+ ExplicitTop = 27
+ end
+ inherited ToolButton11: TToolButton
+ Left = 494
+ Top = 27
+ ExplicitLeft = 494
+ ExplicitTop = 27
+ end
+ end
+ inherited cxGrid: TcxGrid
+ Top = 77
+ Width = 809
+ Height = 213
+ ExplicitTop = 77
+ ExplicitWidth = 809
+ ExplicitHeight = 213
+ end
+ inherited TBXDock1: TTBXDock
+ Top = 51
+ Width = 809
+ ExplicitTop = 51
+ ExplicitWidth = 809
+ inherited TBXToolbar1: TTBXToolbar
+ ExplicitWidth = 566
+ end
+ end
+ inherited cxGridPopupMenu: TcxGridPopupMenu
+ PopupMenus = <
+ item
+ GridView = frViewDetallesFacturaProforma1.cxGridView
+ HitTypes = [gvhtNone, gvhtCell, gvhtRecord, gvhtRowIndicator]
+ Index = 0
+ PopupMenu = frViewDetallesFacturaProforma1.GridGeneralPopupMenu
+ end>
+ end
+ end
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Top = 592
+ Width = 823
+ Panels = <
+ item
+ Width = 200
+ end>
+ ExplicitTop = 592
+ ExplicitWidth = 823
+ end
+ inline frViewTotales1: TfrViewTotales [4]
+ Left = 0
+ Top = 400
+ Width = 823
+ Height = 192
+ Align = alBottom
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 4
+ ReadOnly = False
+ ExplicitTop = 400
+ ExplicitWidth = 823
+ ExplicitHeight = 192
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 823
+ Height = 192
+ ExplicitWidth = 823
+ ExplicitHeight = 192
+ inherited Bevel3: TBevel
+ Left = 411
+ Height = 122
+ ExplicitLeft = 411
+ ExplicitHeight = 122
+ end
+ inherited Bevel4: TBevel
+ Left = 523
+ Top = 58
+ Width = 192
+ ExplicitLeft = 523
+ ExplicitTop = 58
+ ExplicitWidth = 192
+ end
+ inherited Bevel1: TBevel
+ Left = 523
+ Top = 162
+ Width = 368
+ ExplicitLeft = 523
+ ExplicitTop = 162
+ ExplicitWidth = 368
+ end
+ inherited Bevel2: TBevel
+ Width = 368
+ ExplicitWidth = 368
+ end
+ inherited ImporteDto: TcxDBCurrencyEdit
+ Enabled = False
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 184
+ Width = 184
+ end
+ inherited ImporteIVA: TcxDBCurrencyEdit
+ Left = 594
+ Top = 81
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 594
+ ExplicitTop = 81
+ ExplicitWidth = 249
+ Width = 249
+ end
+ inherited ImporteTotal: TcxDBCurrencyEdit
+ Left = 524
+ Top = 135
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 524
+ ExplicitTop = 135
+ ExplicitWidth = 319
+ Width = 319
+ end
+ inherited edtDescuento: TcxDBSpinEdit
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ end
+ inherited edtIVA: TcxDBSpinEdit
+ Left = 523
+ Top = 81
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 523
+ ExplicitTop = 81
+ end
+ inherited ImporteBase: TcxDBCurrencyEdit
+ Left = 523
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 523
+ ExplicitWidth = 320
+ Width = 320
+ end
+ inherited edtRE: TcxDBSpinEdit
+ Left = 523
+ Top = 108
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 523
+ ExplicitTop = 108
+ end
+ inherited ImporteRE: TcxDBCurrencyEdit
+ Left = 594
+ Top = 108
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 594
+ ExplicitTop = 108
+ ExplicitWidth = 249
+ Width = 249
+ end
+ inherited eImporteNeto: TcxDBCurrencyEdit
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 255
+ Width = 255
+ end
+ inherited ePorte: TcxDBCurrencyEdit
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 255
+ Width = 255
+ end
+ inherited eIVA: TcxDBLookupComboBox
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 117
+ Width = 117
+ end
+ inherited bTiposIVA: TButton
+ Left = 263
+ ExplicitLeft = 263
+ end
+ inherited cbRecargoEquivalencia: TcxDBCheckBox
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 255
+ Width = 255
+ end
+ inherited edtRetencion: TcxDBSpinEdit
+ Left = 523
+ Top = 182
+ DataBinding.DataField = 'RETENCION'
+ Properties.AssignedValues.MinValue = True
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 523
+ ExplicitTop = 182
+ end
+ inherited edtImporteRetencion: TcxDBCurrencyEdit
+ Left = 594
+ Top = 182
+ DataBinding.DataField = 'IMPORTE_RETENCION'
+ Style.LookAndFeel.SkinName = ''
+ Style.IsFontAssigned = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 594
+ ExplicitTop = 182
+ ExplicitWidth = 152
+ Width = 152
+ end
+ inherited edtFechaRetencion: TcxDBDateEdit
+ DataBinding.DataField = 'FECHA_RETENCION'
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 150
+ Width = 150
+ end
+ inherited dxLayoutControl1Group_Root: TdxLayoutGroup
+ inherited dxLayoutControl1Group1: TdxLayoutGroup
+ inherited dxLayoutControl1Group2: TdxLayoutGroup
+ inherited dxLayoutControl1Group7: TdxLayoutGroup
+ inherited dxLayoutControl1Item9: TdxLayoutItem
+ Visible = False
+ end
+ end
+ inherited dxLayoutControl1Item19: TdxLayoutItem
+ Visible = False
+ end
+ end
+ inherited dxLayoutControl1Group5: TdxLayoutGroup
+ inherited dxLayoutControl1Group3: TdxLayoutGroup
+ inherited dxLayoutControl1Item14: TdxLayoutItem
+ Offsets.Bottom = 3
+ Offsets.Top = 3
+ end
+ inherited dxLayoutControl1Group8: TdxLayoutGroup
+ inherited dxLayoutControl1Item7: TdxLayoutItem
+ Visible = True
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ inherited EditorActionList: TActionList [5]
+ Left = 8
+ Top = 144
+ object actEnviarEMail: TAction
+ Category = 'Acciones'
+ Caption = 'Enviar por e-mail...'
+ ImageIndex = 21
+ OnExecute = actEnviarEMailExecute
+ OnUpdate = actEnviarEMailUpdate
+ end
+ end
+ inherited SmallImages: TPngImageList [6]
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9
+ 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD
+ 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E
+ E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290
+ 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF
+ FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232
+ E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043
+ C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF
+ 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4
+ 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A
+ 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA
+ 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583
+ 000005100EB8572466A60000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001074944415478DA
+ 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A
+ C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211
+ AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643
+ 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601
+ C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4
+ CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346
+ B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501
+ 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08
+ 0029AC32F01825AACD0000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001514944415478DA
+ 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319
+ CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000
+ 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802
+ 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D
+ F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4
+ C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18
+ 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801
+ 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB
+ FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E
+ 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED
+ 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA
+ 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF
+ 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17
+ 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8
+ E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42
+ BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0
+ 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F
+ E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D
+ CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C
+ 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98
+ B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941
+ 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF
+ DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7
+ 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F
+ D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE
+ D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583
+ CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8
+ FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED
+ 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0
+ EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E
+ 44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA
+ A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304
+ 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994
+ 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F
+ 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546
+ 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8
+ 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA
+ 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E
+ 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8
+ E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0
+ 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8
+ 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37
+ 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB
+ 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932
+ 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04
+ E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148
+ D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2
+ 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56
+ A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E
+ AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13
+ 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058
+ 5538F0EAB25B380000000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001934944415478DA
+ 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98
+ 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6
+ 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F
+ FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F
+ B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9
+ 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491
+ 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC
+ 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5
+ 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF
+ 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E
+ C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506
+ 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4
+ 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260
+ 82}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD
+ D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958
+ 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF
+ DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C
+ 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B
+ B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD
+ D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6
+ AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895
+ 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608
+ DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1
+ 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9
+ D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252
+ 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29
+ 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4
+ F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A
+ A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F
+ AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537
+ 19FE00839434866373C4BA0000000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20
+ E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9
+ 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1
+ CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098
+ D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4
+ AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609
+ 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3
+ D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD
+ 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8
+ C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D
+ E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770
+ 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F
+ 16FA1194E3DBC30000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5
+ 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA
+ 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8
+ 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B
+ A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78
+ B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE
+ 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58
+ 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E
+ 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D
+ 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE
+ F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744
+ E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000016A4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA
+ 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA
+ 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30
+ F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911
+ FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD
+ D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5
+ 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C
+ E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3
+ FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B
+ CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907
+ BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4
+ 0090010087546EF0ACB0C7920000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001024944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8
+ 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7
+ 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5
+ B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719
+ 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B
+ 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1
+ CDA578040000000049454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001C04944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F
+ 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8
+ 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF
+ 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E
+ 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F
+ 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB
+ 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1
+ CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1
+ 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4
+ F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C
+ 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0
+ F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78
+ 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C
+ 80060000000049454E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA
+ 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF
+ CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B
+ 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E
+ 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3
+ B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0
+ 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7
+ EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567
+ 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41
+ 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB
+ 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060
+ A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A
+ 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA
+ E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C
+ EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149
+ D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E
+ 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65
+ 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3
+ 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA
+ 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414
+ A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D
+ 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF
+ 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008
+ EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5
+ 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050
+ 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85
+ CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15
+ 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7
+ F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D
+ B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D
+ 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02
+ 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE
+ 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0
+ 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D
+ 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747
+ 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7
+ FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386
+ 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790
+ E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6
+ 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74
+ 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD
+ BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03
+ 503A4EA60D6AAC070000000049454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA
+ 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251
+ 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E
+ C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC
+ 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910
+ 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537
+ BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0
+ 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB
+ B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048
+ 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5
+ E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676
+ 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8
+ 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002
+ 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29
+ 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF
+ 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF
+ 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5
+ 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF
+ AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632
+ 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4
+ E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384
+ 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72
+ CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD
+ DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8
+ 3FA68502A9830000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA
+ 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD
+ 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4
+ 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383
+ E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF
+ 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6
+ 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5
+ EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77
+ EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7
+ 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF
+ 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813
+ BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902
+ 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636
+ EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4
+ 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022
+ 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212
+ 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9
+ 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160
+ FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300
+ D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05
+ 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB
+ EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F
+ A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE
+ CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3
+ D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF
+ EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265
+ EA71FE0D330BBCF031BDB9A60000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA
+ 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B
+ 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB
+ 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720
+ F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED
+ AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F
+ 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB
+ C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF
+ A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C
+ 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C
+ CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A
+ 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A
+ 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF
+ 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5
+ FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43
+ 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020
+ 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807
+ F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB
+ 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C
+ B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631
+ 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83
+ F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C
+ E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F
+ CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E
+ 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548
+ 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000
+ 000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000019E4944415478DA
+ 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F
+ FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA
+ 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01
+ D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3
+ 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9
+ 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40
+ DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C
+ 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9
+ 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9
+ ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44
+ 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34
+ 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1
+ 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA
+ 0000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000015D4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0
+ 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060
+ 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298
+ E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0
+ 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161
+ 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319
+ 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5
+ BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068
+ 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2
+ E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41
+ 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500
+ 00000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001B04944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7
+ 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E
+ 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840
+ 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3
+ CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657
+ 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28
+ 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34
+ 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9
+ F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296
+ D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801
+ 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A
+ 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001034944415478DA
+ 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520
+ 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D
+ 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A
+ 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60
+ 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800
+ 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE
+ B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3
+ F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A
+ 7A68BA98860000000049454E44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001964944415478DA
+ 63FCFFFF3F03232323033A58BCE9F87F647EAC9F258622B05E6C068034873B8A
+ 80D92019C62F8F194C1356339CDF399D91A0014B361FFB1FE6208AA299E1F323
+ 306D52F90CC5100C03566E3DFC3FD04E02A2F9F727064690462066006A66FC02
+ 64FFFAC8603451096E088A01CB361FFDFF8F819981183077D11A86FDAB7B18E1
+ 062CDD7CE27F14573FC3B2EF450CD13E86181ABE7DFFCDF0F5DB6F866FDFFE30
+ 1CB97897218AB38FC1B85B98E1DC8E698C600396000D8861696058FAB7116CC0
+ 94C5FBB0DAEC6CAECF70EED6238668E67AB057500CF8F0E10383A0A0208A0B90
+ 6D06B1BF01D9379E3C67387AFE09C389A37BD15CE06B01B47907434EAC13C3EF
+ 3F7F19662E3F8862BB898606C3EFDFFF1896EF3DCFA0A5C0CD306FE9265403FC
+ 9D20362F5CB71F4CE7C47AA01890D5BC164C7716F980D56018606BAC0656B079
+ EF2986F82047AC6150DEB785A13CD911AC06C300234D05867DC72F30B8D818E1
+ 8DC2494B0E63F702281075D455884A07576EDEC134404A5480E1DAED07441900
+ 021806F44D5D44B46618801B400900007F4518F05E90AAF20000000049454E44
+ AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+ inherited LargeImages: TPngImageList [7]
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315
+ 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F
+ 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499
+ B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9
+ A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6
+ EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4
+ 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2
+ 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696
+ F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0
+ CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A
+ C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138
+ 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1
+ B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008
+ 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42
+ F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3
+ 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329
+ 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9
+ 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59
+ 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429
+ BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6
+ 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5
+ C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315
+ 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422
+ C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61
+ C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F
+ 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E
+ A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76
+ 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA
+ 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8
+ 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735
+ F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175
+ 682F0000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000032A4944415478DA
+ BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1
+ 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C
+ 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D
+ 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC
+ 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4
+ EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F
+ 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55
+ 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0
+ AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C
+ AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80
+ F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D
+ ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213
+ 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43
+ 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95
+ 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F
+ F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020
+ C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48
+ FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C
+ C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2
+ E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147
+ E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603
+ A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D
+ 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD
+ AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A
+ 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4
+ B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000022C4944415478DA
+ 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF
+ 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2
+ 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0
+ 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1
+ 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141
+ 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06
+ D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022
+ 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020
+ 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679
+ 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8
+ F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907
+ 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F
+ 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8
+ FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE
+ 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC
+ 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430
+ 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4
+ 02140B6805009C1383EFACA508270000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA
+ B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989
+ 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E
+ 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4
+ 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2
+ E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4
+ 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA
+ BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04
+ 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096
+ 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F
+ 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935
+ 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588
+ D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130
+ EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7
+ 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D
+ 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D
+ 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43
+ 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA
+ 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1
+ 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9
+ 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E
+ 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422
+ BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438
+ 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413
+ A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239
+ 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831
+ 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA
+ 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170
+ C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832
+ 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C
+ 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D
+ 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37
+ 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22
+ F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36
+ 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71
+ 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381
+ BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355
+ 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D
+ 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C
+ 4A0000000049454E44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA
+ B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B
+ 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828
+ 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736
+ B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE
+ A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56
+ 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15
+ 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C
+ 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0
+ D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E
+ A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C
+ EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A
+ 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2
+ BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC
+ 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E
+ 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F
+ BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08
+ 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83
+ D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683
+ 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868
+ 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12
+ C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3
+ 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E
+ 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3
+ 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446
+ FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119
+ 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C
+ 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1
+ DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45
+ 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826
+ BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240
+ A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C
+ A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32
+ C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C
+ 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300
+ 00000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000027F4944415478DA
+ 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9
+ 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67
+ F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970
+ 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D
+ 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F
+ E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100
+ 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21
+ 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA
+ 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B
+ C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62
+ F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF
+ 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F
+ C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4
+ 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D
+ 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486
+ C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19
+ 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4
+ 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB
+ 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5
+ 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2
+ FA0000000049454E44AE426082}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000037C4944415478DA
+ B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36
+ 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94
+ 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393
+ 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F
+ 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784
+ FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2
+ E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4
+ CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124
+ 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB
+ 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7
+ C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1
+ 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72
+ 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24
+ C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3
+ 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE
+ 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255
+ 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B
+ 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB
+ B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022
+ F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833
+ B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F
+ E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989
+ 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C
+ 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C
+ E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E
+ 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8
+ 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99
+ 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000
+ 000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA
+ 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731
+ 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67
+ E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D
+ 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72
+ 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3
+ D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965
+ 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF
+ C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8
+ CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880
+ AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F
+ 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31
+ 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6
+ A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621
+ DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5
+ 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9
+ F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2
+ 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066
+ 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24
+ 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621
+ 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA
+ B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058
+ D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60
+ 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F
+ EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1
+ B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE
+ 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6
+ CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71
+ 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C
+ 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12
+ 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E
+ 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59
+ 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED
+ 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8
+ 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D
+ CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182
+ D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382
+ 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A
+ B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3
+ 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5
+ 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6
+ 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE
+ 426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000029E4944415478DA
+ 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382
+ 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58
+ F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30
+ 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7
+ C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12
+ 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD
+ D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA
+ 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287
+ CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341
+ 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14
+ 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511
+ 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B
+ E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC
+ DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6
+ 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10
+ E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84
+ EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17
+ AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02
+ 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187
+ 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B
+ 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090
+ 0000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA
+ ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589
+ F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435
+ F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF
+ CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B
+ 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D
+ 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD
+ 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1
+ A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE
+ 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075
+ F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2
+ 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF
+ A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C
+ D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892
+ 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806
+ 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F
+ EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E
+ 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3
+ 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5
+ DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C
+ A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA
+ F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196
+ 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E
+ 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC
+ BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D
+ 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68
+ 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986
+ F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000
+ 49454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000003784944415478DA
+ B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61
+ AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A
+ BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39
+ 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A
+ 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965
+ 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4
+ 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0
+ E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63
+ 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1
+ 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A
+ B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36
+ FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424
+ 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45
+ DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1
+ 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50
+ 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC
+ 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46
+ FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0
+ 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4
+ 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F
+ 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B
+ 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2
+ D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA
+ 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F
+ 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3
+ EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92
+ 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F
+ 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945
+ 4E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA
+ BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93
+ 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88
+ 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C
+ 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004
+ A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F
+ 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47
+ E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA
+ 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F
+ 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE
+ 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A
+ B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0
+ 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06
+ 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027
+ 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7
+ 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F
+ 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090
+ B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE
+ AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927
+ E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627
+ 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA
+ 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD
+ E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4
+ E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779
+ 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82
+ 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9
+ 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C
+ 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3
+ 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE
+ 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85
+ 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C
+ 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000
+ 000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA
+ AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4
+ 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3
+ A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3
+ 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117
+ CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671
+ 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7
+ B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E
+ 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3
+ 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37
+ 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8
+ 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F
+ 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D
+ F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D
+ AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480
+ 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E
+ C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56
+ 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5
+ CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A
+ 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6
+ 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020
+ D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D
+ D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA
+ 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50
+ C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6
+ 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152
+ D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1
+ 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11
+ 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242
+ 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE
+ 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3
+ B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7
+ 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130
+ 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7
+ 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981
+ 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0
+ 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877
+ 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB
+ 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366
+ 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF
+ 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688
+ F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811
+ F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000
+ 49454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA
+ AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED
+ C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B
+ 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24
+ 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4
+ 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5
+ B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB
+ 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191
+ 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5
+ 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262
+ 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56
+ 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0
+ A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36
+ E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A
+ EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098
+ 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7
+ 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0
+ 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A
+ 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715
+ 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC
+ 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1
+ F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9
+ 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407
+ B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A
+ 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0
+ 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E
+ 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F
+ 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC
+ 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536
+ D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D
+ 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B
+ D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC
+ F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134
+ 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA
+ 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4
+ C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF
+ BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25
+ 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F
+ 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707
+ 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4
+ 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16
+ 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855
+ 88E7298D620000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA
+ 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E
+ 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18
+ D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767
+ F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B
+ 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8
+ C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB
+ B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A
+ 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD
+ 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0
+ 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6
+ 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C
+ 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418
+ 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06
+ 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E
+ 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2
+ 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402
+ 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F
+ 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440
+ 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA
+ 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698
+ 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080
+ 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0
+ 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47
+ 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC
+ 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4
+ 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74
+ D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4
+ 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766
+ 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05
+ F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8
+ 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8
+ FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125
+ 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B
+ FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42
+ 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9
+ 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67
+ E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF
+ 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6
+ 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F
+ 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322
+ 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303
+ 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51
+ 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549
+ 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3
+ 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4
+ FE66E507F40000000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA
+ 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3
+ F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958
+ 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77
+ F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC
+ AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8
+ 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0
+ ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA
+ A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6
+ E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99
+ 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193
+ 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1
+ 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068
+ BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13
+ C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76
+ E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96
+ 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF
+ 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF
+ 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B
+ C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500
+ 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723
+ C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B
+ 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426
+ 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B
+ 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808
+ A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9
+ 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587
+ EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5
+ DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3
+ 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F
+ 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D
+ F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D
+ 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641
+ 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8
+ A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515
+ E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3
+ 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3
+ 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A
+ 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8
+ 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6
+ 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58
+ AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195
+ 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB
+ 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4
+ 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C
+ 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88
+ 2F15D20000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000002814944415478DA
+ 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF
+ 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3
+ EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A
+ 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC
+ 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395
+ E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1
+ 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517
+ 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1
+ 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F
+ 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138
+ BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A
+ 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605
+ 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A
+ 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3
+ 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5
+ 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F
+ C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450
+ 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2
+ 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07
+ CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85
+ 5838D40000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000026D4944415478DA
+ B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806
+ 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775
+ ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C
+ F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB
+ 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB
+ 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3
+ E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A
+ 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D
+ 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7
+ 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B
+ 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3
+ 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4
+ D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922
+ C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C
+ 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556
+ 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F
+ 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9
+ CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69
+ 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0
+ 3F84F988A8E02F75743575B8E251160000000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE000004124944415478DA
+ ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983
+ 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10
+ 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A
+ 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070
+ 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB
+ A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4
+ 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6
+ 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289
+ 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494
+ E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B
+ 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F
+ BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26
+ 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD
+ 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A
+ 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0
+ D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57
+ 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1
+ 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117
+ BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C
+ 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260
+ E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D
+ B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94
+ F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40
+ D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6
+ D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB
+ 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763
+ D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23
+ 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593
+ BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27
+ 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF
+ 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC
+ 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A
+ 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000001B74944415478DA
+ B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434
+ BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31
+ 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47
+ 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60
+ F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B
+ 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284
+ C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D
+ 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4
+ 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C
+ B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5
+ D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3
+ 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555
+ 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE
+ F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E
+ 44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000002434944415478DA
+ B593DB6B13411C85CFA8AF0A11C5BED882977AA11A8A86A64AB5DA68ABB4DA17
+ 9B071B94824F5510FF9022D8B4A2226AEA5DA434822951BC556D55225544E905
+ A448895048369562B6D9ACFB1BC9CA38BBEB46D203CB4C7667BEEF4CD865BAAE
+ 6321C348C018B35D101978EDD82074A8D67633673B09081EDCB3426CA42A40D6
+ B88C91E6BE536FF07EB097152D7003879A416FA21297AF0F584A6C056EE1BF47
+ 053D63014B89A540826B3F0D5086C30B406859735E18C3D31D924412B8827368
+ 4680334348E99E392D480401C19DDE26B75114059722FD5C620AFAA2C3FAFED9
+ E3882FBB8AA3CD358E80F9790D2ABF727F8D1A129FBF625FE618EE6867F94912
+ B11E662BE88EC45CB76ED8518DAC9AC3A7C96FF682743A0D8FC7637B02A7E604
+ CF1ABF27A692285FBE1213E33F70EEE67951D0DEE247B86F109DED8D459FC0E7
+ DD04D5904C2567904AA5103C5C8FC6B633A2A0ADC9C7175FB81547CBAE1A5454
+ 7890CFEBBCE1F7E4AC25383537C79B131C2AC3E8E4184E869A7839E92F6ADD5B
+ 6D6EBC72FF0997AC2A5BCAE1D1E7239602EFDA4A684BF2589C5BC4E12782017E
+ FFE2ED47B2E060DD1661F38DE80B2E2138B5B20A352509C143ADBBCDFB91FE67
+ B220E0DF2C01EEC55E99ADEC426D8F1CD829DCBBFBF0A52CA8DBB64158147D3C
+ 22B4720A356E6EF8F3F63D30F64A025FD51A73417C2821B5FA57A875BDDFCBE7
+ 4F87476541D5FAD5FCE1D0DB8F429B6242CDB76FDD88771FBEC88275E565FC41
+ A1C5FF86DA532CBF64B297228E272855244157F85AC9E085988285CC2F0A951A
+ EF05170AF90000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+ inherited JvFormStorage: TJvFormStorage [8]
+ end
+ inherited dsDataTable: TDADataSource [10]
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.pas b/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.pas
new file mode 100644
index 0000000..afbd8e4
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturaProforma.pas
@@ -0,0 +1,499 @@
+unit uEditorFacturaProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
+ JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
+ PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
+ TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
+ uViewFacturaCliente, uCustomView, uViewBase, uViewTotales,
+ StdCtrls, pngimage, AppEvnts, JvComponentBase,
+ uBizFacturasCliente, uBizTiposIVA,
+
+
+ uIEditorFacturaCliente, uFacturasClienteController, uViewDetallesBase,
+ uViewDetallesFacturaCliente, dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar,
+ uViewDetallesDTO, uViewDetallesArticulos, uTiposIVAController, uDAInterfaces,
+ cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, Grids, DBGrids,
+ uViewDetallesArticulosParaVenta, cxLabel, uViewFacturaProforma,
+ uViewDetallesFacturaProforma;
+
+
+type
+ TfEditorFacturaProforma = class(TfEditorDBItem, IEditorFacturaCliente)
+ frViewTotales1: TfrViewTotales;
+ actEnviarEMail: TAction;
+ TBXSeparatorItem6: TTBXSeparatorItem;
+ TBXItem7: TTBXItem;
+ TBXSubmenuItem2: TTBXSubmenuItem;
+ TBXItem33: TTBXItem;
+ frViewDetallesFacturaProforma1: TfrViewDetallesFacturaProforma;
+ frViewFacturaProforma1: TfrViewFacturaProforma;
+ procedure FormShow(Sender: TObject);
+ procedure frViewClienteFactura1edtlNombrePropertiesEditValueChanged(Sender: TObject);
+ procedure dsDataTableDataChange(Sender: TObject; Field: TField);
+ procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
+ procedure frViewClienteFacturaedtlNombrePropertiesChange(Sender: TObject);
+ procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
+// procedure frViewTotales1edtDescuentoPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+ procedure frViewTotales1bTiposIVAClick(Sender: TObject);
+// procedure frViewTotales1eIVAPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+// procedure frViewTotales1cbRecargoEquivalenciaPropertiesEditValueChanged(Sender: TObject);
+// procedure frViewTotales1ePortePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+ procedure frViewTotales1ePorteEditing(Sender: TObject; var CanEdit: Boolean);
+ procedure actEnviarEMailExecute(Sender: TObject);
+ procedure actEnviarEMailUpdate(Sender: TObject);
+
+ private
+ procedure RecalcularPortePorUnidad;
+
+ protected
+ FController : IFacturasClienteController;
+ FFactura: IBizFacturaCliente;
+ FTiposIVAController : ITiposIVAController;
+ FTiposIVA: IBizTipoIVA;
+ FViewFactura: IViewFacturaCliente;
+ function GetController : IFacturasClienteController;
+ procedure SetController (const Value : IFacturasClienteController);
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+
+ function GetViewFactura: IViewFacturaCliente;
+ procedure SetViewFactura(const Value: IViewFacturaCliente);
+
+ property ViewFacturaCliente: IViewFacturaCliente read GetViewFactura write SetViewFactura;
+
+ procedure OnClienteChanged(Sender: TObject);
+
+ procedure GuardarInterno; override;
+ procedure EliminarInterno; override;
+ procedure ImprimirInterno; override;
+ procedure PrevisualizarInterno; override;
+
+ procedure PonerTitulos(const ATitulo: string = ''); override;
+ function PuedoImprimir: Boolean; override;
+ function PuedoEnviar: Boolean; virtual;
+
+ public
+ destructor Destroy; override;
+ property Controller : IFacturasClienteController read GetController write SetController;
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ constructor Create(AOwner: TComponent); override;
+ procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); override; //Importante en este punto se deben de quitar los eventos que puedan afectar a la tabla una vez se cierre el editor.
+ end;
+
+implementation
+{$R *.dfm}
+
+uses
+ uBizContactos, uDataModuleUsuarios, uFactuGES_App,
+ uDetallesFacturaClienteController, uDialogUtils, uDataTableUtils,
+ uDialogOpcionesImpresionFacturasCliente;
+// uGenerarAlbaranesCliFacCliUtils;
+
+
+{ TfEditorFacturaCliente }
+
+{
+**************************** TfEditorFacturaCliente ****************************
+}
+
+procedure TfEditorFacturaProforma.actEnviarEMailExecute(Sender: TObject);
+begin
+ if actEnviarEMail.Enabled then
+ begin
+ if Modified then
+ begin
+ if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede enviar por email hasta que no se guarden.' + #10#13 +
+ '¿Desea guardarlos ahora?') = IDYES) then
+ begin
+ GuardarInterno;
+ FController.GenerarEmailFactura(Factura);
+ end
+ else
+ ShowInfoMessage('Recuerde guardar los cambios si quiere enviar por email.');
+ end
+ else
+ FController.GenerarEmailFactura(Factura);
+ end;
+end;
+
+procedure TfEditorFacturaProforma.actEnviarEMailUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := HayDatos and PuedoEnviar;
+end;
+
+constructor TfEditorFacturaProforma.Create(AOwner: TComponent);
+begin
+ inherited;
+ pgPaginas.ActivePageIndex := 0;
+ ViewFacturaCliente := frViewFacturaCliente1;
+ FTiposIVAController := TTiposIVAController.Create;
+end;
+
+procedure TfEditorFacturaProforma.CustomEditorClose(Sender: TObject;
+ var Action: TCloseAction);
+begin
+ inherited;
+ Factura := NIL;
+ FTiposIVA := NIL;
+
+ FTiposIVAController := Nil;
+ FController := NIL;
+ FViewFactura := NIL;
+end;
+
+destructor TfEditorFacturaProforma.Destroy;
+begin
+ inherited;
+end;
+
+procedure TfEditorFacturaProforma.dsDataTableDataChange(Sender: TObject;
+ Field: TField);
+begin
+ inherited;
+ if Assigned(FFactura) and (not (FFactura.DataTable.Fetching) or
+ not (FFactura.DataTable.Opening) or not (FFactura.DataTable.Closing)) then
+ PonerTitulos;
+end;
+
+procedure TfEditorFacturaProforma.EliminarInterno;
+var
+ ACadena : String;
+begin
+ if Factura.TIPO = CTE_TIPO_FACTURA then
+ ACadena := '¿Desea borrar esta factura de cliente?'
+ else
+ ACadena := '¿Desea borrar este abono a cliente?';
+
+ if (Application.MessageBox(PChar(ACadena), 'Atención', MB_YESNO) = IDYES) then
+ begin
+ //Es el caso de querer borrar una factura pendiente cuyos recibos tienen devoluciones
+ if not FController.Eliminar(Factura) then
+ Application.MessageBox('La factura no ha podido ser eliminada porque tiene recibos con pagos o devoluciones emitidas.', 'Atención', MB_OK);
+ inherited;
+ end;
+end;
+
+procedure TfEditorFacturaProforma.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+begin
+ inherited;
+
+ frViewTotales1.cbRecargoEquivalencia.Properties.OnEditValueChanged := nil;
+ frViewTotales1.eIVA.Properties.OnValidate := nil;
+ frViewTotales1.ePorte.Properties.OnValidate := nil;
+end;
+
+procedure TfEditorFacturaProforma.FormShow(Sender: TObject);
+begin
+ inherited;
+
+ if not Assigned(FViewFactura) then
+ raise Exception.Create('No hay ninguna vista asignada');
+
+ if not Assigned(Factura) then
+ raise Exception.Create('No hay ninguna factura asignada');
+
+ Factura.DataTable.Active := True;
+end;
+
+procedure TfEditorFacturaProforma.frViewClienteFactura1edtlNombrePropertiesEditValueChanged(Sender: TObject);
+begin
+ inherited;
+ with (Sender as TcxDBTextEdit) do
+ Enabled := (FFactura.ID <> 0)
+end;
+
+procedure TfEditorFacturaProforma.frViewClienteFacturaedtlNombrePropertiesChange(
+ Sender: TObject);
+begin
+ inherited;
+ PonerTitulos;
+end;
+
+procedure TfEditorFacturaProforma.frViewTotales1bTiposIVAClick(Sender: TObject);
+begin
+ inherited;
+ FTiposIVAController.VerTodos(FTiposIVA);
+end;
+
+{
+procedure TfEditorFacturaCliente.frViewTotales1cbRecargoEquivalenciaPropertiesEditValueChanged(
+ Sender: TObject);
+begin
+ inherited;
+ if Assigned(Factura) then
+ begin
+ Factura.Edit;
+ if frViewTotales1.cbRecargoEquivalencia.Checked then
+ Factura.RECARGO_EQUIVALENCIA := 1
+ else
+ Factura.RECARGO_EQUIVALENCIA := 0;
+ end;
+end;
+}
+
+{
+procedure TfEditorFacturaCliente.frViewTotales1edtDescuentoPropertiesValidate(
+ Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
+ var Error: Boolean);
+begin
+ inherited;
+ Factura.DESCUENTO := DisplayValue;
+end;
+}
+{
+procedure TfEditorFacturaCliente.frViewTotales1eIVAPropertiesValidate(
+ Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
+ var Error: Boolean);
+begin
+ inherited;
+ Factura.Edit;
+ Factura.ID_TIPO_IVA := ((frViewTotales1.dsTiposIVA.DataTable) as IBizTipoIVA).ID;
+end;
+}
+procedure TfEditorFacturaProforma.frViewTotales1ePorteEditing(Sender: TObject;
+ var CanEdit: Boolean);
+begin
+ inherited;
+ if FFactura.TIPO = CTE_TIPO_ABONO then
+ CanEdit := False;
+end;
+
+{
+procedure TfEditorFacturaCliente.frViewTotales1ePortePropertiesValidate(
+ Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
+ var Error: Boolean);
+begin
+ inherited;
+
+ if (not VarIsNull(DisplayValue)) and (Length(DisplayValue) > 0) then
+ FFactura.IMPORTE_PORTE := DisplayValue
+ else
+ FFactura.IMPORTE_PORTE := 0;
+
+// RecalcularPortePorUnidad; En los documentos de cliente el porte no se desglosa por articulo
+end;
+}
+
+function TfEditorFacturaProforma.GetController: IFacturasClienteController;
+begin
+ Result := FController;
+end;
+
+function TfEditorFacturaProforma.GetFactura: IBizFacturaCliente;
+begin
+ Result := FFactura;
+end;
+
+function TfEditorFacturaProforma.GetViewFactura: IViewFacturaCliente;
+begin
+ Result := FViewFactura;
+end;
+
+procedure TfEditorFacturaProforma.GuardarInterno;
+var
+ bEsNuevo : Boolean;
+begin
+ inherited;
+
+ ShowHourglassCursor;
+ //frViewDetallesFacturaCliente1.SaveGridStatus; // Para guardar estado del grid
+ frViewDetallesFacturaCliente1.BeginUpdate; // Para que no se mueva el foco
+ try
+ bEsNuevo := FFactura.EsNuevo;
+ FController.Guardar(FFactura);
+ finally
+ frViewDetallesFacturaCliente1.EndUpdate;
+ //frViewDetallesFacturaCliente1.RestoreGridStatus;
+ HideHourglassCursor;
+ end;
+
+ if bEsNuevo then
+ begin
+ if FFactura.TIPO = CTE_TIPO_FACTURA then
+ ShowInfoMessage('La factura se ha dado de alta con el código ' + FFactura.REFERENCIA)
+ else
+ begin
+ ShowInfoMessage('El abono se ha dado de alta con el código ' + FFactura.REFERENCIA);
+ //Preguntamos is desea hacer una orden de devolución asociada
+// if (Application.MessageBox('¿Desea crear una orden de devolución para el abono?', 'Atención', MB_YESNO) = IDYES) then
+// GenerarAlbaranCli(FFactura);
+ end;
+ end;
+
+ Modified := False;
+end;
+
+procedure TfEditorFacturaProforma.ImprimirInterno;
+var
+ AVerSello: Boolean;
+ AVerCopia: Boolean;
+ AllItems: Boolean;
+
+begin
+ inherited;
+ AllItems := False;
+ AVerSello := True;
+ AVerCopia := True;
+
+ //Preguntamos si desea que en las facturas se vea el Sello
+ if ElegirOpcionesImpresionFacturaCliente(AVerSello, AVerCopia) then
+ FController.Print(FFactura, AllItems, AVerSello, AVerCopia);
+end;
+
+procedure TfEditorFacturaProforma.OnClienteChanged(Sender: TObject);
+begin
+ FFactura.Cliente := ViewFacturaCliente.ViewClienteFactura.Cliente;
+
+ if not (FFactura.DataTable.State in dsEditModes) then
+ FFactura.DataTable.Edit;
+
+ // Actualizar IVA y RE a partir del tipo de IVA del cliente.
+ Factura.IVA := ((frViewTotales1.dsTiposIVA.DataTable) as IBizTipoIVA).IVA;
+ if FFactura.Cliente.RECARGO_EQUIVALENCIA = 1 then
+ Factura.RE := ((frViewTotales1.dsTiposIVA.DataTable) as IBizTipoIVA).RE
+ else
+ Factura.RE := 0;
+
+//Desactivado porque en presupuestos no utilizan el catálogo de clientes
+ // Si la factura tiene detalles hay que mirar si los descuentos y otros campos
+ // para los artículos hay que cambiarlos.
+// if (FFactura.Detalles.RecordCount > 0) then
+// FController.DetallesController.ActualizarDetalles(FFactura.Detalles, FFactura.Cliente);
+end;
+
+procedure TfEditorFacturaProforma.pgPaginasChanging(Sender: TObject;
+ var AllowChange: Boolean);
+var
+ ACadena : String;
+begin
+ inherited;
+
+ if (not Assigned(FFactura)) or (FFactura.ID_CLIENTE = ID_NULO) then
+ begin
+ if FFactura.TIPO = CTE_TIPO_FACTURA then
+ ACadena := 'Antes debe elegir un cliente para esta factura'
+ else
+ ACadena := 'Antes debe elegir un cliente para este abono';
+ ShowWarningMessage(ACadena);
+ AllowChange := False;
+ end;
+end;
+
+function TfEditorFacturaProforma.PuedoEnviar: Boolean;
+begin
+ Result := not Factura.Cliente.IDIsNull;
+end;
+
+function TfEditorFacturaProforma.PuedoImprimir: Boolean;
+begin
+ Result := inherited PuedoImprimir and (not Factura.Cliente.IDIsNull);
+end;
+
+procedure TfEditorFacturaProforma.PonerTitulos(const ATitulo: string);
+var
+ FTitulo : String;
+begin
+ FTitulo := ATitulo;
+ if (FTitulo = '') and Assigned(Factura) then
+ begin
+ if Factura.EsNuevo then
+ if Factura.TIPO = CTE_TIPO_FACTURA then
+ FTitulo := 'Nueva factura de cliente'
+ else
+ FTitulo := 'Nuevo abono a cliente'
+ else
+ if Factura.TIPO = CTE_TIPO_FACTURA then
+ FTitulo := 'Factura de cliente' + ' - ' + FFactura.Cliente.Nombre
+ else
+ FTitulo := 'Abono a cliente' + ' - ' + FFactura.Cliente.Nombre
+ end;
+
+ inherited PonerTitulos(FTitulo);
+
+ Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
+end;
+
+procedure TfEditorFacturaProforma.PrevisualizarInterno;
+var
+ AVerSello: Boolean;
+ AVerCopia: Boolean;
+ AllItems: Boolean;
+
+begin
+ inherited;
+ AllItems := False;
+ AVerSello := True;
+ AVerCopia := True;
+
+ //Preguntamos si desea que en las facturas se vea el Sello
+ if ElegirOpcionesImpresionFacturaCliente(AVerSello, AVerCopia) then
+ FController.Preview(FFactura, AllItems, AVerSello, AVerCopia);
+end;
+
+procedure TfEditorFacturaProforma.RecalcularPortePorUnidad;
+begin
+ //Esta lógica se llamará en el editor porque es para facilitar el rellenado de información del documento
+ //no puede ir en la clase de negocio porque no es una lógica que tenga sentido fuera del editor.
+ if Assigned(Controller)
+ and Assigned(Controller.DetallesController) then
+ Controller.DetallesController.DesglosarPorteDetalles(FFactura.IMPORTE_PORTE, FFactura.Detalles)
+end;
+
+procedure TfEditorFacturaProforma.SetController(const Value: IFacturasClienteController);
+begin
+ FController := Value;
+
+ if Assigned(FController) then
+ begin
+ ViewFacturaCliente.Controller := FController;
+ frViewDetallesFacturaCliente1.Controller := Controller.DetallesController;
+ end;
+end;
+
+procedure TfEditorFacturaProforma.SetFactura(const Value: IBizFacturaCliente);
+begin
+ FFactura := Value;
+
+ if Assigned(FFactura) then
+ begin
+ dsDataTable.DataTable := FFactura.DataTable;
+ frViewTotales1.DADataSource.DataTable := FFactura.DataTable;
+
+ FTiposIVA := FTiposIVAController.BuscarTodos;
+ frViewTotales1.dsTiposIVA.DataTable := FTiposIVA.DataTable;
+ FTiposIVA.DataTable.Active := True;
+
+ if Assigned(FViewFactura) then
+ begin
+ ViewFacturaCliente.ViewClienteFactura.OnClienteChanged := NIL;
+ try
+ FViewFactura.Factura := FFactura;
+ frViewDetallesFacturaCliente1.Detalles := FFactura.Detalles;
+ frViewDetallesFacturaCliente1.Factura := FFactura; //Para poder sacar los descuento del articulos segun el cliente seleccionado
+ finally
+ ViewFacturaCliente.ViewClienteFactura.OnClienteChanged := OnClienteChanged;
+ end;
+ end;
+ end
+ else begin
+ ViewFacturaCliente.ViewClienteFactura.OnClienteChanged := NIL;
+ dsDataTable.DataTable := NIL;
+ frViewTotales1.DADataSource.DataTable := NIL;
+ frViewTotales1.dsTiposIVA.DataTable := NIL;
+ end
+end;
+
+procedure TfEditorFacturaProforma.SetViewFactura(const Value: IViewFacturaCliente);
+begin
+ FViewFactura := Value;
+
+ if Assigned(FViewFactura) and Assigned(Factura) then
+ FViewFactura.Factura := Factura;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.dfm b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.dfm
new file mode 100644
index 0000000..2ad9cf4
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.dfm
@@ -0,0 +1,3868 @@
+inherited fEditorFacturasProforma: TfEditorFacturasProforma
+ Caption = 'Lista de facturas de cliente'
+ ClientHeight = 666
+ ClientWidth = 842
+ ExplicitWidth = 850
+ ExplicitHeight = 700
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Width = 842
+ Caption = 'Lista de facturas de cliente'
+ ExplicitWidth = 842
+ inherited Image1: TImage
+ Left = 815
+ Picture.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800
+ 0000180806000000E0773DF80000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F
+ 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601
+ EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6
+ 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C
+ 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058
+ 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB
+ 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3
+ C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960
+ 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C
+ C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859
+ 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8
+ 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF
+ 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116
+ 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D
+ 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049
+ 454E44AE426082}
+ ExplicitLeft = 613
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Width = 842
+ ExplicitWidth = 842
+ inherited tbxMain: TTBXToolbar
+ ExplicitWidth = 842
+ object TBXSubmenuItem2: TTBXSubmenuItem [0]
+ Caption = 'Nuevo'
+ DisplayMode = nbdmImageAndText
+ ImageIndex = 22
+ Images = SmallImages
+ object TBXItem39: TTBXItem
+ Action = actNuevaFactura
+ Caption = 'Nueva factura...'
+ end
+ object TBXItem38: TTBXItem
+ Action = actNuevoAbono
+ Caption = 'Nuevo abono...'
+ end
+ end
+ inherited TBXItem2: TTBXItem
+ Visible = False
+ end
+ object TBXItem40: TTBXItem [14]
+ Action = actEnviarEMail
+ DisplayMode = nbdmImageAndText
+ end
+ end
+ inherited tbxFiltro: TTBXToolbar
+ ExplicitWidth = 427
+ inherited lblAno: TTBXLabelItem
+ Visible = True
+ end
+ inherited cbxListaAnos: TTBXComboBoxItem
+ Visible = True
+ end
+ inherited sepAno: TTBXSeparatorItem
+ Visible = True
+ end
+ end
+ inherited tbxMenu: TTBXToolbar
+ ExplicitWidth = 842
+ end
+ inherited TBXTMain2: TTBXToolbar
+ Left = 427
+ ExplicitLeft = 427
+ ExplicitWidth = 66
+ object TBXItem41: TTBXItem
+ Action = actInformes
+ end
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Top = 647
+ Width = 842
+ ExplicitTop = 647
+ ExplicitWidth = 842
+ end
+ inherited EditorActionList: TActionList
+ Left = 136
+ Top = 176
+ inherited actNuevo: TAction
+ ImageIndex = 22
+ end
+ inherited actPrevisualizar: TAction
+ Visible = True
+ end
+ inherited actImprimir: TAction
+ Visible = True
+ end
+ inherited actDuplicar: TAction
+ Hint = 'Generar una factura nueva a partir de la factura seleccionada'
+ end
+ inherited actExportarExcel: TAction
+ Enabled = True
+ Visible = True
+ end
+ object actNuevaFactura: TAction
+ Category = 'Archivo'
+ Caption = 'Factura'
+ ImageIndex = 23
+ OnExecute = actNuevaFacturaExecute
+ end
+ object actNuevoAbono: TAction
+ Category = 'Archivo'
+ Caption = 'Abono'
+ ImageIndex = 24
+ OnExecute = actNuevoAbonoExecute
+ end
+ object actEnviarEMail: TAction
+ Category = 'Acciones'
+ Caption = 'Enviar por e-mail...'
+ OnExecute = actEnviarEMailExecute
+ OnUpdate = actEnviarEMailUpdate
+ end
+ object actInformes: TAction
+ Category = 'Acciones'
+ Caption = 'Informes'
+ OnExecute = actInformesExecute
+ end
+ end
+ inherited SmallImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9
+ 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD
+ 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E
+ E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290
+ 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF
+ FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232
+ E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043
+ C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF
+ 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4
+ 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A
+ 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA
+ 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583
+ 000005100EB8572466A60000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001074944415478DA
+ 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A
+ C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211
+ AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643
+ 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601
+ C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4
+ CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346
+ B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501
+ 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08
+ 0029AC32F01825AACD0000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001514944415478DA
+ 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319
+ CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000
+ 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802
+ 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D
+ F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4
+ C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18
+ 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801
+ 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB
+ FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E
+ 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED
+ 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA
+ 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF
+ 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17
+ 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8
+ E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42
+ BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0
+ 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F
+ E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D
+ CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C
+ 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98
+ B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941
+ 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF
+ DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7
+ 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F
+ D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE
+ D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583
+ CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8
+ FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED
+ 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0
+ EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E
+ 44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA
+ A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304
+ 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994
+ 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F
+ 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546
+ 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8
+ 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA
+ 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E
+ 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8
+ E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0
+ 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8
+ 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37
+ 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB
+ 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932
+ 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04
+ E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148
+ D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2
+ 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56
+ A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E
+ AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13
+ 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058
+ 5538F0EAB25B380000000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001934944415478DA
+ 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98
+ 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6
+ 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F
+ FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F
+ B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9
+ 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491
+ 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC
+ 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5
+ 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF
+ 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E
+ C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506
+ 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4
+ 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260
+ 82}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD
+ D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958
+ 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF
+ DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C
+ 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B
+ B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD
+ D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6
+ AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895
+ 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608
+ DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1
+ 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9
+ D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252
+ 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29
+ 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4
+ F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A
+ A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F
+ AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537
+ 19FE00839434866373C4BA0000000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20
+ E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9
+ 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1
+ CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098
+ D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4
+ AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609
+ 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3
+ D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD
+ 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8
+ C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D
+ E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770
+ 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F
+ 16FA1194E3DBC30000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5
+ 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA
+ 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8
+ 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B
+ A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78
+ B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE
+ 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58
+ 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E
+ 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D
+ 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE
+ F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744
+ E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000016A4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA
+ 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA
+ 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30
+ F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911
+ FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD
+ D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5
+ 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C
+ E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3
+ FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B
+ CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907
+ BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4
+ 0090010087546EF0ACB0C7920000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001024944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8
+ 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7
+ 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5
+ B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719
+ 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B
+ 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1
+ CDA578040000000049454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001C04944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F
+ 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8
+ 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF
+ 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E
+ 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F
+ 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB
+ 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1
+ CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1
+ 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4
+ F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C
+ 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0
+ F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78
+ 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C
+ 80060000000049454E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA
+ 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF
+ CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B
+ 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E
+ 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3
+ B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0
+ 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7
+ EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567
+ 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41
+ 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB
+ 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060
+ A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A
+ 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA
+ E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C
+ EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149
+ D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E
+ 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65
+ 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3
+ 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA
+ 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414
+ A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D
+ 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF
+ 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008
+ EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5
+ 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050
+ 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85
+ CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15
+ 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7
+ F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D
+ B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D
+ 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02
+ 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE
+ 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0
+ 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D
+ 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747
+ 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7
+ FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386
+ 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790
+ E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6
+ 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74
+ 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD
+ BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03
+ 503A4EA60D6AAC070000000049454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA
+ 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251
+ 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E
+ C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC
+ 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910
+ 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537
+ BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0
+ 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB
+ B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048
+ 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5
+ E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676
+ 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8
+ 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002
+ 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29
+ 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF
+ 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF
+ 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5
+ 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF
+ AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632
+ 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4
+ E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384
+ 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72
+ CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD
+ DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8
+ 3FA68502A9830000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA
+ 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD
+ 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4
+ 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383
+ E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF
+ 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6
+ 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5
+ EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77
+ EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7
+ 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF
+ 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813
+ BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902
+ 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636
+ EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4
+ 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022
+ 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212
+ 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9
+ 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160
+ FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300
+ D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05
+ 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB
+ EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F
+ A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE
+ CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3
+ D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF
+ EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265
+ EA71FE0D330BBCF031BDB9A60000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA
+ 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B
+ 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB
+ 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720
+ F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED
+ AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F
+ 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB
+ C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF
+ A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C
+ 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C
+ CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A
+ 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A
+ 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF
+ 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5
+ FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43
+ 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020
+ 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807
+ F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB
+ 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C
+ B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631
+ 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83
+ F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C
+ E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F
+ CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E
+ 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548
+ 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000
+ 000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000019E4944415478DA
+ 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F
+ FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA
+ 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01
+ D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3
+ 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9
+ 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40
+ DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C
+ 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9
+ 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9
+ ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44
+ 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34
+ 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1
+ 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA
+ 0000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000015D4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0
+ 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060
+ 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298
+ E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0
+ 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161
+ 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319
+ 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5
+ BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068
+ 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2
+ E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41
+ 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500
+ 00000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001B04944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7
+ 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E
+ 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840
+ 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3
+ CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657
+ 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28
+ 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34
+ 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9
+ F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296
+ D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801
+ 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A
+ 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001034944415478DA
+ 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520
+ 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D
+ 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A
+ 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60
+ 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800
+ 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE
+ B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3
+ F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A
+ 7A68BA98860000000049454E44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001124944415478DA
+ 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28
+ 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC
+ 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2
+ 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81
+ 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC
+ E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC
+ 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5
+ CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818
+ 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001684944415478DA
+ 63FCFFFF3FC394C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F
+ 19ACFDF319CEED98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC
+ 5BBA09D3007CE0D7EFBF609B4178C98683D80D40770136B0AED69461E59623B8
+ 0D80391B04FE01E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D
+ 760CCEE587E03607359F66585A6AC0B069CF49FC06A0DB0CC2207E58FB598685
+ 85BA0CDB0E9CC16DC0C15E0706FBE203605B37375A809D0D02209BA3BB2F30CC
+ C9D566D87DE41C6E0340CE46B7F9E7AF3F6076D2C42B0C53D2D4180E9FBE8C69
+ 4046941B8363E94194105F5E6EC810D9791ECC9E99A5C9903EED3A437F920AC3
+ 89F357310D480E7386DB08A2435ACF302C2ED687B8049A067266DD62E88A5364
+ 387BF906A60171410E280107B3191DB446C9315CBA7E1BD380283F3B147F23DB
+ FC1BC9E07FFFFE335CB97907D380502F6B86D5DB8E129D13310C0009900A4006
+ 00004B6D80F047EC10D30000000049454E44AE426082}
+ Name = 'PngImage22'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD25200000A4D694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF
+ F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A
+ 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5
+ 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8
+ 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC
+ 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200
+ C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05
+ 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2
+ 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C
+ CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97
+ 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313
+ 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F
+ 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA
+ 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED
+ 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383
+ FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A
+ F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86
+ 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432
+ 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0
+ 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C
+ 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70
+ 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261
+ 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA
+ 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F
+ 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961
+ 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402
+ 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2
+ 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93
+ 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90
+ 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452
+ A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650
+ 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83
+ 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7
+ 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295
+ 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9
+ 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685
+ 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9
+ EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C
+ 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED
+ EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB
+ 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31
+ 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87
+ 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94
+ 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85
+ A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6
+ 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29
+ D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B
+ 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6
+ 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD
+ D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7
+ C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E
+ 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B
+ FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5
+ 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1
+ 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0
+ 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67
+ BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845
+ F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC
+ A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7
+ 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA
+ 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C
+ 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423
+ F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433
+ DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317
+ 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2
+ A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17
+ 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4
+ EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E
+ CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9
+ 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD
+ 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF
+ B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C
+ 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD
+ EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293
+ E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7
+ 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F
+ EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6
+ EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07
+ FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247
+ CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73
+ ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC
+ CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F
+ F73EE77CFEFC2FF784F3FB25D29F33000001A14944415478DA639CBC68FB7F06
+ 2241EE3E4F38FBFFFCFF8C209A1164404EAC075E8D7FFEFE63F8FDE72F035706
+ 1BC38C19090C19190B300DB02DDA0FD770B8CF11857FE4BD139C0D330006F0BA
+ E0D7EFBF609B79B2D8C11A41E0F5E7CF0CAF3E7D02E395134F6277013A407641
+ 6EAD2BC3E4E6DD982E001900723A08FCFBFF9FE1FB8FDF60DB7DEB4F30ACAA34
+ 6658BBE31838107D320C18B6CCB8803D0C607EDFDB69C7E05C7E88615DAD2943
+ 50F36986A5A5060C9BF69CC41F0B300360B67FFBF18BE1CF9F7F0C61ED671916
+ 16EA326C3B708661DED24D0CE7764C6344F61E8A01077B1D18EC8B0F306C6EB4
+ 003B1D647374F7058639B9DA0CBB8F9C236C00C8E9207F836CFFFAED17989D34
+ F10AC394343586C3A72FE3362023CA8DC1B1F4205C7079B9214364E779869959
+ 9A0CE9D3AE33F427A9309C387F15B701C961CE60DB407EF66F3CC9B0B8589FE1
+ DB77880B7266DD62E88A5364387BF9066E03E2821CC09A411A425ACF60A483D6
+ 2839864BD76FE33620CA0FE277982B40B67F83A60310FEF7EF3FC3959B77701B
+ 10EA65CDB07ADB51064200A70120096201BA01006B4F3A16F9FB392100000000
+ 49454E44AE426082}
+ Name = 'PngImage23'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD25200000A4D694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF
+ F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A
+ 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5
+ 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8
+ 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC
+ 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200
+ C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05
+ 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2
+ 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C
+ CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97
+ 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313
+ 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F
+ 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA
+ 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED
+ 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383
+ FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A
+ F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86
+ 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432
+ 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0
+ 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C
+ 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70
+ 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261
+ 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA
+ 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F
+ 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961
+ 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402
+ 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2
+ 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93
+ 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90
+ 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452
+ A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650
+ 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83
+ 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7
+ 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295
+ 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9
+ 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685
+ 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9
+ EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C
+ 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED
+ EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB
+ 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31
+ 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87
+ 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94
+ 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85
+ A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6
+ 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29
+ D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B
+ 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6
+ 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD
+ D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7
+ C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E
+ 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B
+ FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5
+ 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1
+ 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0
+ 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67
+ BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845
+ F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC
+ A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7
+ 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA
+ 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C
+ 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423
+ F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433
+ DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317
+ 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2
+ A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17
+ 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4
+ EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E
+ CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9
+ 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD
+ 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF
+ B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C
+ 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD
+ EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293
+ E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7
+ 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F
+ EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6
+ EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07
+ FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247
+ CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73
+ ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC
+ CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F
+ F73EE77CFEFC2FF784F3FB25D29F33000001794944415478DA639CBC68FB7F06
+ 12404EAC0723329F1164005010AFA63F7FFF31FCFEF397C1DA3F9FE1DC8E69D8
+ 0DB02DDA0F173CDCE788C257E977C269385E17FCFAFD176C730E173BC38C8404
+ B0D8E7CF9F193E7DFA04C6134F9EC4EE027440940B4006809C0E02FFFEFF67F8
+ FEE337D876DFFA130CAB2A8D19D6EE38C6306FE926FC6100F3FBDE4E3B06E7F2
+ 430CEB6A4D19829A4F332C2D3560D8B4E7247106C06CFFF6E317C39F3FFF18C2
+ DACF322C2CD465D876E00C61030EF63A30D8171F60D8DC6801763AC8E6E8EE0B
+ 0C7372B519761F3947D80090D341FE06D9FEF5DB2F303B69E2158629696A0C87
+ 4F5FC66D4046941B8363E941B8E0F2724386C8CEF30C33B33419D2A75D67E84F
+ 52613871FE2A6E0392C39CC1B681FCECDF78926171B13EC3B7EF1017E4CCBAC5
+ D015A7C870F6F20DDC06C405398035833484B49EC188EBD62839864BD76FE336
+ 20CA0FE277982B40B67F83A60310FEF7EF3FC3959B77701B10EA65CDB07ADB51
+ 064200A70120096201BA0100A6C62916A56F74520000000049454E44AE426082}
+ Name = 'PngImage24'
+ Background = clWindow
+ end>
+ Left = 395
+ Bitmap = {}
+ end
+ inherited LargeImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315
+ 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F
+ 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499
+ B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9
+ A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6
+ EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4
+ 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2
+ 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696
+ F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0
+ CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A
+ C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138
+ 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1
+ B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008
+ 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42
+ F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3
+ 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329
+ 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9
+ 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59
+ 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429
+ BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6
+ 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5
+ C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315
+ 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422
+ C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61
+ C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F
+ 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E
+ A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76
+ 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA
+ 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8
+ 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735
+ F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175
+ 682F0000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000032A4944415478DA
+ BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1
+ 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C
+ 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D
+ 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC
+ 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4
+ EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F
+ 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55
+ 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0
+ AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C
+ AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80
+ F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D
+ ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213
+ 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43
+ 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95
+ 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F
+ F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020
+ C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48
+ FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C
+ C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2
+ E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147
+ E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603
+ A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D
+ 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD
+ AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A
+ 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4
+ B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000022C4944415478DA
+ 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF
+ 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2
+ 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0
+ 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1
+ 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141
+ 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06
+ D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022
+ 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020
+ 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679
+ 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8
+ F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907
+ 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F
+ 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8
+ FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE
+ 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC
+ 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430
+ 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4
+ 02140B6805009C1383EFACA508270000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA
+ B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989
+ 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E
+ 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4
+ 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2
+ E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4
+ 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA
+ BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04
+ 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096
+ 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F
+ 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935
+ 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588
+ D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130
+ EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7
+ 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D
+ 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D
+ 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43
+ 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA
+ 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1
+ 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9
+ 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E
+ 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422
+ BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438
+ 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413
+ A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239
+ 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831
+ 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA
+ 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170
+ C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832
+ 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C
+ 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D
+ 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37
+ 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22
+ F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36
+ 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71
+ 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381
+ BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355
+ 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D
+ 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C
+ 4A0000000049454E44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA
+ B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B
+ 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828
+ 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736
+ B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE
+ A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56
+ 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15
+ 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C
+ 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0
+ D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E
+ A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C
+ EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A
+ 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2
+ BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC
+ 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E
+ 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F
+ BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08
+ 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83
+ D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683
+ 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868
+ 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12
+ C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3
+ 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E
+ 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3
+ 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446
+ FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119
+ 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C
+ 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1
+ DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45
+ 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826
+ BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240
+ A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C
+ A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32
+ C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C
+ 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300
+ 00000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000027F4944415478DA
+ 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9
+ 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67
+ F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970
+ 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D
+ 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F
+ E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100
+ 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21
+ 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA
+ 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B
+ C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62
+ F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF
+ 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F
+ C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4
+ 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D
+ 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486
+ C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19
+ 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4
+ 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB
+ 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5
+ 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2
+ FA0000000049454E44AE426082}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000037C4944415478DA
+ B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36
+ 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94
+ 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393
+ 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F
+ 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784
+ FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2
+ E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4
+ CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124
+ 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB
+ 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7
+ C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1
+ 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72
+ 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24
+ C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3
+ 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE
+ 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255
+ 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B
+ 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB
+ B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022
+ F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833
+ B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F
+ E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989
+ 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C
+ 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C
+ E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E
+ 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8
+ 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99
+ 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000
+ 000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA
+ 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731
+ 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67
+ E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D
+ 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72
+ 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3
+ D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965
+ 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF
+ C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8
+ CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880
+ AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F
+ 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31
+ 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6
+ A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621
+ DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5
+ 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9
+ F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2
+ 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066
+ 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24
+ 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621
+ 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA
+ B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058
+ D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60
+ 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F
+ EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1
+ B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE
+ 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6
+ CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71
+ 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C
+ 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12
+ 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E
+ 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59
+ 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED
+ 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8
+ 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D
+ CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182
+ D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382
+ 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A
+ B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3
+ 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5
+ 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6
+ 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE
+ 426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000029E4944415478DA
+ 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382
+ 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58
+ F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30
+ 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7
+ C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12
+ 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD
+ D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA
+ 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287
+ CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341
+ 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14
+ 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511
+ 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B
+ E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC
+ DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6
+ 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10
+ E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84
+ EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17
+ AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02
+ 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187
+ 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B
+ 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090
+ 0000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA
+ ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589
+ F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435
+ F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF
+ CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B
+ 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D
+ 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD
+ 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1
+ A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE
+ 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075
+ F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2
+ 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF
+ A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C
+ D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892
+ 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806
+ 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F
+ EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E
+ 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3
+ 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5
+ DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C
+ A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA
+ F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196
+ 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E
+ 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC
+ BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D
+ 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68
+ 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986
+ F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000
+ 49454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000003784944415478DA
+ B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61
+ AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A
+ BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39
+ 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A
+ 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965
+ 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4
+ 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0
+ E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63
+ 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1
+ 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A
+ B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36
+ FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424
+ 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45
+ DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1
+ 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50
+ 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC
+ 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46
+ FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0
+ 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4
+ 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F
+ 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B
+ 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2
+ D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA
+ 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F
+ 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3
+ EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92
+ 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F
+ 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945
+ 4E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA
+ BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93
+ 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88
+ 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C
+ 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004
+ A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F
+ 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47
+ E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA
+ 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F
+ 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE
+ 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A
+ B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0
+ 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06
+ 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027
+ 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7
+ 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F
+ 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090
+ B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE
+ AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927
+ E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627
+ 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA
+ 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD
+ E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4
+ E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779
+ 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82
+ 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9
+ 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C
+ 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3
+ 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE
+ 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85
+ 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C
+ 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000
+ 000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA
+ AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4
+ 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3
+ A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3
+ 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117
+ CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671
+ 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7
+ B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E
+ 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3
+ 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37
+ 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8
+ 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F
+ 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D
+ F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D
+ AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480
+ 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E
+ C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56
+ 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5
+ CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A
+ 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6
+ 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020
+ D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D
+ D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA
+ 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50
+ C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6
+ 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152
+ D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1
+ 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11
+ 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242
+ 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE
+ 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3
+ B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7
+ 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130
+ 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7
+ 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981
+ 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0
+ 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877
+ 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB
+ 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366
+ 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF
+ 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688
+ F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811
+ F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000
+ 49454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA
+ AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED
+ C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B
+ 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24
+ 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4
+ 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5
+ B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB
+ 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191
+ 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5
+ 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262
+ 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56
+ 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0
+ A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36
+ E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A
+ EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098
+ 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7
+ 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0
+ 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A
+ 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715
+ 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC
+ 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1
+ F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9
+ 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407
+ B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A
+ 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0
+ 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E
+ 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F
+ 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC
+ 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536
+ D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D
+ 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B
+ D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC
+ F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134
+ 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA
+ 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4
+ C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF
+ BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25
+ 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F
+ 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707
+ 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4
+ 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16
+ 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855
+ 88E7298D620000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA
+ 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E
+ 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18
+ D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767
+ F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B
+ 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8
+ C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB
+ B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A
+ 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD
+ 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0
+ 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6
+ 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C
+ 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418
+ 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06
+ 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E
+ 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2
+ 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402
+ 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F
+ 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440
+ 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA
+ 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698
+ 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080
+ 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0
+ 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47
+ 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC
+ 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4
+ 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74
+ D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4
+ 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766
+ 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05
+ F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8
+ 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8
+ FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125
+ 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B
+ FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42
+ 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9
+ 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67
+ E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF
+ 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6
+ 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F
+ 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322
+ 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303
+ 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51
+ 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549
+ 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3
+ 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4
+ FE66E507F40000000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA
+ 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3
+ F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958
+ 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77
+ F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC
+ AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8
+ 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0
+ ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA
+ A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6
+ E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99
+ 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193
+ 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1
+ 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068
+ BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13
+ C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76
+ E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96
+ 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF
+ 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF
+ 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B
+ C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500
+ 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723
+ C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B
+ 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426
+ 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B
+ 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808
+ A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9
+ 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587
+ EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5
+ DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3
+ 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F
+ 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D
+ F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D
+ 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641
+ 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8
+ A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515
+ E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3
+ 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3
+ 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A
+ 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8
+ 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6
+ 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58
+ AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195
+ 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB
+ 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4
+ 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C
+ 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88
+ 2F15D20000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000002814944415478DA
+ 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF
+ 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3
+ EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A
+ 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC
+ 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395
+ E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1
+ 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517
+ 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1
+ 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F
+ 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138
+ BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A
+ 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605
+ 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A
+ 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3
+ 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5
+ 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F
+ C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450
+ 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2
+ 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07
+ CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85
+ 5838D40000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000026D4944415478DA
+ B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806
+ 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775
+ ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C
+ F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB
+ 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB
+ 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3
+ E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A
+ 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D
+ 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7
+ 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B
+ 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3
+ 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4
+ D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922
+ C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C
+ 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556
+ 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F
+ 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9
+ CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69
+ 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0
+ 3F84F988A8E02F75743575B8E251160000000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE000004124944415478DA
+ ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983
+ 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10
+ 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A
+ 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070
+ 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB
+ A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4
+ 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6
+ 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289
+ 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494
+ E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B
+ 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F
+ BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26
+ 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD
+ 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A
+ 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0
+ D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57
+ 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1
+ 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117
+ BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C
+ 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260
+ E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D
+ B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94
+ F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40
+ D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6
+ D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB
+ 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763
+ D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23
+ 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593
+ BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27
+ 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF
+ 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC
+ 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A
+ 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000001B74944415478DA
+ B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434
+ BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31
+ 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47
+ 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60
+ F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B
+ 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284
+ C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D
+ 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4
+ 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C
+ B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5
+ D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3
+ 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555
+ 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE
+ F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E
+ 44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000018C4944415478DA
+ 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E
+ 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F
+ C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1
+ 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414
+ 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB
+ FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE
+ 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3
+ FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F
+ 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397
+ FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD
+ BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5
+ EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01
+ 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000001BE4944415478DA
+ 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80
+ F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3
+ C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978
+ 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9
+ E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1
+ 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850
+ 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7
+ E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3
+ 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988
+ C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70
+ 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F
+ C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5
+ 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F
+ 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42
+ 0000000049454E44AE426082}
+ Name = 'PngImage22'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+ inherited JvAppRegistryStorage: TJvAppRegistryStorage [7]
+ end
+ inherited dsDataTable: TDADataSource [8]
+ end
+ inherited GridPopupMenu: TPopupMenu [9]
+ inherited N2: TMenuItem
+ Visible = False
+ end
+ object N4: TMenuItem [8]
+ Caption = '-'
+ end
+ object Cambiarlasituacin1: TMenuItem [9]
+ Caption = 'Cambiar la situaci'#243'n'
+ Hint =
+ 'Cambiar la situaci'#243'n de la factura seleccionada (Pendiente/Pagad' +
+ 'a)'
+ end
+ object Enviarporemail1: TMenuItem [11]
+ Action = actEnviarEMail
+ end
+ end
+ inherited StatusBarImages: TPngImageList [10]
+ end
+ object JsNuevaFacturaDialog: TJSDialog
+ Content.Strings = (
+ #191'C'#243'mo desea dar de alta la factura?')
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Nueva factura de cliente'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Factura nueva vac'#237'a.'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption = 'Utilizar uno o m'#225's albaranes de cliente.'
+ Value = 300
+ Info.Strings = (
+
+ 'Puede utilizar uno o m'#225's albaranes existentes para dar de alta l' +
+ 'a factura nueva.')
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 168
+ Top = 144
+ end
+ object JsListaFacturasGeneradas: TJSDialog
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Lista de facturas generadas'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ ButtonBar.Buttons = [cbOK]
+ ButtonBar.Cancel = cbOK
+ ButtonBar.UseCancel = False
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 200
+ Top = 144
+ end
+ object JsPrevisualizarDialog: TJSDialog
+ Content.Strings = (
+ 'Elija una opci'#243'n:')
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Previsualizar...'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Previsualizar la factura/s seleccionada/s'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption = 'Previsualizar la lista de facturas actual'
+ Value = 200
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 296
+ Top = 144
+ end
+ object JsImprimirDialog: TJSDialog
+ Content.Strings = (
+ 'Elija una opci'#243'n:')
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Imprimir...'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Imprimir la factura/s seleccionada/s'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption = 'Imprimir la lista de facturas actual'
+ Value = 200
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 328
+ Top = 144
+ end
+ object JsNuevoAbonoDialog: TJSDialog
+ Content.Strings = (
+ #191'C'#243'mo desea dar de alta el abono?')
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Nuevo abono a cliente'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Abono nuevo vac'#237'o.'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption = 'Utilizar la factura de cliente seleccionada.'
+ Value = 200
+ Info.Strings = (
+
+ 'Puede utilizar una factura de cliente para dar de alta el nuevo ' +
+ 'abono.')
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 232
+ Top = 144
+ end
+ object JsListaFacturasNoEliminadas: TJSDialog
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text =
+ 'Las siguientes facturas no han podido ser eliminadas, porque tie' +
+ 'nen recibos con pagos o devoluciones emitidas'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ ButtonBar.Buttons = [cbOK]
+ ButtonBar.Cancel = cbOK
+ ButtonBar.UseCancel = False
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 184
+ Top = 112
+ end
+ object JSInformesDialog: TJSDialog
+ Content.Strings = (
+ 'Seleccione el informe que desea realizar')
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Text = 'Nuevo informe'
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Listado de facturas pendientes.'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption = 'Listado de IVA.'
+ Value = 200
+ end
+ item
+ Caption = 'Listado de facturas'
+ Value = 300
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 450
+ Left = 408
+ Top = 80
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.pas b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.pas
new file mode 100644
index 0000000..be2669e
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProforma.pas
@@ -0,0 +1,497 @@
+unit uEditorFacturasProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, Menus, DB, uDADataTable, JvAppStorage,
+ JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
+ PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems,
+ TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls,
+ JvNavigationPane, uViewGrid, pngimage, JvComponentBase,
+ uEditorGridBase,
+ uBizFacturasCliente, uIEditorFacturasCliente, uFacturasClienteController,
+ uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
+ uViewFacturasCliente, JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces,
+ cxStyles, cxCustomData,
+ cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel,
+ cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView,
+ cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls, cxContainer, cxTextEdit,
+ cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox;
+
+type
+
+ TfEditorFacturasProforma = class(TfEditorGridBase, IEditorFacturasCliente)
+ Cambiarlasituacin1: TMenuItem;
+ N4: TMenuItem;
+ JsNuevaFacturaDialog: TJSDialog;
+ JsListaFacturasGeneradas: TJSDialog;
+ JsPrevisualizarDialog: TJSDialog;
+ JsImprimirDialog: TJSDialog;
+ TBXSubmenuItem2: TTBXSubmenuItem;
+ actNuevaFactura: TAction;
+ TBXItem38: TTBXItem;
+ TBXItem39: TTBXItem;
+ actNuevoAbono: TAction;
+ JsNuevoAbonoDialog: TJSDialog;
+ JsListaFacturasNoEliminadas: TJSDialog;
+ actEnviarEMail: TAction;
+ TBXItem40: TTBXItem;
+ Enviarporemail1: TMenuItem;
+ actInformes: TAction;
+ TBXItem41: TTBXItem;
+ JSInformesDialog: TJSDialog;
+ procedure FormShow(Sender: TObject);
+ procedure actEliminarUpdate(Sender: TObject);
+ procedure actNuevaFacturaExecute(Sender: TObject);
+ procedure actNuevoAbonoExecute(Sender: TObject);
+ procedure actEnviarEMailUpdate(Sender: TObject);
+ procedure actEnviarEMailExecute(Sender: TObject);
+ procedure actInformesExecute(Sender: TObject);
+ procedure OnListaAnosChange(Sender: TObject; const Text: string);
+
+ private
+ FFacturas: IBizFacturaCliente;
+ FController : IFacturasClienteController;
+
+ protected
+ function GetFacturas: IBizFacturaCliente;
+ procedure SetFacturas(const Value: IBizFacturaCliente);
+
+ function GetController : IFacturasClienteController; virtual;
+ procedure SetController (const Value : IFacturasClienteController); virtual;
+
+ procedure NuevoInterno; override;
+ procedure EliminarInterno; override;
+ procedure ModificarInterno; override;
+ procedure DuplicarInterno; override;
+ procedure ImprimirInterno; override;
+ procedure PrevisualizarInterno; override;
+ procedure RefrescarInterno; override;
+
+ public
+ property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
+ property Controller : IFacturasClienteController read GetController write SetController;
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure PonerTitulos(const ATitulo: string = ''); override;
+ end;
+
+
+implementation
+
+uses
+ uDataModuleFacturasCliente, uDataModuleUsuarios, uAlbaranesClienteController, uFactuGES_App,
+ uGenerarFacturasCliAlbCliUtils, //uGenerarFacturasCliPreCliUtils,
+ uBizAlbaranesCliente, uGestorInformesController, uDialogOpcionesImpresionFacturasCliente,
+ uEditorBase, uGridStatusUtils, uDBSelectionListUtils, udialogUtils;
+
+{$R *.dfm}
+
+{
+*************************** TfEditorFacturasCliente ***************************
+}
+procedure TfEditorFacturasProforma.actEliminarUpdate(Sender: TObject);
+begin
+ inherited;
+ if (Sender as TAction).Enabled then
+ (Sender as TAction).Enabled := (FFacturas.SITUACION = 'PENDIENTE');
+end;
+
+procedure TfEditorFacturasProforma.actEnviarEMailExecute(Sender: TObject);
+var
+ AFacturas : IBizFacturaCliente;
+
+begin
+ inherited;
+
+ if ViewGrid.NumSeleccionados = 1 then
+ FController.GenerarEmailFactura(FFacturas)
+ else begin
+ ShowHourglassCursor;
+ try
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
+ AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
+
+ if Assigned(AFacturas) then
+ if FController.EnviarEmailFacturas(AFacturas) then
+ RefrescarInterno;
+ finally
+ AFacturas := NIL;
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.actEnviarEMailUpdate(Sender: TObject);
+begin
+ inherited;
+ if HayDatos and Assigned(ViewGrid) then
+ (Sender as TAction).Enabled := ViewGrid.esSeleccionCeldaDatos
+ and (ViewGrid.NumSeleccionados > 0)
+ else
+ (Sender as TAction).Enabled := False;
+end;
+
+procedure TfEditorFacturasProforma.actInformesExecute(Sender: TObject);
+var
+ Respuesta : Integer;
+ AGestorInformesController : IGestorInformesController;
+
+begin
+ AGestorInformesController := TGestorInformesController.Create;
+ try
+
+ Respuesta := JsInformesDialog.Execute;
+
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsInformesDialog.CustomButtonResult of
+ 100 : begin // Listado de facturas pendientes
+ AGestorInformesController.VerInformeListadoFacturasCliPendientes;
+ end;
+ 200 : begin // Listado de IVA
+ AGestorInformesController.VerInformeIVAClientes;
+ end;
+ 300 : begin // Listado de facturas de cliente
+ AGestorInformesController.VerInformeListadoFacturasCli;
+ end;
+ end;
+ end;
+
+ finally
+ AGestorInformesController := NIL;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.actNuevaFacturaExecute(Sender: TObject);
+begin
+ actNuevo.Execute;
+end;
+
+procedure TfEditorFacturasProforma.actNuevoAbonoExecute(Sender: TObject);
+var
+ Respuesta : Integer;
+ Opcion : Integer;
+begin
+ inherited;
+ //ABONOS
+ if (Facturas.TIPO = CTE_TIPO_FACTURA) then
+ begin
+ Respuesta := JsNuevoAbonoDialog.Execute;
+ //Nos salimos sin hace nada
+ if Respuesta = IDCANCEL then
+ Exit;
+ Opcion := JsNuevoAbonoDialog.CustomButtonResult;
+ end
+ else
+ Opcion := 100;
+
+ case Opcion of
+ 200 : begin // Utilizar factura seleccionada
+ FController.Ver(FController.GenerarAbono(Facturas));
+ actRefrescar.Execute;
+ ViewGrid._FocusedView.DataController.GotoFirst;
+ end;
+ 100 : begin // Abono nuevo vacio
+ if FController.AnadirAbono(Facturas) then
+ FController.Ver(Facturas);
+ end;
+ end;
+end;
+
+constructor TfEditorFacturasProforma.Create(AOwner: TComponent);
+begin
+ inherited;
+
+ FHeaderText := 'Lista de facturas de cliente';
+ FWindowCaption := FHeaderText;
+
+ ViewGrid := frViewFacturasCliente1; // CreateView(TfrViewFacturasCliente) as IViewFacturasCliente;
+end;
+
+destructor TfEditorFacturasProforma.Destroy;
+begin
+ FFacturas := NIL;
+ inherited;
+end;
+
+procedure TfEditorFacturasProforma.DuplicarInterno;
+var
+ AFactura : IBizFacturaCliente;
+begin
+ inherited;
+ AFactura := FController.Duplicar(FFacturas);
+ try
+ FController.Ver(AFactura);
+ finally
+ actRefrescar.Execute;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.EliminarInterno;
+var
+ ACadena : String;
+ AFacturas: IBizFacturaCliente;
+ AllItems: Boolean;
+begin
+ AFacturas := Nil;
+ AllItems := False;
+
+ if MultiSelect and Assigned(ViewGrid) then
+ AllItems := (ViewGrid.NumSeleccionados > 1);
+
+ if AllItems then
+ begin
+ if (Application.MessageBox('¿Desea borrar las facturas/abonos de cliente seleccionados?', 'Atención', MB_YESNO) = IDYES) then
+ begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
+ AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
+ end
+ end
+ else begin
+ if Facturas.TIPO = CTE_TIPO_FACTURA then
+ ACadena := '¿Desea borrar esta factura de cliente?'
+ else
+ ACadena := '¿Desea borrar este abono a cliente?';
+
+ if (Application.MessageBox(PChar(ACadena), 'Atención', MB_YESNO) = IDYES) then
+ AFacturas := Facturas;
+ end;
+
+ if Assigned(AFacturas) then
+ begin
+ if (not FController.Eliminar(AFacturas, AllItems))
+ and (not AllItems) then //Es el caso de querer borrar una factura pendiente cuyos recibos tienen devoluciones
+ begin
+ JsListaFacturasNoEliminadas.Content.Clear;
+ JsListaFacturasNoEliminadas.Content.Add('Ref. factura: ' + AFacturas.REFERENCIA + ' ' + AFacturas.NOMBRE);
+ JsListaFacturasNoEliminadas.Execute;
+ end;
+
+ if AllItems then
+ begin
+ if (AFacturas.DataTable.RecordCount > 0) then
+ begin
+ with AFacturas.DataTable do
+ begin
+ JsListaFacturasNoEliminadas.Content.Clear;
+ First;
+ while not EOF do
+ begin
+ JsListaFacturasNoEliminadas.Content.Add('Ref. factura: ' + AFacturas.REFERENCIA + ' ' + AFacturas.NOMBRE);
+ Next;
+ end;
+ end;
+ JsListaFacturasNoEliminadas.Execute;
+ end;
+ actRefrescar.Execute;
+ end
+ end;
+
+ ViewGrid.GotoFirst;
+end;
+
+procedure TfEditorFacturasProforma.FormShow(Sender: TObject);
+begin
+ cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
+
+ inherited;
+
+ if not Assigned(ViewGrid) then
+ raise Exception.Create('No hay ninguna vista asignada');
+
+ if not Assigned(Facturas) then
+ raise Exception.Create('No hay ninguna factura asignada');
+
+ Facturas.DataTable.Active := True;
+ ViewGrid.GotoFirst;
+end;
+
+function TfEditorFacturasProforma.GetController: IFacturasClienteController;
+begin
+ Result := FController;
+end;
+
+function TfEditorFacturasProforma.GetFacturas: IBizFacturaCliente;
+begin
+ Result := FFacturas;
+end;
+
+procedure TfEditorFacturasProforma.ImprimirInterno;
+var
+ Respuesta : Integer;
+ AFacturas: IBizFacturaCliente;
+ AllItems: Boolean;
+ AVerSello: Boolean;
+ AVerCopia: Boolean;
+begin
+ AFacturas := Nil;
+ AllItems := False;
+ AVerSello := True;
+ AVerCopia := True;
+
+ if MultiSelect and Assigned(ViewGrid) then
+ AllItems := (ViewGrid.NumSeleccionados > 1);
+
+ //Si esta agrupado solo podré imprimir la lista de elementos visibles
+ if not ViewGrid.esSeleccionCeldaDatos then
+ inherited
+ else
+ begin
+ Respuesta := JsImprimirDialog.Execute;
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsImprimirDialog.CustomButtonResult of
+ 200 : begin // Lista de elementos visibles
+ inherited;
+ end;
+ 100 : begin // Elemento Seleccionado
+ if AllItems then
+ begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
+ AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
+ end
+ else
+ AFacturas := Facturas;
+
+ //Preguntamos si desea que en las facturas se vea el Sello
+ if ElegirOpcionesImpresionFacturaCliente(AVerSello, AVerCopia) then
+ if Assigned(AFacturas) then
+ if FController.Print(AFacturas, AllItems, AVerSello, AVerCopia) then
+ RefrescarInterno;
+ end;
+ end;
+ end;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.ModificarInterno;
+begin
+ inherited;
+ FController.Ver(Facturas);
+end;
+
+procedure TfEditorFacturasProforma.NuevoInterno;
+var
+ Respuesta : Integer;
+begin
+ inherited;
+
+ Respuesta := JsNuevaFacturaDialog.Execute;
+
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsNuevaFacturaDialog.CustomButtonResult of
+ 200 : begin // Utilizar presupuestos
+// GenerarFacturaCliPre;
+ actRefrescar.Execute;
+ end;
+ 300 : begin // Utilizar albaranes
+ GenerarFacturaCliAlb;
+ actRefrescar.Execute;
+ end;
+ 100 : begin // Albaran nuevo vacio
+ if FController.Anadir(Facturas) then
+ FController.Ver(Facturas);
+ end;
+ end;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.OnListaAnosChange(Sender: TObject; const Text: string);
+begin
+ Controller.FiltrarAno(Facturas, DynWhereDataTable, Text);
+ if Facturas.DataTable.Active then
+ RefrescarInterno;
+end;
+
+procedure TfEditorFacturasProforma.PonerTitulos(const ATitulo: string);
+var
+ FTitulo : String;
+begin
+ FTitulo := FWindowCaption + ' - ' + AppFactuGES.EmpresaActiva.NOMBRE;
+ inherited PonerTitulos(FTitulo);
+end;
+
+procedure TfEditorFacturasProforma.PrevisualizarInterno;
+var
+ Respuesta : Integer;
+ AFacturas: IBizFacturaCliente;
+ AllItems: Boolean;
+ AVerSello: Boolean;
+ AVerCopia: Boolean;
+begin
+ AFacturas := Nil;
+ AllItems := False;
+ AVerSello := True;
+ AVerCopia := True;
+
+ if MultiSelect and Assigned(ViewGrid) then
+ AllItems := (ViewGrid.NumSeleccionados > 1);
+
+ //Si esta agrupado solo podré imprimir la lista de elementos visibles
+ if not ViewGrid.esSeleccionCeldaDatos then
+ inherited
+ else
+ begin
+ Respuesta := JsPrevisualizarDialog.Execute;
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsPrevisualizarDialog.CustomButtonResult of
+ 200 : begin // Lista de elementos visibles
+ inherited;
+ end;
+ 100 : begin // Elemento Seleccionado
+ if AllItems then
+ begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
+ AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
+ end
+ else
+ AFacturas := Facturas;
+
+ //Preguntamos si desea que en las facturas se vea el Sello
+ if ElegirOpcionesImpresionFacturaCliente(AVerSello, AVerCopia) then
+ if Assigned(AFacturas) then
+ FController.Preview(AFacturas, AllItems, AVerSello, AVerCopia);
+ end;
+ end;
+ end;
+ end;
+end;
+
+procedure TfEditorFacturasProforma.RefrescarInterno;
+begin
+ //Volvemos a cargar los años de las facturas
+ if Assigned(FController) then
+ ListaAnos := FController.DarListaAnosFacturas;
+
+ inherited;
+end;
+
+procedure TfEditorFacturasProforma.SetController(const Value: IFacturasClienteController);
+begin
+ FController := Value;
+
+ if Assigned(FController) then
+ ListaAnos := FController.DarListaAnosFacturas;
+end;
+
+procedure TfEditorFacturasProforma.SetFacturas(const Value: IBizFacturaCliente);
+begin
+ FFacturas := Value;
+
+ if Assigned(FFacturas) then
+ begin
+ //Se guarda el where de la sentencia origen, por si el editor tiene filtros que
+ //afecten a este where y en un futuro se desea volver al where origen (filtro de año))
+ DynWhereDataTable := FFacturas.DataTable.DynamicWhere.Xml;
+
+ dsDataTable.DataTable := FFacturas.DataTable;
+ if Assigned(ViewGrid) then
+ (ViewGrid as IViewFacturasCliente).Facturas := Facturas;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.dfm b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.dfm
new file mode 100644
index 0000000..f70f87c
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.dfm
@@ -0,0 +1,32 @@
+inherited fEditorFacturasProformaPreview: TfEditorFacturasProformaPreview
+ Caption = 'Previsualizar la factura'
+ ClientWidth = 622
+ ExplicitWidth = 630
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Width = 622
+ ExplicitWidth = 622
+ inherited Image1: TImage
+ Left = 595
+ ExplicitLeft = 595
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Width = 622
+ ExplicitWidth = 622
+ inherited tbxMenu: TTBXToolbar
+ ExplicitWidth = 622
+ end
+ inherited TBXToolbar1: TTBXToolbar
+ object TBXItem58: TTBXItem [1]
+ Action = actExportarRTF
+ Images = SmallImages
+ end
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Width = 622
+ ExplicitWidth = 622
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.pas b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.pas
new file mode 100644
index 0000000..ebc9d47
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorFacturasProformaReport.pas
@@ -0,0 +1,50 @@
+unit uEditorFacturasProformaReport;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorPreview,
+{ frxExportImage, frxExportPDF, frxDCtrl, frxClass, frxDMPExport, frxGradient,
+ frxChBox, frxCross, frxRich, frxChart, frxOLE, frxBarcode,
+}
+ JvAppStorage, JvAppRegistryStorage, JvComponentBase,
+ JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls,
+ TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage,
+ ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorFacturasClientePreview,
+ JvExComCtrls, JvStatusBar, frxExportText, frxExportRTF, frxExportMail,
+ frxExportXLS, frxExportImage, frxExportPDF, frxClass, frxDCtrl, frxGradient,
+ frxChBox, frxCross, frxRich, frxOLE, frxBarcode;
+
+type
+ TfEditorFacturasProformaPreview = class(TfEditorPreview, IEditorFacturasClientePreview)
+ TBXItem58: TTBXItem;
+ procedure actExportarRTFExecute(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+
+implementation
+
+{$R *.dfm}
+
+uses
+ uFacturasClienteReportController, uIntegerListUtils, uDialogUtils;
+
+procedure TfEditorFacturasProformaPreview.actExportarRTFExecute(Sender: TObject);
+var
+ I: Integer;
+begin
+ // inherited; <- No llamar al padre
+ if not Assigned(Controller) then
+ raise Exception.Create('No se ha asignado el controlador necesario');
+
+ for I := 0 to ListaID.Count - 1 do
+ if (Controller as IFacturasClienteReportController).ExportToWord(ListaID[I]) then
+ ShowInfoMessage('La factura se ha exportado correctamente.');
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.dfm b/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.dfm
new file mode 100644
index 0000000..5f0a64d
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.dfm
@@ -0,0 +1,6 @@
+inherited fEditorPreview1: TfEditorPreview1
+ Caption = 'fEditorPreview1'
+ ExplicitHeight = 492
+ PixelsPerInch = 96
+ TextHeight = 13
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.pas b/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.pas
new file mode 100644
index 0000000..67cd04f
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uEditorInfFacturasClienteReport.pas
@@ -0,0 +1,30 @@
+unit uEditorInfFacturasClienteReport;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorPreview, frxExportText, frxExportRTF, frxExportMail,
+ frxExportXLS, frxExportImage, frxExportPDF, frxClass, frxDCtrl, frxGradient,
+ frxChBox, frxCross, frxRich, frxOLE, frxBarcode, JvAppStorage,
+ JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
+ StdActns, ActnList, ComCtrls, JvExComCtrls, JvStatusBar, TB2ExtItems,
+ TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls,
+ JvExControls, JvNavigationPane;
+
+type
+ TfEditorPreview1 = class(TfEditorPreview)
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ fEditorPreview1: TfEditorPreview1;
+
+implementation
+
+{$R *.dfm}
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uFacturasProformaViewRegister.pas b/Source/Modulos/Facturas proforma/Views/uFacturasProformaViewRegister.pas
new file mode 100644
index 0000000..f3042a0
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uFacturasProformaViewRegister.pas
@@ -0,0 +1,38 @@
+unit uFacturasProformaViewRegister;
+
+interface
+
+procedure RegisterViews;
+procedure UnregisterViews;
+
+implementation
+
+uses
+ uEditorRegistryUtils, uEditorFacturasCliente, uEditorFacturaCliente,
+ uEditorFacturasClienteReport, uEditorElegirArticulosFacturaCliente,
+ uEditorElegirFacturasCliente, uDialogOpcionesImpresionFacturasCliente,
+ uDialogListaFacturasEnvioEMail;
+
+procedure RegisterViews;
+begin
+ EditorRegistry.RegisterClass(TfEditorFacturasCliente, 'EditorFacturasCliente');
+ EditorRegistry.RegisterClass(TfEditorFacturaCliente, 'EditorFacturaCliente');
+ EditorRegistry.RegisterClass(TfEditorElegirArticulosFacturaCliente, 'EditorElegirArticulosFacturaCliente');
+ EditorRegistry.RegisterClass(TfEditorElegirFacturasCliente, 'EditorElegirFacturasCliente');
+ EditorRegistry.RegisterClass(TfEditorFacturasClientePreview, 'EditorFacturasClientePreview');
+ EditorRegistry.RegisterClass(TfDialogOpcionesImpresionFacturasCliente, 'DialogOpcionesImpresionFacturasCliente');
+ EditorRegistry.RegisterClass(TfDialogListaFacturasEnvioEMail, 'DialogListaFacturasEnvioEMail');
+end;
+
+procedure UnregisterViews;
+begin
+ EditorRegistry.UnRegisterClass(TfEditorFacturasCliente);
+ EditorRegistry.UnRegisterClass(TfEditorFacturaCliente);
+ EditorRegistry.UnRegisterClass(TfEditorElegirArticulosFacturaCliente);
+ EditorRegistry.UnRegisterClass(TfEditorElegirFacturasCliente);
+ EditorRegistry.UnRegisterClass(TfEditorFacturasClientePreview);
+ EditorRegistry.UnRegisterClass(TfDialogOpcionesImpresionFacturasCliente);
+ EditorRegistry.UnRegisterClass(TfDialogListaFacturasEnvioEMail);
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.dfm b/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.dfm
new file mode 100644
index 0000000..0b44243
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.dfm
@@ -0,0 +1,437 @@
+inherited frViewDatosYSeleccionClienteFacturaProforma: TfrViewDatosYSeleccionClienteFacturaProforma
+ Width = 467
+ Height = 234
+ ExplicitWidth = 467
+ ExplicitHeight = 234
+ object dxLayoutControl1: TdxLayoutControl
+ Left = 0
+ Top = 0
+ Width = 467
+ Height = 234
+ Margins.Left = 0
+ Margins.Top = 0
+ Margins.Right = 0
+ Margins.Bottom = 0
+ Align = alClient
+ ParentBackground = True
+ TabOrder = 0
+ TabStop = False
+ AutoContentSizes = [acsWidth, acsHeight]
+ DesignSize = (
+ 467
+ 234)
+ object edtlNombre: TcxDBTextEdit
+ Left = 62
+ Top = 41
+ Anchors = [akLeft, akTop, akRight]
+ AutoSize = False
+ DataBinding.DataField = 'NOMBRE'
+ DataBinding.DataSource = dsCliente
+ Enabled = False
+ ParentFont = False
+ Properties.ReadOnly = True
+ Properties.UseLeftAlignmentOnEditing = False
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 2
+ Height = 21
+ Width = 224
+ end
+ object edtNIFCIF: TcxDBTextEdit
+ Left = 354
+ Top = 41
+ Anchors = [akLeft, akTop, akRight]
+ AutoSize = False
+ DataBinding.DataField = 'NIF_CIF'
+ DataBinding.DataSource = dsCliente
+ Enabled = False
+ ParentFont = False
+ Properties.ReadOnly = True
+ Properties.UseLeftAlignmentOnEditing = False
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 3
+ Height = 21
+ Width = 103
+ end
+ object Button1: TBitBtn
+ Left = 10
+ Top = 10
+ Width = 115
+ Height = 25
+ Action = actElegirContacto
+ Caption = 'Elegir un cliente'
+ TabOrder = 0
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000000000000000000000000000000000000FF00FF00FF00
+ FF00FF00FF00EB00EB00C507C600AB13AD00A119A2009F19A000A215A400AA10
+ AC00B608B800CE00CE00EF00EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00B426B000526840004A823400478F310043962F0042992F0043972F004690
+ 3100488533004B7237005A405100D201D200FF00FF00FF00FF00FF00FF00FF00
+ FF0062654E004F81350047903100409C2E003AA62C0038AA2B0039A72B003E9E
+ 2D00459230004D84340056753800A0189F00FF00FF00FF00FF00FF00FF00FF00
+ FF005F6B4C004B89330042992F0039A82B0032B428002EBB260031B6270037AB
+ 2A00409C2E00498C3200527B3600B015B100FF00FF00FF00FF00FF00FF00FF00
+ FF0090488700488D32003E9E2D0035AF290035B631007ACB7B002DBF280033B2
+ 28003DA12D0047903100576A4800EC01EC00FF00FF00FF00FF00FF00FF00FF00
+ FF00F008F1005F7351003E9F2D0034B0290080AC8100D2D3D30081BB820032B2
+ 28003DA22D004A863A00C519C500FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00EE09EF007861730036923E00598CAE00498CBB004A81A6002B70
+ 3A00606D5900D613D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00EA0CF400608CD00054A2D80053A1D6004F9DD300488B
+ C2009D11AC00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF008C67DE005CA9DD005CA9DD005AA7DC0056A4D900519F
+ D400565FAB00EA00EA00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00EC0DF60060A7DE0063B0E30063B0E30061AEE1005CA9DD0056A4
+ D9004E94CC00C105C600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00C532ED0066B2E5006BB7E9006BB7E90067B3E60061AEE1005AA7
+ DC00539FD500A817BE00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00BA3AE7004989B1004A85AC005895BD0068B2E30064B0E4005CA9
+ DE0053A0D400AA1BC300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00CA23E8005098C400539AC7004E93BE00437DA2005190BA005198
+ C6003C79A000BE08C300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00F804FC006995D40062ACDA005DA6D3005299C6004284AD003C7F
+ A900535AA100F300F300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00C140ED0071BAEA0068B2E00059A1CF004990BC004378
+ AA00C315D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00C83EF000808BDF00668BCC007C60C700D116
+ E400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00}
+ end
+ object Button2: TBitBtn
+ Left = 131
+ Top = 10
+ Width = 143
+ Height = 25
+ Action = actAnadirContacto
+ Caption = 'Dar de alta un cliente'
+ TabOrder = 1
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000000000000000000000000000000000000FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947
+ 3100694731006947310069473100694731006947310069473100694731006947
+ 3100694731006947310069473100694731006947310069473100D5BFB100F6F2
+ EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2
+ 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80
+ 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5
+ CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8
+ 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB
+ D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC
+ 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0
+ DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8
+ CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4
+ DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF
+ FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8
+ E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF
+ FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC
+ E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6
+ FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0
+ ED00F2ECE800006000000060000000600000B7A2930069473100D5BFB100E9F6
+ FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4
+ F100F7A073000060000033CB510000600000B7A2930069473100D5BFB100F4FA
+ FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB000060
+ 0000006000000060000040D86500006000000060000000600000D5BFB100FFFF
+ FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF000060
+ 000060F898005AF28F004DE57A0040D865003AD25C0000600000D5BFB100FFFF
+ FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF000060
+ 000000600000006000005AF28F00006000000060000000600000D5BFB100D5BF
+ B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF
+ B100D5BFB1000060000060F8980000600000D5BFB100D5BFB100FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00006000000060000000600000FF00FF00FF00FF00}
+ end
+ object Button3: TBitBtn
+ Left = 265
+ Top = 199
+ Width = 192
+ Height = 25
+ Action = actVerContacto
+ Caption = 'Ver ficha completa del cliente...'
+ TabOrder = 6
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000000000000000000000000000000000000FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947
+ 3100694731006947310069473100694731006947310069473100694731006947
+ 3100694731006947310069473100694731006947310069473100D5BFB100F6F2
+ EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2
+ 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80
+ 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5
+ CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8
+ 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB
+ D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC
+ 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0
+ DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8
+ CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4
+ DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF
+ FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8
+ E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF
+ FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC
+ E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6
+ FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0
+ ED00F2ECE800EFE8E300EDE4DF00EAE0DA00B7A2930069473100D5BFB100E9F6
+ FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4
+ F100F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100F4FA
+ FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB00FAF8
+ F600F7F4F100F5F0ED00F2ECE800EFE8E300B7A2930069473100D5BFB100FFFF
+ FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF00FDFC
+ FB00F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100FFFF
+ FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF00FFFF
+ FF00FEFEFD00FCFAF900F9F6F400F6F2EF00F3EEEA0069473100D5BFB100D5BF
+ B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF
+ B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+ FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00}
+ end
+ object Button4: TButton
+ Left = 434
+ Top = 68
+ Width = 23
+ Height = 25
+ Action = actElegirDireccion
+ TabOrder = 5
+ end
+ object edtDireccion: TcxMemo
+ Left = 62
+ Top = 68
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 4
+ Height = 61
+ Width = 403
+ end
+ object dxLayoutControl1Group_Root: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControl1Group1: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Item7: TdxLayoutItem
+ Caption = 'Button1'
+ ShowCaption = False
+ Control = Button1
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item8: TdxLayoutItem
+ Caption = 'Button2'
+ ShowCaption = False
+ Control = Button2
+ ControlOptions.ShowBorder = False
+ end
+ end
+ object dxLayoutControl1Group2: TdxLayoutGroup
+ AutoAligns = [aaHorizontal]
+ AlignVert = avClient
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControl1Group4: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Item1: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Nombre:'
+ Control = edtlNombre
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item2: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ Caption = 'NIF/CIF:'
+ Control = edtNIFCIF
+ ControlOptions.ShowBorder = False
+ end
+ end
+ object dxLayoutControl1Group3: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Item3: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Direcci'#243'n:'
+ Control = edtDireccion
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item5: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ Caption = 'Button4'
+ ShowCaption = False
+ Control = Button4
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ object dxLayoutControl1Item9: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ Caption = 'Button3'
+ ShowCaption = False
+ Control = Button3
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ object dsCliente: TDADataSource
+ Left = 400
+ Top = 8
+ end
+ object ActionList1: TActionList
+ Images = PngImageList
+ Left = 368
+ Top = 8
+ object actElegirContacto: TAction
+ Caption = 'Elegir un cliente'
+ ImageIndex = 1
+ OnExecute = actElegirContactoExecute
+ end
+ object actAnadirContacto: TAction
+ Caption = 'Dar de alta un cliente'
+ ImageIndex = 0
+ OnExecute = actAnadirContactoExecute
+ end
+ object actVerContacto: TAction
+ Caption = 'Ver ficha completa del cliente...'
+ ImageIndex = 2
+ OnExecute = actVerContactoExecute
+ OnUpdate = actVerContactoUpdate
+ end
+ object actElegirDireccion: TAction
+ Caption = '...'
+ OnExecute = actElegirDireccionExecute
+ OnUpdate = actElegirDireccionUpdate
+ end
+ end
+ object PngImageList: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000002224944415478DA
+ 95935D48936114C77FCB36584A6064161515DEA441108B240293E8A682246805
+ DEA45020F40196505D081242DE94512B8C20169937056914D52E726B6083B114
+ D44CD3D51A216BB6656B5FEF677B5FF31D23033DF070CE03CFFFF73F1CCE6362
+ 29D1806AD44E4C5A32F5F58FAA8BD5D73DD8465757034D4D4EFA4E8C62000ED7
+ 56E997647490DFE131BD2ED9584971D98EB9478D2603D279B39EE6733DC6DD00
+ 68E2EF7E07E95F2291688C48629ABDC71DACABD8AD0334E7B420104D24F4A3D5
+ DDD707E60087F66C2234D0CECF2F41643987556566676799C9C4387AD18FF964
+ 91E178EA522DF73ADC851D1CA85ECD27D77948995861B552844C2A9962303441
+ DD051FA22473E5095C735B3972DAC6D3DB016EED7BC9FD47CFE601E57CF3B661
+ C966D1E62C880299549A696915B6639D4892A243D6B6AC349C0B00DA0C22EF7B
+ 484EBDCA015424512491125036D751B1CBAE8BB5330F12459937EF860A01DEA0
+ 8BA0FB0E5B154BAE832C810CACDF594F4DD5C17FC45AF6FA87F3800D95022DFD
+ ADC47E84682CDF8F222A3C9CF1303915E6C3E5495DDC7AE379C14E546F5F9307
+ F8E4C7BC187F4BA6344E49D24C6E8A24AD12E65809A1895102CD6386B3F8B793
+ C0F0C73CC0196927188E2297651096A7D096D4922D6659DCC2E7AF43F8CE8C70
+ F5AEEBFF1D9CF5D889C7230BAE6F696939BDF6D7BAABACA87A567279647C320F
+ A8B16DA1BBD7B3A47FA5850168EB702C596C6CA2AA2EFA332E187F0080F1503E
+ 182A98A90000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AC400000AC401666D82D4000002A94944415478DA
+ 7D925D48536118C79FF3B5AF36DD66B639CB924243225010BC49BA914004CDE8
+ E32228B482EA4689A22289C8CBA28B32B1061688902912D28D16991F6062B2DC
+ 45921FB954669BF39C9D6DE7EC9CF3EEBC9D2D8C2CB7079E9BF779FEBFF7F922
+ 30C69034822060D3665F5F3A0B90B8C672FCAEC07AD8E35DF0DFBFE3F64EC05F
+ F647F72FC0DB75AED1E1B43D138438C9B26108B11C0443BC30ECF959D731303F
+ 9411D0D35C612C2ADBEF3319F5B992AC402412037F9003A4C8E05F17679BDA3E
+ 976BA9D1F4807B95552E877D90222910250556023170E66481D900F0CD17C0AD
+ 5DDE63F3CBFC505AC0685B6DE34654762B88009B350B8AF658815011C8521C04
+ 518487DD530D9D83BECEB480C98EDA13F9798E5E9A61526F098440D1CA572409
+ 24298EEFBA271B7BC756D203FA5A8FE49516EDF3313A5D8AA0AAAAD6BF929A01
+ CFC7505DCBBBAAD590349C710BD3EEFA57D916D3A954920648249255283031B3
+ 3A7BE1D164A5F61CCC0878D15C917FA8C43165D6334E558B25DBD80847E51BCF
+ A79B3E7D65DB33AEF1E04D570EE5723DB513C4C966E9006101ED0662043C6697
+ 30B7DB3021CE6D5C5EEA58FAB22DE0F0ADBD36D25E38A6E6E2126413E00CAA81
+ FAE27AE85FEB876EF10D30DC0E2083542432F3E3F8E2CBC5F7FF01CA5A8E3E21
+ 6CC6AB8A264636110C7A80EADC2AE88B0E004474C0B026A035C76BF2B2A7ED43
+ 29E671680BA0FC76B50F5BC902641501658B90304BA0EA11100A05544C0774D8
+ 0834A7396B04DFE8C8E9B58FC19EAD80EB358B84852E44D9F1DF62930C9856B5
+ 6320801419A0A27AA079430AB4303E722530EE6FDF3A838B15E729B3E50195C3
+ D855B34A247F074A8BA91A40A2808C91803955E6E70233F36F3D0D58C6DEEDD6
+ B8D35040179B9DA602305266AC028925A4A0B822A090C20BAB09BF96F35D736E
+ 53F70B90E997F07974AFDF0000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001EC4944415478DA
+ A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B
+ A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842
+ 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B
+ 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB
+ 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F
+ 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C
+ 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C
+ 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9
+ 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358
+ 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8
+ BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21
+ 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991
+ 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA
+ 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06
+ 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF
+ C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end>
+ Left = 304
+ Top = 8
+ Bitmap = {}
+ end
+ object dsFactura: TDADataSource
+ Left = 336
+ Top = 8
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.pas b/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.pas
new file mode 100644
index 0000000..92e43d8
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.pas
@@ -0,0 +1,386 @@
+unit uViewDatosYSeleccionClienteFacturaProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel,
+ cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos,
+ ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit,
+ pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask,
+ DBCtrls, uClientesController, dxLayoutControl, Buttons, uDAInterfaces,
+ cxMaskEdit, cxButtonEdit, uBizFacturasCliente, uBizDireccionesContacto,
+ uDireccionesContactoController, Menus, cxLookAndFeelPainters, cxButtons,
+ cxMemo;
+
+type
+ IViewDatosYSeleccionClienteFacturaCliente = interface(IViewBase)
+ ['{0336F03C-3349-4368-BF63-D03E6F741069}']
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+
+ function GetCliente: IBizCliente;
+ procedure SetCliente(Value: IBizCliente);
+ property Cliente: IBizCliente read GetCliente write SetCliente;
+
+{ function GetID_Cliente: integer;
+ procedure SetID_Cliente(const Value: integer);
+ property ID_Cliente: integer read GetID_Cliente write SetID_Cliente;}
+
+ function GetOnClienteChanged : TNotifyEvent;
+ procedure SetOnClienteChanged (const Value : TNotifyEvent);
+ property OnClienteChanged : TNotifyEvent read GetOnClienteChanged
+ write SetOnClienteChanged;
+
+ procedure ElegirDireccionCliente;
+ procedure ElegirCliente;
+ procedure VerFichaCliente;
+ procedure AnadirNuevoCliente;
+ procedure RefrescarDireccion;
+ end;
+
+ TfrViewDatosYSeleccionClienteFacturaProforma = class(TfrViewBase, IViewDatosYSeleccionClienteFacturaCliente)
+ dsCliente: TDADataSource;
+ ActionList1: TActionList;
+ actElegirContacto: TAction;
+ actAnadirContacto: TAction;
+ actVerContacto: TAction;
+ PngImageList: TPngImageList;
+ dxLayoutControl1Group_Root: TdxLayoutGroup;
+ dxLayoutControl1: TdxLayoutControl;
+ dxLayoutControl1Item1: TdxLayoutItem;
+ edtlNombre: TcxDBTextEdit;
+ dxLayoutControl1Item2: TdxLayoutItem;
+ edtNIFCIF: TcxDBTextEdit;
+ Button1: TBitBtn;
+ dxLayoutControl1Item7: TdxLayoutItem;
+ Button2: TBitBtn;
+ dxLayoutControl1Item8: TdxLayoutItem;
+ Button3: TBitBtn;
+ dxLayoutControl1Item9: TdxLayoutItem;
+ dxLayoutControl1Group1: TdxLayoutGroup;
+ dxLayoutControl1Group2: TdxLayoutGroup;
+ dsFactura: TDADataSource;
+ actElegirDireccion: TAction;
+ dxLayoutControl1Group4: TdxLayoutGroup;
+ Button4: TButton;
+ dxLayoutControl1Item5: TdxLayoutItem;
+ dxLayoutControl1Item3: TdxLayoutItem;
+ edtDireccion: TcxMemo;
+ dxLayoutControl1Group3: TdxLayoutGroup;
+ procedure actElegirContactoExecute(Sender: TObject);
+ procedure actAnadirContactoExecute(Sender: TObject);
+ procedure actVerContactoUpdate(Sender: TObject);
+ procedure edtDireccionPropertiesButtonClick(Sender: TObject;
+ AButtonIndex: Integer);
+ procedure actVerContactoExecute(Sender: TObject);
+ procedure actElegirDireccionUpdate(Sender: TObject);
+ procedure actElegirDireccionExecute(Sender: TObject);
+ procedure actElegirPersonaContactoUpdate(Sender: TObject);
+
+ private
+ FOnClienteChanged : TNotifyEvent;
+ FMsgElegirCliente: String;
+ protected
+ FClientesController : IClientesController;
+ FDireccionesController : IDireccionesContactoController;
+ FFactura : IBizFacturaCliente;
+ FCliente : IBizCliente;
+ FDireccion : IBizDireccionesContacto;
+ function GetCliente: IBizCliente; virtual;
+ procedure SetCliente(Value: IBizCliente); virtual;
+ function GetOnClienteChanged : TNotifyEvent;
+ procedure SetOnClienteChanged (const Value : TNotifyEvent);
+ procedure SetReadOnly(Value: Boolean); override;
+ function GetID_Cliente: integer; virtual;
+ procedure SetID_Cliente(const Value: integer); virtual;
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+ procedure EscribirTextoDireccion;
+ procedure CopiarDireccionAFactura;
+ procedure LimpiarDireccionDeFactura;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure ElegirDireccionCliente;
+ procedure ElegirCliente;
+ procedure VerFichaCliente;
+ procedure AnadirNuevoCliente;
+ procedure RefrescarDireccion;
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ property Cliente: IBizCliente read GetCliente write SetCliente;
+ property OnClienteChanged : TNotifyEvent read GetOnClienteChanged write SetOnClienteChanged;
+ property ID_Cliente: integer read GetID_Cliente write SetID_Cliente;
+ end;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ uDataModuleClientes, Math, uCustomView, uBizContactosPersonal, uDialogUtils;
+
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirContactoExecute(Sender: TObject);
+begin
+ ElegirCliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirDireccionExecute(
+ Sender: TObject);
+begin
+ inherited;
+ ElegirDireccionCliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirDireccionUpdate(
+ Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := Assigned(FCliente.Direcciones) and
+ (FCliente.Direcciones.Active) and (FCliente.Direcciones.RecordCount > 0);
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirPersonaContactoUpdate(
+ Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := Assigned(FCliente.Personal) and
+ (FCliente.Personal.Active) and (FCliente.Personal.RecordCount > 0);
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actAnadirContactoExecute(
+ Sender: TObject);
+begin
+ AnadirNuevoCliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actVerContactoExecute(
+ Sender: TObject);
+begin
+ inherited;
+ VerFichaCliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.actVerContactoUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0);
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.AnadirNuevoCliente;
+var
+ ACliente : IBizCliente;
+begin
+ inherited;
+ ACliente := (FClientesController.Nuevo as IBizCliente);
+ FClientesController.Ver(ACliente);
+ Self.Cliente := ACliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.CopiarDireccionAFactura;
+begin
+ FFactura.Edit;
+ FFactura.ID_DIRECCION := FDireccion.ID;
+ FFactura.CALLE := FDireccion.CALLE;
+ FFactura.POBLACION := FDireccion.POBLACION;
+ FFactura.CODIGO_POSTAL := FDireccion.CODIGO_POSTAL;
+ FFactura.PROVINCIA := FDireccion.PROVINCIA;
+
+ FFactura.IMPORTE_PORTE := FDireccion.PORTE;
+end;
+
+constructor TfrViewDatosYSeleccionClienteFacturaProforma.Create(AOwner: TComponent);
+begin
+ inherited;
+ FMsgElegirCliente := 'Elija el cliente al que se le realizará la factura.';
+ FClientesController := TClientesController.Create;
+ FDireccionesController := TDireccionesContactoController.Create;
+
+ edtlNombre.Enabled := False;
+ edtNIFCIF.Enabled := False;
+ edtDireccion.Enabled := False;
+end;
+
+destructor TfrViewDatosYSeleccionClienteFacturaProforma.Destroy;
+begin
+ FClientesController := NIL;
+ FDireccionesController := NIL;
+ inherited;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.edtDireccionPropertiesButtonClick(
+ Sender: TObject; AButtonIndex: Integer);
+begin
+ inherited;
+ ElegirDireccionCliente;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.ElegirCliente;
+var
+ ACliente : IBizCliente;
+begin
+ inherited;
+ ACliente := (FClientesController.ElegirContacto(FClientesController.BuscarTodos, FMsgElegirCliente, False) as IBizCliente);
+
+ if Assigned(ACliente) then
+ Self.Cliente := ACliente;
+ ACliente := Nil;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.ElegirDireccionCliente;
+var
+ ADireccion : IBizDireccionesContacto;
+begin
+ inherited;
+ FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
+
+ if FDireccion.IDIsNull then
+ LimpiarDireccionDeFactura
+ else
+ CopiarDireccionAFactura;
+
+ EscribirTextoDireccion;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.EscribirTextoDireccion;
+var
+ ACadena : String;
+begin
+ ACadena := '';
+
+ if Assigned(FDireccion) then
+ ACadena := Format('%s %s %s %s',
+ [FFactura.CALLE, FFactura.POBLACION,
+ FFactura.CODIGO_POSTAL, FFactura.PROVINCIA]);
+
+ edtDireccion.Text := ACadena;
+end;
+
+function TfrViewDatosYSeleccionClienteFacturaProforma.GetCliente: IBizCliente;
+begin
+ Result := FCliente;
+end;
+
+function TfrViewDatosYSeleccionClienteFacturaProforma.GetID_Cliente: integer;
+begin
+ Result := -1;
+ if Assigned(FCliente) then
+ Result := FCliente.ID;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetCliente(Value: IBizCliente);
+begin
+ FCliente := Value;
+ if Assigned(FCliente) then
+ begin
+ dsCliente.DataTable := FCliente.DataTable;
+
+ if not FCliente.DataTable.Active then
+ FCliente.DataTable.Active := True;
+
+ if FCliente.Direcciones.RecordCount > 0 then
+ ElegirDireccionCliente
+ else
+ RefrescarDireccion;
+ end
+ else begin
+ dsCliente.DataTable := NIL;
+ FCliente := NIL;
+ FDireccion := NIL;
+ end;
+
+ if Assigned(FOnClienteChanged) then
+ FOnClienteChanged(Self);
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetID_Cliente(const Value: integer);
+begin
+ Self.Cliente := IBizCliente(FClientesController.Buscar(Value));
+end;
+
+function TfrViewDatosYSeleccionClienteFacturaProforma.GetOnClienteChanged: TNotifyEvent;
+begin
+ Result := FOnClienteChanged;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.LimpiarDireccionDeFactura;
+begin
+ FFactura.Edit;
+ FFactura.ClearField('ID_DIRECCION');
+ FFactura.ClearField('CALLE');
+ FFactura.ClearField('POBLACION');
+ FFactura.ClearField('CODIGO_POSTAL');
+ FFactura.ClearField('PROVINCIA');
+ FFactura.ClearField('IMPORTE_PORTE');
+end;
+
+function TfrViewDatosYSeleccionClienteFacturaProforma.GetFactura: IBizFacturaCliente;
+begin
+ Result := FFactura;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.RefrescarDireccion;
+begin
+ FDireccion := FDireccionesController.Nuevo;
+
+ if (not FFactura.ID_DIRECCIONIsNull) and
+ (FDireccionesController.Localizar(FCliente.Direcciones, FFactura.ID_DIRECCION)) then
+ FDireccionesController.CopiarDireccion(FCliente.Direcciones, FDireccion)
+ else
+ FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
+
+ EscribirTextoDireccion;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetOnClienteChanged(
+ const Value: TNotifyEvent);
+begin
+ FOnClienteChanged := Value;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetFactura(
+ const Value: IBizFacturaCliente);
+begin
+ FFactura := Value;
+ if Assigned(FFactura) then
+ begin
+ dsFactura.DataTable := FFactura.DataTable;
+
+ FCliente := FFactura.Cliente;
+ dsCliente.DataTable := FCliente.DataTable;
+
+ if not FCliente.DataTable.Active then
+ FCliente.DataTable.Active := True;
+
+ RefrescarDireccion;
+ end
+ else begin
+ dsFactura.DataTable := NIL;
+ FCliente := NIL;
+ FDireccion := NIL;
+ end;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetReadOnly(Value: Boolean);
+begin
+ inherited;
+
+ if (csLoading in Self.ComponentState) then
+ Exit;
+
+ actAnadirContacto.Enabled := not ReadOnly;
+ actElegirContacto.Enabled := not ReadOnly;
+end;
+
+procedure TfrViewDatosYSeleccionClienteFacturaProforma.VerFichaCliente;
+begin
+ if not Assigned(Cliente) then
+ ShowErrorMessage('No se ha indicado un cliente', 'La factura no tiene ningún cliente asociado a mostrar.')
+ else begin
+ FClientesController.Ver(Cliente);
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.dfm b/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.dfm
new file mode 100644
index 0000000..83d9192
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.dfm
@@ -0,0 +1,100 @@
+inherited frViewDetallesFacturaProforma: TfrViewDetallesFacturaProforma
+ inherited ToolBar1: TToolBar
+ Height = 73
+ ExplicitHeight = 73
+ inherited ToolButton3: TToolButton
+ Wrap = False
+ end
+ inherited ToolButton4: TToolButton
+ Left = 278
+ Top = 0
+ ExplicitLeft = 278
+ ExplicitTop = 0
+ end
+ inherited ToolButton14: TToolButton
+ Left = 334
+ Top = 0
+ ExplicitLeft = 334
+ ExplicitTop = 0
+ end
+ inherited FontName: TJvFontComboBox
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited FontSize: TEdit
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited UpDown1: TUpDown
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited ToolButton13: TToolButton
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited ToolButton6: TToolButton
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited ToolButton7: TToolButton
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited ToolButton8: TToolButton
+ Top = 22
+ ExplicitTop = 22
+ end
+ inherited ToolButton12: TToolButton
+ Left = 0
+ Top = 22
+ Wrap = True
+ ExplicitLeft = 0
+ ExplicitTop = 22
+ ExplicitHeight = 27
+ end
+ inherited ToolButton9: TToolButton
+ Left = 0
+ Top = 49
+ ExplicitLeft = 0
+ ExplicitTop = 49
+ end
+ inherited ToolButton10: TToolButton
+ Left = 145
+ Top = 49
+ ExplicitLeft = 145
+ ExplicitTop = 49
+ end
+ inherited ToolButton11: TToolButton
+ Left = 270
+ Top = 49
+ ExplicitLeft = 270
+ ExplicitTop = 49
+ end
+ end
+ inherited cxGrid: TcxGrid
+ Top = 99
+ Height = 205
+ ExplicitTop = 99
+ ExplicitHeight = 205
+ inherited cxGridView: TcxGridDBTableView
+ inherited cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn
+ Visible = True
+ end
+ end
+ end
+ inherited TBXDock1: TTBXDock
+ Top = 73
+ ExplicitTop = 73
+ inherited TBXToolbar1: TTBXToolbar
+ object TBXItem18: TTBXItem [0]
+ Action = actAnadirArticulos
+ Caption = 'A'#241'adir art'#237'culos...'
+ DisplayMode = nbdmImageAndText
+ end
+ inherited TBXSubmenuItem1: TTBXSubmenuItem
+ Visible = False
+ end
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.pas b/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.pas
new file mode 100644
index 0000000..4ec2e5d
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewDetallesFacturaProforma.pas
@@ -0,0 +1,82 @@
+unit uViewDetallesFacturaProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewDetallesBase, cxStyles, cxCustomData, cxGraphics, cxFilter,
+ cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList,
+ uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls,
+ cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit,
+ Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, StdActns, ExtActns,
+ JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar,
+ uControllerDetallesArticulos, uViewDetallesArticulos, uBizFacturasCliente,
+ uDAInterfaces, cxDropDownEdit, cxButtonEdit, Menus, cxGridCustomPopupMenu,
+ cxGridPopupMenu, cxEditRepositoryItems, uViewDetallesArticulosParaVenta;
+
+type
+ IViewDetallesFacturaCliente = interface(IViewDetallesArticulos)
+ ['{0EEC7246-B2FD-4F93-AB15-AA12D6E67302}']
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ end;
+
+ TfrViewDetallesFacturaProforma = class(TfrViewDetallesArticulosParaVenta, IViewDetallesFacturaCliente)
+ TBXItem18: TTBXItem;
+ protected
+ FFactura: IBizFacturaCliente;
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+
+ procedure AnadirArticulosInterno; override;
+ procedure RellenarArticulosInterno; override;
+ function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
+
+ public
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ end;
+
+implementation
+{$R *.dfm}
+
+uses uDetallesFacturaClienteController;
+
+{ TfrViewDetallesFacturaCliente }
+
+function TfrViewDetallesFacturaProforma.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
+begin
+ if (Factura.TIPO = CTE_TIPO_ABONO) then
+ Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID, -1)
+ else
+ Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID);
+end;
+
+procedure TfrViewDetallesFacturaProforma.AnadirArticulosInterno;
+begin
+ if (Factura.TIPO = CTE_TIPO_ABONO) then
+ (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, true, -1)
+ else
+ (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente);
+end;
+
+function TfrViewDetallesFacturaProforma.GetFactura: IBizFacturaCliente;
+begin
+ Result := FFactura;
+end;
+
+procedure TfrViewDetallesFacturaProforma.RellenarArticulosInterno;
+begin
+ if (Factura.TIPO = CTE_TIPO_ABONO) then
+ (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False, -1)
+ else
+ (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False);
+end;
+
+procedure TfrViewDetallesFacturaProforma.SetFactura(const Value: IBizFacturaCliente);
+begin
+ FFactura := Value;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.dfm b/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.dfm
new file mode 100644
index 0000000..8d80bfe
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.dfm
@@ -0,0 +1,70 @@
+inherited frViewElegirArticulosFacturasProforma: TfrViewElegirArticulosFacturasProforma
+ inherited cxGrid: TcxGrid
+ inherited cxGridView: TcxGridDBTableView
+ inherited cxGridViewINVENTARIABLE: TcxGridDBColumn
+ Visible = False
+ VisibleForCustomization = False
+ end
+ inherited cxGridViewCOMISIONABLE: TcxGridDBColumn
+ Visible = False
+ VisibleForCustomization = False
+ end
+ inherited cxGridViewTIENDA_WEB: TcxGridDBColumn
+ Visible = False
+ VisibleForCustomization = False
+ end
+ inherited cxGridViewPRECIO_COSTE: TcxGridDBColumn
+ Caption = 'Precio coste'
+ end
+ inherited cxGridViewDESCUENTO: TcxGridDBColumn
+ Caption = 'Descuento'
+ end
+ inherited cxGridViewPRECIO_NETO: TcxGridDBColumn
+ Caption = 'Precio neto'
+ Visible = False
+ VisibleForCustomization = False
+ end
+ inherited cxGridViewPRECIO_PORTE: TcxGridDBColumn
+ Caption = 'Precio porte'
+ Visible = False
+ VisibleForCustomization = False
+ end
+ end
+ end
+ inherited frViewFiltroBase1: TfrViewFiltroBase
+ inherited TBXDockablePanel1: TTBXDockablePanel
+ inherited dxLayoutControl1: TdxLayoutControl
+ inherited txtFiltroTodo: TcxTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ end
+ inherited edtFechaIniFiltro: TcxDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ end
+ inherited edtFechaFinFiltro: TcxDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ end
+ inherited eLista: TcxComboBox
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ end
+ end
+ end
+ end
+ inherited dxComponentPrinter: TdxComponentPrinter
+ inherited dxComponentPrinterLink: TdxGridReportLink
+ ReportDocument.CreationDate = 39231.869697800920000000
+ BuiltInReportLink = True
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.pas b/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.pas
new file mode 100644
index 0000000..ab9dd3c
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewElegirArticulosFacturasProforma.pas
@@ -0,0 +1,28 @@
+unit uViewElegirArticulosFacturasProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewArticulos, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, cxCurrencyEdit,
+ cxSpinEdit, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev,
+ dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, ImgList, PngImageList,
+ cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk,
+ uDADataTable, cxGridLevel, cxGridCustomTableView, cxGridTableView,
+ cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, dxPgsDlg,
+ ActnList, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase,
+ uDAInterfaces, uCustomView, uViewBase;
+
+type
+ IViewElegirArticulosFacturasCliente = interface(IViewArticulos)
+ ['{BEDD8521-7AD7-4715-BD9E-4911FD522604}']
+ end;
+
+ TfrViewElegirArticulosFacturasProforma = class(TfrViewArticulos, IViewElegirArticulosFacturasCliente)
+ end;
+
+implementation
+{$R *.dfm}
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.dfm b/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.dfm
new file mode 100644
index 0000000..1ef3b57
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.dfm
@@ -0,0 +1,447 @@
+inherited frViewFacturaProforma: TfrViewFacturaProforma
+ Width = 990
+ Height = 496
+ Align = alClient
+ OnCreate = CustomViewCreate
+ OnDestroy = CustomViewDestroy
+ ExplicitWidth = 451
+ ExplicitHeight = 304
+ object dxLayoutControl1: TdxLayoutControl
+ Left = 0
+ Top = 0
+ Width = 990
+ Height = 496
+ Align = alClient
+ ParentBackground = True
+ TabOrder = 0
+ TabStop = False
+ AutoContentSizes = [acsWidth, acsHeight]
+ LookAndFeel = dxLayoutOfficeLookAndFeel1
+ ExplicitWidth = 451
+ ExplicitHeight = 304
+ DesignSize = (
+ 990
+ 496)
+ object Label1: TLabel
+ Left = 554
+ Top = 295
+ Width = 311
+ Height = 26
+ Caption =
+ 'Opcionalmente, puede escribir el nombre del cliente final de est' +
+ 'e presupuesto o elegirlo de la lista de clientes.'
+ WordWrap = True
+ end
+ object eReferencia: TcxDBTextEdit
+ Left = 124
+ Top = 30
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'REFERENCIA'
+ DataBinding.DataSource = DADataSource
+ Enabled = False
+ Properties.ReadOnly = False
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clInfoBk
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.Color = clMenuBar
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 0
+ Width = 165
+ end
+ object edtFecha: TcxDBDateEdit
+ Left = 124
+ Top = 57
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'FECHA_FACTURA'
+ DataBinding.DataSource = DADataSource
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clInfoBk
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ Style.Shadow = False
+ Style.ButtonStyle = bts3D
+ Style.ButtonTransparency = ebtNone
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 1
+ Width = 293
+ end
+ object memObservaciones: TcxDBMemo
+ Left = 22
+ Top = 387
+ Anchors = [akLeft, akTop, akRight, akBottom]
+ DataBinding.DataField = 'OBSERVACIONES'
+ DataBinding.DataSource = DADataSource
+ Properties.ScrollBars = ssVertical
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 9
+ Height = 345
+ Width = 355
+ end
+ object cbFormaPago: TcxDBLookupComboBox
+ Left = 146
+ Top = 103
+ DataBinding.DataField = 'ID_FORMA_PAGO'
+ DataBinding.DataSource = DADataSource
+ Properties.ImmediatePost = True
+ Properties.KeyFieldNames = 'ID'
+ Properties.ListColumns = <
+ item
+ FieldName = 'REFERENCIA'
+ end>
+ Properties.ListOptions.GridLines = glNone
+ Properties.ListOptions.ShowHeader = False
+ Properties.ListOptions.SyncMode = True
+ Properties.ListSource = dsFormaPago
+ Properties.PostPopupValueOnTab = True
+ Properties.OnEditValueChanged = edtFechaVemcimientoPropertiesEditValueChanged
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ Style.ButtonStyle = bts3D
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 2
+ Width = 269
+ end
+ object bFormasPago: TButton
+ Left = 372
+ Top = 103
+ Width = 132
+ Height = 23
+ Caption = 'Ver las formas de pago...'
+ TabOrder = 3
+ OnClick = bFormasPagoClick
+ end
+ object cbCuentaBancaria: TcxDBComboBox
+ Left = 146
+ Top = 159
+ DataBinding.DataField = 'DATOS_BANCARIOS'
+ DataBinding.DataSource = DADataSource
+ Properties.DropDownListStyle = lsFixedList
+ Properties.DropDownRows = 12
+ Properties.ImmediatePost = True
+ Properties.ImmediateUpdateText = True
+ Properties.PostPopupValueOnTab = True
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.SkinName = ''
+ Style.ButtonStyle = bts3D
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 5
+ Width = 165
+ end
+ object cbClienteFinal: TcxDBTextEdit
+ Left = 554
+ Top = 329
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'CLIENTE_FINAL'
+ DataBinding.DataSource = DADataSource
+ Properties.ReadOnly = False
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clWindow
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.Color = clMenuBar
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 7
+ Width = 339
+ end
+ object bElegirClienteFinal: TButton
+ Left = 934
+ Top = 327
+ Width = 23
+ Height = 25
+ Action = actElegirClienteFinal
+ TabOrder = 8
+ end
+ object edtFechaVemcimiento: TcxDBDateEdit
+ Left = 146
+ Top = 132
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'FECHA_VENCIMIENTO'
+ DataBinding.DataSource = DADataSource
+ Properties.OnEditValueChanged = edtFechaVemcimientoPropertiesEditValueChanged
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clInfoBk
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.LookAndFeel.SkinName = ''
+ Style.Shadow = False
+ Style.ButtonStyle = bts3D
+ Style.ButtonTransparency = ebtNone
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.SkinName = ''
+ TabOrder = 4
+ Width = 275
+ end
+ inline frViewDatosYSeleccionClienteFacturaProforma1: TfrViewDatosYSeleccionClienteFacturaProforma
+ Left = 543
+ Top = 36
+ Width = 467
+ Height = 234
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 6
+ ReadOnly = False
+ ExplicitLeft = 543
+ ExplicitTop = 36
+ inherited dxLayoutControl1: TdxLayoutControl
+ inherited edtlNombre: TcxDBTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 224
+ Width = 224
+ end
+ inherited edtNIFCIF: TcxDBTextEdit
+ Left = 312
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 312
+ end
+ inherited Button3: TBitBtn
+ Left = 223
+ ExplicitLeft = 223
+ end
+ inherited Button4: TButton
+ Left = 392
+ ExplicitLeft = 392
+ end
+ inherited edtDireccion: TcxMemo
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 403
+ Width = 403
+ end
+ end
+ end
+ object dxLayoutControl1Group_Root: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControl1Group9: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Group1: TdxLayoutGroup
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Datos de la factura'
+ object dxLayoutControl1Item1: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Referencia:'
+ Control = eReferencia
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item2: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Fecha de la factura:'
+ Control = edtFecha
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Group6: TdxLayoutGroup
+ Caption = 'Forma de pago'
+ object dxLayoutControl1Group4: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControl1Group3: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Item4: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Forma de pago:'
+ Control = cbFormaPago
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item10: TdxLayoutItem
+ ShowCaption = False
+ Control = bFormasPago
+ ControlOptions.ShowBorder = False
+ end
+ end
+ object ledtFechaVencimiento: TdxLayoutItem
+ Caption = 'Fecha de vencimiento:'
+ Visible = False
+ Control = edtFechaVemcimiento
+ ControlOptions.ShowBorder = False
+ end
+ end
+ object dxLayoutControl1Item3: TdxLayoutItem
+ Caption = 'Cuenta bancaria:'
+ Visible = False
+ Control = cbCuentaBancaria
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ object dxLayoutControl1Group2: TdxLayoutGroup
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Caption = 'Datos del cliente'
+ object dxLayoutControl1Item6: TdxLayoutItem
+ Caption = 'frViewDatosYSeleccionClienteFacturaCliente1'
+ ShowCaption = False
+ ControlOptions.AutoColor = True
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item11: TdxLayoutItem
+ Control = frViewDatosYSeleccionClienteFacturaProforma1
+ ControlOptions.AutoColor = True
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Group7: TdxLayoutGroup
+ Caption = 'Cliente final'
+ Visible = False
+ object dxLayoutControl1Item7: TdxLayoutItem
+ ShowCaption = False
+ Control = Label1
+ ControlOptions.AutoColor = True
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Group8: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControl1Item8: TdxLayoutItem
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avCenter
+ Control = cbClienteFinal
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControl1Item9: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ ShowCaption = False
+ Control = bElegirClienteFinal
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ end
+ end
+ object dxLayoutControl1Group5: TdxLayoutGroup
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Caption = 'Observaciones'
+ LayoutDirection = ldHorizontal
+ object dxLayoutControl1Item5: TdxLayoutItem
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Control = memObservaciones
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ end
+ object DADataSource: TDADataSource
+ Left = 16
+ Top = 56
+ end
+ object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList
+ Left = 120
+ Top = 24
+ object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel
+ GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET
+ GroupOptions.CaptionOptions.Font.Color = clWindowText
+ GroupOptions.CaptionOptions.Font.Height = -11
+ GroupOptions.CaptionOptions.Font.Name = 'Tahoma'
+ GroupOptions.CaptionOptions.Font.Style = [fsBold]
+ GroupOptions.CaptionOptions.TextColor = clHighlight
+ GroupOptions.CaptionOptions.UseDefaultFont = False
+ end
+ end
+ object dsFormaPago: TDADataSource
+ Left = 16
+ Top = 24
+ end
+ object ActionList1: TActionList
+ Left = 16
+ Top = 96
+ object actElegirClienteFinal: TAction
+ Caption = '...'
+ OnExecute = actElegirClienteFinalExecute
+ OnUpdate = actElegirClienteFinalUpdate
+ end
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.pas b/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.pas
new file mode 100644
index 0000000..e17bbc3
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewFacturaProforma.pas
@@ -0,0 +1,284 @@
+unit uViewFacturaProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewBase, DB, uDADataTable, uCustomView,
+ uBizFacturasCliente,
+ cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, dxLayoutControl,
+ cxMemo, cxMaskEdit, cxDropDownEdit, cxCalendar, cxSpinEdit, StdCtrls, Mask,
+ DBCtrls, cxGraphics, dxLayoutLookAndFeels, cxLookupEdit, cxDBLookupEdit,
+ cxDBLookupComboBox, uFormasPagoController, uDAInterfaces, uBizFormasPago,
+ ActnList, uViewDatosYSeleccionClienteFacturaCliente, uFacturasClienteController,
+ uViewDatosYSeleccionClienteFacturaProforma;
+
+type
+ IViewFacturaCliente = interface(IViewBase)
+ ['{3A95930C-20B3-41E9-93CB-21138ADB5B70}']
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ function GetController : IFacturasClienteController;
+ procedure SetController (const Value : IFacturasClienteController);
+ property Controller : IFacturasClienteController read GetController write SetController;
+
+ function GetViewClienteFactura: IViewDatosYSeleccionClienteFacturaCliente;
+ property ViewClienteFactura: IViewDatosYSeleccionClienteFacturaCliente read GetViewClienteFactura;
+ end;
+
+ TfrViewFacturaProforma = class(TfrViewBase, IViewFacturaCliente)
+ DADataSource: TDADataSource;
+ dxLayoutControl1Group_Root: TdxLayoutGroup;
+ dxLayoutControl1: TdxLayoutControl;
+ dxLayoutControl1Item1: TdxLayoutItem;
+ eReferencia: TcxDBTextEdit;
+ dxLayoutControl1Item2: TdxLayoutItem;
+ edtFecha: TcxDBDateEdit;
+ dxLayoutControl1Group1: TdxLayoutGroup;
+ dxLayoutControl1Group2: TdxLayoutGroup;
+ dxLayoutControl1Item5: TdxLayoutItem;
+ memObservaciones: TcxDBMemo;
+ dxLayoutControl1Group5: TdxLayoutGroup;
+ dxLayoutControl1Item6: TdxLayoutItem;
+ dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
+ dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
+ dsFormaPago: TDADataSource;
+ dxLayoutControl1Item4: TdxLayoutItem;
+ cbFormaPago: TcxDBLookupComboBox;
+ dxLayoutControl1Item10: TdxLayoutItem;
+ bFormasPago: TButton;
+ dxLayoutControl1Item3: TdxLayoutItem;
+ cbCuentaBancaria: TcxDBComboBox;
+ dxLayoutControl1Item7: TdxLayoutItem;
+ Label1: TLabel;
+ dxLayoutControl1Item8: TdxLayoutItem;
+ cbClienteFinal: TcxDBTextEdit;
+ dxLayoutControl1Item9: TdxLayoutItem;
+ bElegirClienteFinal: TButton;
+ dxLayoutControl1Group7: TdxLayoutGroup;
+ dxLayoutControl1Group8: TdxLayoutGroup;
+ ActionList1: TActionList;
+ actElegirClienteFinal: TAction;
+ dxLayoutControl1Group9: TdxLayoutGroup;
+ dxLayoutControl1Group6: TdxLayoutGroup;
+ dxLayoutControl1Group4: TdxLayoutGroup;
+ ledtFechaVencimiento: TdxLayoutItem;
+ edtFechaVemcimiento: TcxDBDateEdit;
+ dxLayoutControl1Group3: TdxLayoutGroup;
+ dxLayoutControl1Item11: TdxLayoutItem;
+ frViewDatosYSeleccionClienteFacturaProforma1: TfrViewDatosYSeleccionClienteFacturaProforma;
+ procedure bFormasPagoClick(Sender: TObject);
+ procedure CustomViewDestroy(Sender: TObject);
+ procedure CustomViewCreate(Sender: TObject);
+ procedure actElegirClienteFinalExecute(Sender: TObject);
+ procedure actElegirClienteFinalUpdate(Sender: TObject);
+ procedure edtFechaVemcimientoPropertiesEditValueChanged(Sender: TObject);
+ protected
+ FFactura : IBizFacturaCliente;
+ FController : IFacturasClienteController;
+ FFormasPago : IBizFormaPago;
+ FFormasPagoController : IFormasPagoController;
+ FViewClienteFactura : IViewDatosYSeleccionClienteFacturaCliente;
+ function GetFactura: IBizFacturaCliente;
+ procedure SetFactura(const Value: IBizFacturaCliente);
+ function GetController : IFacturasClienteController;
+ procedure SetController (const Value : IFacturasClienteController);
+ procedure RellenarCuentasBancarias;
+ function GetViewClienteFactura: IViewDatosYSeleccionClienteFacturaCliente;
+
+ public
+ property Factura: IBizFacturaCliente read GetFactura write SetFactura;
+ property Controller : IFacturasClienteController read GetController write SetController;
+ property ViewClienteFactura: IViewDatosYSeleccionClienteFacturaCliente read GetViewClienteFactura;
+ end;
+
+
+implementation
+
+uses
+ uDataModuleContactos, schFacturasClienteClient_Intf, uFactuGES_App,
+ uEmpresasController, uClientesController, uBizContactos, uBizDireccionesContacto;
+
+{$R *.dfm}
+
+{ TfrViewFacturaCliente }
+
+procedure TfrViewFacturaProforma.actElegirClienteFinalExecute(Sender: TObject);
+var
+ ACliente : IBizCliente;
+ AClienteController : IClientesController;
+begin
+ inherited;
+ AClienteController := TClientesController.Create;
+ try
+ ACliente := (AClienteController.ElegirContacto(AClienteController.BuscarTodos,
+ 'Elija el cliente final de esta factura', False) as IBizCliente);
+ if Assigned(ACliente) then
+ begin
+ ShowHourglassCursor;
+ try
+ FFactura.Edit;
+ FFactura.CLIENTE_FINAL := ACliente.NOMBRE;
+ finally
+ HideHourglassCursor;
+ end;
+ end;
+ finally
+ ACliente := NIL;
+ AClienteController := NIL;
+ end;
+end;
+
+procedure TfrViewFacturaProforma.actElegirClienteFinalUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := (not ReadOnly);
+end;
+
+procedure TfrViewFacturaProforma.bFormasPagoClick(Sender: TObject);
+begin
+ inherited;
+ if Assigned(FFormasPago) then
+ FFormasPagoController.VerTodos(FFormasPago);
+end;
+
+procedure TfrViewFacturaProforma.CustomViewCreate(Sender: TObject);
+begin
+ inherited;
+ FFormasPago := Nil;
+ FFormasPagoController := TFormasPagoController.Create;
+ FViewClienteFactura := frViewDatosYSeleccionClienteFacturaCliente1;
+end;
+
+procedure TfrViewFacturaProforma.CustomViewDestroy(Sender: TObject);
+begin
+ inherited;
+ FFormasPago := Nil;
+ FFormasPagoController := NIL;
+ FViewClienteFactura := NIL;
+end;
+
+procedure TfrViewFacturaProforma.edtFechaVemcimientoPropertiesEditValueChanged(
+ Sender: TObject);
+begin
+ if Assigned(FFormasPago) then
+ if (FFormasPago.Plazos.RecordCount = 0) then
+ ledtFechaVencimiento.Enabled := True
+ else
+ ledtFechaVencimiento.Enabled := False;
+end;
+
+function TfrViewFacturaProforma.GetController: IFacturasClienteController;
+begin
+ Result := FController;
+end;
+
+function TfrViewFacturaProforma.GetFactura: IBizFacturaCliente;
+begin
+ Result := FFactura;
+end;
+
+function TfrViewFacturaProforma.GetViewClienteFactura: IViewDatosYSeleccionClienteFacturaCliente;
+begin
+ Result := FViewClienteFactura;
+end;
+
+procedure TfrViewFacturaProforma.RellenarCuentasBancarias;
+var
+ AController : IEmpresasController;
+ ALista : TStringList;
+ AListaIBAN : TStringList;
+ AListaCliente: TStringList;
+ i : integer;
+begin
+ AController := TEmpresasController.Create;
+ try
+ ALista := AController.DarListaCuentasBancarias(AppFactuGES.EmpresaActiva);
+ AListaIBAN := AController.DarListaCuentasBancariasIBAN(AppFactuGES.EmpresaActiva);
+ AListaCliente := Controller.ClienteController.DarListaCuentasBancarias(FFactura.ID_CLIENTE);
+
+ try
+ with cbCuentaBancaria.Properties.Items do
+ begin
+ BeginUpdate;
+ try
+ Clear;
+ Add('');
+ for i := 0 to ALista.Count - 1 do
+ Add(ALista.Names[i]);
+
+ if AListaIBAN.Count > 0 then
+ begin
+ Add('--------------');
+ for i := 0 to AListaIBAN.Count - 1 do
+ Add(AListaIBAN.Names[i]);
+ end;
+
+ if AListaCliente.Count > 0 then
+ begin
+ Add('--------------');
+ for i := 0 to AListaCliente.Count - 1 do
+ Add(AListaCliente.Names[i]);
+ end;
+
+ finally
+ EndUpdate;
+ end;
+ end;
+ finally
+ FreeANDNIL(ALista);
+ FreeANDNIL(AListaIBAN);
+ end;
+ finally
+ AController := NIL;
+ end;
+end;
+
+procedure TfrViewFacturaProforma.SetController(const Value: IFacturasClienteController);
+begin
+ FController := Value;
+end;
+
+procedure TfrViewFacturaProforma.SetFactura(const Value: IBizFacturaCliente);
+var
+ ACadena : String;
+begin
+ FFactura := Value;
+ RellenarCuentasBancarias;
+
+ if Assigned(FFactura) then
+ begin
+ DADataSource.DataTable := FFactura.DataTable;
+
+ FViewClienteFactura.Factura := FFactura;
+
+ FFormasPago := FFormasPagoController.BuscarTodos;
+ dsFormaPago.DataTable := FFormasPago.DataTable;
+ dsFormaPago.DataTable.Active := True;
+
+ //Posicionamos la tabla en la forma de pago que tiene la factura ya que no lo hace el componente por si solo
+ FFormasPago.DataTable.Locate(fld_FacturasClienteID, FFactura.ID_FORMA_PAGO, []);
+ if (FFormasPago.Plazos.RecordCount = 0) then
+ ledtFechaVencimiento.Enabled := True
+ else
+ ledtFechaVencimiento.Enabled := False;
+
+ if FFactura.TIPO = CTE_TIPO_ABONO then
+ begin
+ dxLayoutControl1Group1.Caption := 'Datos del abono:';
+ dxLayoutControl1Item2.Caption := 'Fecha del abono:';
+ ACadena := 'Elija el cliente al que se le realizará el abono.';
+ end
+ else
+ ACadena := 'Elija el cliente al que se le realizará la factura.';
+ //ViewDatosYSeleccionClienteFacturaCliente1.MsgElegirCliente := ACadena;
+ end
+ else begin
+ DADataSource.DataTable := NIL;
+ dsFormaPago.DataTable := NIL;
+ FViewClienteFactura.Factura := NIL;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.dfm b/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.dfm
new file mode 100644
index 0000000..fab4369
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.dfm
@@ -0,0 +1,719 @@
+inherited frViewFacturasProforma: TfrViewFacturasProforma
+ Width = 665
+ Height = 418
+ ExplicitWidth = 665
+ ExplicitHeight = 418
+ inherited cxGrid: TcxGrid
+ Width = 665
+ Height = 290
+ RootLevelOptions.DetailTabsPosition = dtpTop
+ OnActiveTabChanged = cxGridActiveTabChanged
+ ExplicitWidth = 665
+ ExplicitHeight = 290
+ inherited cxGridView: TcxGridDBTableView
+ DataController.KeyFieldNames = 'ID'
+ DataController.Options = [dcoAnsiSort, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoGroupsAlwaysExpanded]
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Format = '0 facturas'
+ Kind = skCount
+ Column = cxGridViewREFERENCIA
+ end>
+ DataController.OnCompare = cxGridViewDataControllerCompare
+ OptionsCustomize.ColumnHidingOnGrouping = False
+ OptionsView.GroupFooters = gfAlwaysVisible
+ inherited cxGridViewICONO: TcxGridDBColumn
+ Visible = False
+ VisibleForCustomization = False
+ end
+ object cxGridViewNUM_COPIAS: TcxGridDBColumn
+ DataBinding.FieldName = 'NUM_COPIAS'
+ PropertiesClassName = 'TcxTextEditProperties'
+ Properties.Alignment.Horz = taCenter
+ BestFitMaxWidth = 25
+ MinWidth = 25
+ Options.Editing = False
+ Options.HorzSizing = False
+ Options.Moving = False
+ Options.ShowCaption = False
+ VisibleForCustomization = False
+ Width = 25
+ OnCustomDrawHeader = cxGridViewNUM_COPIASCustomDrawHeader
+ IsCaptionAssigned = True
+ end
+ object cxGridViewNUM_CORREOS: TcxGridDBColumn
+ DataBinding.FieldName = 'NUM_CORREOS'
+ PropertiesClassName = 'TcxTextEditProperties'
+ Properties.Alignment.Horz = taCenter
+ BestFitMaxWidth = 25
+ MinWidth = 25
+ Options.Editing = False
+ Options.HorzSizing = False
+ Options.Moving = False
+ Options.ShowCaption = False
+ VisibleForCustomization = False
+ Width = 25
+ OnCustomDrawHeader = cxGridViewNUM_CORREOSCustomDrawHeader
+ end
+ object cxGridViewTIPO: TcxGridDBColumn
+ DataBinding.FieldName = 'TIPO'
+ PropertiesClassName = 'TcxImageComboBoxProperties'
+ Properties.Images = PngImageList
+ Properties.Items = <
+ item
+ Description = 'Factura'
+ ImageIndex = 2
+ Value = 'F'
+ end
+ item
+ Description = 'Abono'
+ ImageIndex = 3
+ Value = 'A'
+ end>
+ Properties.LargeImages = PngImageList
+ end
+ object cxGridViewREFERENCIA: TcxGridDBColumn
+ DataBinding.FieldName = 'REFERENCIA'
+ PropertiesClassName = 'TcxTextEditProperties'
+ SortIndex = 0
+ SortOrder = soDescending
+ Width = 69
+ end
+ object cxGridViewSITUACION: TcxGridDBColumn
+ DataBinding.FieldName = 'SITUACION'
+ Width = 32
+ end
+ object cxGridViewFECHA_FACTURA: TcxGridDBColumn
+ Caption = 'Fecha'
+ DataBinding.FieldName = 'FECHA_FACTURA'
+ PropertiesClassName = 'TcxDateEditProperties'
+ Width = 28
+ end
+ object cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn
+ Caption = 'Fecha vto.'
+ DataBinding.FieldName = 'FECHA_VENCIMIENTO'
+ PropertiesClassName = 'TcxDateEditProperties'
+ Visible = False
+ VisibleForCustomization = False
+ end
+ object cxGridViewNIF_CIF: TcxGridDBColumn
+ DataBinding.FieldName = 'NIF_CIF'
+ Visible = False
+ end
+ object cxGridViewNOMBRE: TcxGridDBColumn
+ DataBinding.FieldName = 'NOMBRE'
+ Width = 181
+ end
+ object cxGridViewCALLE: TcxGridDBColumn
+ DataBinding.FieldName = 'CALLE'
+ Visible = False
+ end
+ object cxGridViewCODIGO_POSTAL: TcxGridDBColumn
+ DataBinding.FieldName = 'CODIGO_POSTAL'
+ Visible = False
+ end
+ object cxGridViewPOBLACION: TcxGridDBColumn
+ DataBinding.FieldName = 'POBLACION'
+ Visible = False
+ end
+ object cxGridViewPROVINCIA: TcxGridDBColumn
+ DataBinding.FieldName = 'PROVINCIA'
+ Visible = False
+ end
+ object cxGridViewBASE_IMPONIBLE: TcxGridDBColumn
+ DataBinding.FieldName = 'BASE_IMPONIBLE'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewDESCUENTO: TcxGridDBColumn
+ DataBinding.FieldName = 'DESCUENTO'
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn
+ DataBinding.FieldName = 'IMPORTE_DESCUENTO'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewIVA: TcxGridDBColumn
+ DataBinding.FieldName = 'IVA'
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewIMPORTE_IVA: TcxGridDBColumn
+ DataBinding.FieldName = 'IMPORTE_IVA'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewRE: TcxGridDBColumn
+ DataBinding.FieldName = 'RE'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.DisplayFormat = ',0.00 %;-,0.00 %'
+ end
+ object cxGridViewIMPORTE_RE: TcxGridDBColumn
+ DataBinding.FieldName = 'IMPORTE_RE'
+ end
+ object cxGridViewIMPORTE_TOTAL: TcxGridDBColumn
+ Caption = 'Importe total'
+ DataBinding.FieldName = 'IMPORTE_TOTAL'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ Width = 128
+ end
+ object cxGridViewIMPORTE_RETENCION: TcxGridDBColumn
+ Caption = 'Importe retenido'
+ DataBinding.FieldName = 'IMPORTE_RETENCION'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ Visible = False
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ VisibleForCustomization = False
+ end
+ object cxGridViewREFERENCIA_COMISION: TcxGridDBColumn
+ Caption = 'Liquidaci'#243'n'
+ DataBinding.FieldName = 'REFERENCIA_COMISION'
+ Width = 54
+ end
+ end
+ inherited cxGridLevel: TcxGridLevel
+ Caption = 'Todas'
+ end
+ object cxGridPendientes: TcxGridLevel
+ Caption = 'Pendientes'
+ end
+ object cxGridParcial: TcxGridLevel
+ Caption = 'Parcialmente pagadas'
+ end
+ object cxGridPagadas: TcxGridLevel
+ Caption = 'Pagadas'
+ end
+ end
+ inherited frViewFiltroBase1: TfrViewFiltroBase
+ Width = 665
+ ExplicitWidth = 665
+ inherited TBXDockablePanel1: TTBXDockablePanel
+ ExplicitWidth = 665
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 665
+ ExplicitWidth = 665
+ inherited txtFiltroTodo: TcxTextEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 568
+ Width = 568
+ end
+ inherited edtFechaIniFiltro: TcxDateEdit
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitWidth = 144
+ Width = 144
+ end
+ inherited edtFechaFinFiltro: TcxDateEdit
+ Left = 248
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 248
+ ExplicitWidth = 273
+ Width = 273
+ end
+ inherited eLista: TcxComboBox
+ Left = 558
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ ExplicitLeft = 558
+ ExplicitWidth = 97
+ Width = 97
+ end
+ end
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 665
+ ExplicitWidth = 665
+ inherited tbxBotones: TTBXToolbar
+ Width = 655
+ ExplicitWidth = 655
+ end
+ end
+ end
+ end
+ inherited pnlAgrupaciones: TTBXDockablePanel
+ Top = 392
+ Visible = True
+ ExplicitTop = 392
+ ExplicitWidth = 665
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 665
+ ExplicitWidth = 665
+ inherited TBXToolbar1: TTBXToolbar
+ Width = 655
+ ExplicitWidth = 655
+ object TBXSeparatorItem2: TTBXSeparatorItem
+ end
+ object TBXItem3: TTBXItem
+ Action = actCliente
+ end
+ object TBXSeparatorItem1: TTBXSeparatorItem
+ end
+ object TBXItem2: TTBXItem
+ Action = actProvincia
+ end
+ end
+ end
+ end
+ inherited dxComponentPrinter: TdxComponentPrinter
+ inherited dxComponentPrinterLink: TdxGridReportLink
+ ReportDocument.CreationDate = 38673.741107951390000000
+ BuiltInReportLink = True
+ end
+ end
+ inherited cxStyleRepository1: TcxStyleRepository
+ object cxStylePagada: TcxStyle
+ AssignedValues = [svTextColor]
+ TextColor = clBlack
+ end
+ object cxStyleAbono: TcxStyle
+ AssignedValues = [svTextColor]
+ TextColor = clRed
+ end
+ object cxStylePendientes: TcxStyle
+ AssignedValues = [svTextColor]
+ TextColor = clGreen
+ end
+ object cxStyleParciales: TcxStyle
+ AssignedValues = [svTextColor]
+ TextColor = clBlue
+ end
+ end
+ inherited ActionList1: TActionList
+ object actCliente: TAction
+ Caption = 'Cliente'
+ OnExecute = actClienteExecute
+ OnUpdate = actClienteUpdate
+ end
+ object actProvincia: TAction
+ Caption = 'Provincia'
+ OnExecute = actProvinciaExecute
+ OnUpdate = actProvinciaUpdate
+ end
+ end
+ inherited GridPNGImageList: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000B1300000B1301009A9C1800000A4F694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53675453E9163DF7
+ DEF4424B8880944B6F5215082052428B801491262A2109104A8821A1D91551C1
+ 114545041BC8A088038E8E808C15512C0C8A0AD807E421A28E83A3888ACAFBE1
+ 7BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C0080C9648335135800CA9421E
+ 11E083C7C4C6E1E42E40810A2470001008B3642173FD230100F87E3C3C2B22C0
+ 07BE000178D30B0800C04D9BC0301C87FF0FEA42995C01808401C07491384B08
+ 801400407A8E42A600404601809D98265300A0040060CB6362E300502D006027
+ 7FE6D300809DF8997B01005B94211501A09100201365884400683B00ACCF568A
+ 450058300014664BC43900D82D00304957664800B0B700C0CE100BB200080C00
+ 305188852900047B0060C8232378008499001446F2573CF12BAE10E72A000078
+ 99B23CB9243945815B082D710757572E1E28CE49172B14366102619A402EC279
+ 99193281340FE0F3CC0000A0911511E083F3FD78CE0EAECECE368EB60E5F2DEA
+ BF06FF226262E3FEE5CFAB70400000E1747ED1FE2C2FB31A803B06806DFEA225
+ EE04685E0BA075F78B66B20F40B500A0E9DA57F370F87E3C3C45A190B9D9D9E5
+ E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E3CFCF7F5E0BEE22481325D
+ 814704F8E0C2CCF44CA51CCF92098462DCE68F47FCB70BFFFC1DD322C44962B9
+ 582A14E35112718E449A8CF332A52289429229C525D2FF64E2DF2CFB033EDF35
+ 00B06A3E017B912DA85D6303F64B27105874C0E2F70000F2BB6FC1D428080380
+ 6883E1CF77FFEF3FFD47A02500806649927100005E44242E54CAB33FC7080000
+ 44A0812AB0411BF4C1182CC0061CC105DCC10BFC6036844224C4C24210420A64
+ 801C726029AC82422886CDB01D2A602FD4401D34C051688693700E2EC255B80E
+ 3D700FFA61089EC128BC81090441C808136121DA8801628A58238E08179985F8
+ 21C14804128B2420C9881451224B91354831528A542055481DF23D720239875C
+ 46BA913BC8003282FC86BC47319481B2513DD40CB543B9A8371A8446A20BD064
+ 74319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA8F3E43C730C0E8180733C4
+ 6C302EC6C342B1382C099363CBB122AC0CABC61AB056AC03BB89F563CFB17704
+ 128145C0093604774220611E4148584C584ED848A8201C243411DA0937090384
+ 51C2272293A84BB426BA11F9C4186232318758482C23D6128F132F107B8843C4
+ 37241289433227B9900249B1A454D212D246D26E5223E92CA99B34481A2393C9
+ DA646BB20739942C202BC885E49DE4C3E433E41BE421F25B0A9D624071A4F853
+ E22852CA6A4A19E510E534E5066598324155A39A52DDA8A15411358F5A42ADA1
+ B652AF5187A81334759A39CD8316494BA5ADA295D31A681768F769AFE874BA11
+ DD951E4E97D057D2CBE947E897E803F4770C0D861583C7886728199B18071867
+ 197718AF984CA619D38B19C754303731EB98E7990F996F55582AB62A7C1591CA
+ 0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB548FA95E537DAE46553353
+ E3A909D496AB55AA9D50EB531B5367A93BA887AA67A86F543FA47E59FD890659
+ C34CC34F43A451A0B15FE3BCC6200B6319B3782C216B0DAB86758135C426B1CD
+ D97C762ABB98FD1DBB8B3DAAA9A13943334A3357B352F394663F07E39871F89C
+ 744E09E728A797F37E8ADE14EF29E2291BA6344CB931655C6BAA96979658AB48
+ AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C74A275C2747678FCE059DE7
+ 53D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB4477BF6EA7EE989EBE5E809E
+ 4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C5806B30C2406DB0CCE183CC5
+ 35716F3C1D2FC7DBF151435DC34043A561956197E18491B9D13CA3D5468D460F
+ 8C69C65CE324E36DC66DC6A326062621264B4DEA4DEE9A524DB9A629A63B4C3B
+ 4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79BDFB7605A785A2CB6A8B6B8
+ 6549B2E45AA659EEB6BC6E855A3959A558555A5DB346AD9DAD25D6BBADBBA711
+ A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D806DBAEB66DB67D61676217
+ 67B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB1D5A1D7E73B472143A563A
+ DE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B613CB29C4699D539BD34767
+ 1767B97383F3888B894B82CB2E973E2E9B1BC6DDC8BDE44A74F5715DE17AD2F5
+ 9D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F299E593373D0C3C843E051E5
+ D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F9157ADD7B0B7A577AAF761
+ EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7C8B7CB4FC36F9E5F85DF43
+ 7F23FF64FF7AFFD100A78025016703898141815B02FBF87A7C21BF8E3F3ADB65
+ F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8EC90AD21F7E798CE91CE69
+ 0E85507EE8D6D00761E6618BC37E0C2785878557863F8E7088581AD131973577
+ D1DC4373DF44FA449644DE9B67314F39AF2D4A352A3EAA2E6A3CDA37BA34BA3F
+ C62E6659CCD5589D58496C4B1C392E2AAE366E6CBEDFFCEDF387E29DE20BE37B
+ 17982FC85D7079A1CEC2F485A716A92E122C3A96404C884E3894F041102AA816
+ 8C25F21377258E0A79C21DC267222FD136D188D8435C2A1E4EF2482A4D7A92EC
+ 91BC357924C533A52CE5B98427A990BC4C0D4CDD9B3A9E169A76206D323D3ABD
+ 31839291907142AA214D93B667EA67E66676CBAC6585B2FEC56E8BB72F1E9507
+ C96BB390AC05592D0AB642A6E8545A28D72A07B267655766BFCD89CA3996AB9E
+ 2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5864B572D1D58E6BDAC6A39
+ B23C7179DB0AE315052B865606AC3CB88AB62A6DD54FABED5797AE7EBD267A4D
+ 6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED5D4F582F59DFB561FA869D
+ 1B3E15898AAE14DB1797157FD828DC78E51B876FCABF99DC94B4A9ABC4B964CF
+ 66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB40DDF56B4EDF5F645DB2F97
+ CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54A454F454FA5436EED2DDB5
+ 61D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BEDB5501554DD566D565FB49
+ FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D203FD07230EB6D7B9D4D51D
+ D23D54528FD62BEB470EC71FBEFE9DEF772D0D360D558D9CC6E223704479E4E9
+ F709DFF71E0D3ADA768C7BACE107D31F761D671D2F6A429AF29A469B539AFB5B
+ 625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C59794AF354C969DAE982D39367
+ F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A0F6FEFBA1074E1D245FF8B
+ E73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F6DEA74EA3CFE93D34FC7BB
+ 9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDDF4BD79F116FFD6D59E393D
+ DDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD97727EEADBC4FBC5FF440ED41
+ D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47F7068583CFFE91F58F0F43
+ 058F998FCB860D86EB9E383E3939E23F72FDE9FCA743CF64CF269E17FEA2FECB
+ AE17162F7EF8D5EBD7CED198D1A197F29793BF6D7CA5FDEAC0EB19AFDBC6C2C6
+ 1EBEC97833315EF456FBEDC177DC771DEFA3DF0F4FE47C207F28FF68F9B1F553
+ D0A7FB93199393FF040398F3FC63332DDB000000434944415478DA63FCFFFF3F
+ 03258011D900464646ACA601D530126D00BA6298A1B80C21CA0090183639925C
+ 80CB3B040DC0E69A510306BD010C04005E03C801036F00008D248BE16F9028BA
+ 0000000049454E44AE426082}
+ Name = 'Icono_header'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20
+ E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9
+ 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1
+ CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098
+ D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4
+ AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609
+ 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3
+ D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD
+ 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8
+ C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D
+ E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770
+ 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F
+ 16FA1194E3DBC30000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001964944415478DA
+ 636440038B371DFFCF8005C4FA5932621347115CB2F9D8FF30075154053F3F30
+ 30FC7CCF6096B49EE1FCCEE98C380D58B9F5F0FF403B09AC9A61B469C1050C43
+ C09C659B8FFE0F7110C3AB194CFFFAC0E0D2FD9B61FFEA1EB8218C203F873B8A
+ 10A59911C806F18DBB85E02E011BF0E1C30786F44015A234671F0B653871742F
+ AA0131BE160C5316EF60C8F012012B9AB1F72F8A8BB2153782C5A73E4B00F3E7
+ 2DDD846A80BF93215862E1BAFD603A27D603C580ACE6B50C5A0ADC0CB97D0F19
+ AEAEF66788C9694235C0D6580DAC70F3DE530CF1418E0CB88063F17D86B3270F
+ 324C2E9267C88DF3441860A4A9C0B0EFF80506171B230C4D319DEF50F8113E1A
+ 0CA5B53319182E64A006A28EBA0A565B4BE6FD61C88B85C83D7EF98FE1EBD76F
+ 60767BDF4AB0216003A4440518AEDD7E80D580054715C006BC7ACFC2F0EBF76F
+ 862F5FBE8231883D73FE4E880BFAA62EC2AAD9C2DA99E1D4536D86A42019860F
+ 5FD9E19ABF7CFDCA307FE97E880B180800E3F4EBFF4101070389D18E70CDF0A4
+ 4C34309801C9A950CDE41980A4190400B843EED8DFC8CDA30000000049454E44
+ AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+ object PngImageList: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000001DA4944415478DA
+ 63FCFFFF3F032580912C5DF2F33964B539E3DF7DF8F1956403380CE7C85B5929
+ CFFAF99ED7FCFCED9BE124192060B7D8D6CE5279E99B876C42674FFC0CFEF9C0
+ 7A27D10628FBAF0FB030915F74E7EA6FE6F387FF87FD7A6AB195E83090F55915
+ EEE7A23BE7FCD9CFAC170EFF4EFDF6C07A31D18128E1BE3CC8DB597BE1A3BBBF
+ B98EECFA91FBFDBEF574A0F07FA20C10B09B67EBE366B8E3CDF37F9C47F77CED
+ FC7CD3AE125D0DC400B3897C9CCCBCEADFD9182F331C4CFC010E6DCB39F29E0E
+ 3A07599939E477AE7FBFFBE3CF4BBE0C77F27F621820EAB848DFDC447931372B
+ 9FE68E5DF7577F3C73368E414588D9C6496BB3AA92B8CBDECD9FDEBC7CF9D3F2
+ E71DE7BBD85CC928EAB438C4C7556F3A0B1B8BC8B1BD9FFFDE7B753F4C41994B
+ C3CA48B1E5F09ECFFFEF3F7D19F3FB5AD0725CDE047B41276243A09D85FAAAA7
+ CFBFB11CDEFBEA8EA79F98E4C3FBBFB8CF9F7BBDE5EB453F3FE440C31E060CF5
+ 4C4ED9F63B6565845D5EBEFEF29F11287AE9C4AF2FAFBF3D32FF753EFE3ABE80
+ 86C7028FF5429B101F83FDCF5F7F66797697E1FFCDDB6FA7FFBAE69F4D289A91
+ A2B19EC539C7E1C49BC7EC46F71EBDD9FFF9DFD338868B994F4930808181D76E
+ 413EF33F56D90F0F5ED4323C29FE4E4833080000904EC47A3EA3126900000000
+ 49454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000029B4944415478DA
+ A5936B48536118C7FFE79CB5CD332F639B9A379C683051B232CDEA835D14BB40
+ A444501FACCC254811F529858811519411917D705A5041D04D30A34F82214118
+ D8B0455E2A755E6665BA9DCDED6C3BDBDE76365C9A981F7AE0BDF0C2FFF7FE9F
+ E7E1A10821F89FA0C27B7E8B8ED526D731085A9DAFAA6EFC4B1053FAA844AA8A
+ 377053B64ED27BAC99C2E6FB4574667A4F5676B23C5ECE9091FE2F97B98ECA4B
+ CB9405B794AAEC9CAB5E307A97C3ED8383AB26BD35CF29EC7ED68AA4A45A0483
+ 4852B1484D64C9A8E9EB15AEB3F2E282962D7BBC5FA651B73A5C424AC0E59E05
+ 673B88BEBAB762FA14726EC7639DB60BB1B145083DC4C824D0A62790E901CB75
+ FB4B53A362EF060351B08D6E978706CF4F807356C0A41F10C1118018BA3B6A68
+ 33DE8065F345080D82B4940432373933E863A43AC1E3A5E0E68730E72883F9D4
+ E482B33F003136B6A52251DD831879B60811530A2FF1CEF31670F3DB60AAB52E
+ 2ECB528018EB8D5948D6F442264D8C8A03018299D94321DBED7FD775194051FE
+ E49C54A36CB2715E3AEA423CBD9E09CCD977C05C3FB222407DA0FD4A467E6643
+ FF472B450221A15F2010FCF39048E222109F052E5B294CA72DCB008A8AA7E775
+ 25B94DC343D394D3EE167F2670380CA1DCDBC02A8CA194F685213EE11B387E17
+ 3ED78D4701CCF687E559C579AF79DE2B991AFB19B1EC703EC0BBEAE351AF85F7
+ 4E42B6E626683A0182300CDFFC4E98CE58C300CDD1EEC9B8B5AAB4B1C13184AD
+ BBDD668CFB8A6139E15952B1BCBB19A10E192161F6840A3B04DE594ACC677F50
+ CAC35D2F78BFBFCAEBE211A20BB0FFDA8A0FF57D2B0E4381510F09DD0412EC20
+ 7DFA6A0A9B8C25502ABBC1307270DC35BCAF69587504739B3341532CF9543F10
+ E94261CB16486417F07DF4082C06CFAA80455DF80DE5433FF01720E9DB000000
+ 0049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD25200000A4D694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF
+ F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A
+ 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5
+ 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8
+ 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC
+ 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200
+ C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05
+ 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2
+ 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C
+ CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97
+ 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313
+ 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F
+ 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA
+ 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED
+ 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383
+ FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A
+ F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86
+ 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432
+ 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0
+ 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C
+ 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70
+ 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261
+ 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA
+ 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F
+ 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961
+ 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402
+ 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2
+ 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93
+ 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90
+ 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452
+ A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650
+ 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83
+ 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7
+ 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295
+ 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9
+ 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685
+ 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9
+ EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C
+ 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED
+ EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB
+ 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31
+ 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87
+ 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94
+ 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85
+ A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6
+ 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29
+ D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B
+ 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6
+ 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD
+ D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7
+ C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E
+ 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B
+ FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5
+ 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1
+ 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0
+ 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67
+ BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845
+ F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC
+ A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7
+ 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA
+ 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C
+ 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423
+ F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433
+ DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317
+ 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2
+ A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17
+ 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4
+ EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E
+ CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9
+ 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD
+ 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF
+ B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C
+ 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD
+ EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293
+ E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7
+ 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F
+ EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6
+ EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07
+ FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247
+ CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73
+ ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC
+ CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F
+ F73EE77CFEFC2FF784F3FB25D29F33000001A14944415478DA639CBC68FB7F06
+ 2241EE3E4F38FBFFFCFF8C209A1164404EAC075E8D7FFEFE63F8FDE72F035706
+ 1BC38C19090C19190B300DB02DDA0FD770B8CF11857FE4BD139C0D330006F0BA
+ E0D7EFBF609B79B2D8C11A41E0F5E7CF0CAF3E7D02E395134F6277013A407641
+ 6EAD2BC3E4E6DD982E001900723A08FCFBFF9FE1FB8FDF60DB7DEB4F30ACAA34
+ 6658BBE31838107D320C18B6CCB8803D0C607EDFDB69C7E05C7E88615DAD2943
+ 50F36986A5A5060C9BF69CC41F0B300360B67FFBF18BE1CF9F7F0C61ED671916
+ 16EA326C3B708661DED24D0CE7764C6344F61E8A01077B1D18EC8B0F306C6EB4
+ 003B1D647374F7058639B9DA0CBB8F9C236C00C8E9207F836CFFFAED17989D34
+ F10AC394343586C3A72FE3362023CA8DC1B1F4205C7079B9214364E779869959
+ 9A0CE9D3AE33F427A9309C387F15B701C961CE60DB407EF66F3CC9B0B8589FE1
+ DB77880B7266DD62E88A5364387BF9066E03E2821CC09A411A425ACF60A483D6
+ 2839864BD76FE33620CA0FE277982B40B67F83A60310FEF7EF3FC3959B77701B
+ 10EA65CDB07ADB51064200A70120096201BA01006B4F3A16F9FB392100000000
+ 49454E44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD25200000A4D694343505068
+ 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF
+ F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A
+ 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5
+ 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8
+ 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC
+ 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200
+ C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05
+ 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2
+ 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C
+ CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97
+ 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313
+ 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F
+ 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA
+ 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED
+ 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383
+ FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A
+ F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86
+ 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432
+ 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0
+ 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C
+ 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70
+ 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261
+ 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA
+ 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F
+ 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961
+ 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402
+ 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2
+ 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93
+ 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90
+ 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452
+ A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650
+ 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83
+ 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7
+ 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295
+ 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9
+ 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685
+ 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9
+ EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C
+ 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED
+ EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB
+ 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31
+ 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87
+ 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94
+ 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85
+ A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6
+ 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29
+ D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B
+ 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6
+ 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD
+ D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7
+ C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E
+ 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B
+ FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5
+ 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1
+ 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0
+ 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67
+ BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845
+ F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC
+ A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7
+ 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA
+ 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C
+ 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423
+ F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433
+ DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317
+ 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2
+ A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17
+ 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4
+ EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E
+ CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9
+ 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD
+ 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF
+ B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C
+ 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD
+ EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293
+ E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7
+ 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F
+ EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6
+ EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07
+ FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247
+ CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73
+ ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC
+ CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F
+ F73EE77CFEFC2FF784F3FB25D29F33000001794944415478DA639CBC68FB7F06
+ 12404EAC0723329F1164005010AFA63F7FFF31FCFEF397C1DA3F9FE1DC8E69D8
+ 0DB02DDA0F173CDCE788C257E977C269385E17FCFAFD176C730E173BC38C8404
+ B0D8E7CF9F193E7DFA04C6134F9EC4EE027440940B4006809C0E02FFFEFF67F8
+ FEE337D876DFFA130CAB2A8D19D6EE38C6306FE926FC6100F3FBDE4E3B06E7F2
+ 430CEB6A4D19829A4F332C2D3560D8B4E7247106C06CFFF6E317C39F3FFF18C2
+ DACF322C2CD465D876E00C61030EF63A30D8171F60D8DC6801763AC8E6E8EE0B
+ 0C7372B519761F3947D80090D341FE06D9FEF5DB2F303B69E2158629696A0C87
+ 4F5FC66D4046941B8363E941B8E0F2724386C8CEF30C33B33419D2A75D67E84F
+ 52613871FE2A6E0392C39CC1B681FCECDF78926171B13EC3B7EF1017E4CCBAC5
+ D015A7C870F6F20DDC06C405398035833484B49EC188EBD62839864BD76FE336
+ 20CA0FE277982B40B67F83A60310FEF7EF3FC3959B77701B10EA65CDB07ADB51
+ 064200A70120096201BA0100A6C62916A56F74520000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end>
+ Left = 56
+ Top = 48
+ Bitmap = {}
+ end
+end
diff --git a/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.pas b/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.pas
new file mode 100644
index 0000000..122c0c4
--- /dev/null
+++ b/Source/Modulos/Facturas proforma/Views/uViewFacturasProforma.pas
@@ -0,0 +1,294 @@
+unit uViewFacturasProforma;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewGrid, uViewPreview, cxStyles, cxCustomData, cxGraphics,
+ cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl,
+ dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider,
+ dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, cxTextEdit, ImgList,
+ PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, ActnList, uDADataTable,
+ cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,
+ cxImage, Grids, DBGrids, uBizFacturasCliente, cxGridCustomPopupMenu,
+ cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, TBX,
+ TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView,
+ uViewBase;
+
+type
+ IViewFacturasCliente = interface(IViewGrid)
+ ['{927A005F-5D71-4C37-B9E7-10292F9D467C}']
+ function GetFacturas: IBizFacturaCliente;
+ procedure SetFacturas(const Value: IBizFacturaCliente);
+ property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
+ end;
+
+ TfrViewFacturasProforma = class(TfrViewGrid, IViewFacturasCliente)
+ PngImageList: TPngImageList;
+ cxGridViewNOMBRE: TcxGridDBColumn;
+ cxGridViewREFERENCIA: TcxGridDBColumn;
+ cxGridViewFECHA_FACTURA: TcxGridDBColumn;
+ cxGridViewSITUACION: TcxGridDBColumn;
+ cxGridViewBASE_IMPONIBLE: TcxGridDBColumn;
+ cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn;
+ cxGridViewDESCUENTO: TcxGridDBColumn;
+ cxGridViewIMPORTE_IVA: TcxGridDBColumn;
+ cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
+ cxGridViewIVA: TcxGridDBColumn;
+ cxGridViewNIF_CIF: TcxGridDBColumn;
+ cxGridViewCALLE: TcxGridDBColumn;
+ cxGridViewPROVINCIA: TcxGridDBColumn;
+ cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
+ cxGridViewPOBLACION: TcxGridDBColumn;
+ cxStylePagada: TcxStyle;
+ cxGridPendientes: TcxGridLevel;
+ cxGridParcial: TcxGridLevel;
+ cxStyleAbono: TcxStyle;
+ cxGridPagadas: TcxGridLevel;
+ cxGridViewREFERENCIA_COMISION: TcxGridDBColumn;
+ cxStylePendientes: TcxStyle;
+ cxStyleParciales: TcxStyle;
+ actCliente: TAction;
+ actProvincia: TAction;
+ TBXItem2: TTBXItem;
+ TBXSeparatorItem1: TTBXSeparatorItem;
+ TBXItem3: TTBXItem;
+ TBXSeparatorItem2: TTBXSeparatorItem;
+ cxGridViewTIPO: TcxGridDBColumn;
+ cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn;
+ cxGridViewIMPORTE_RETENCION: TcxGridDBColumn;
+ cxGridViewRE: TcxGridDBColumn;
+ cxGridViewIMPORTE_RE: TcxGridDBColumn;
+ procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
+ ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
+ out AStyle: TcxStyle);
+ procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
+ procedure actClienteExecute(Sender: TObject);
+ procedure actProvinciaExecute(Sender: TObject);
+ procedure actProvinciaUpdate(Sender: TObject);
+ procedure actClienteUpdate(Sender: TObject);
+ procedure cxGridViewDataControllerCompare(
+ ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
+ AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
+ procedure cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
+ ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
+ var ADone: Boolean);
+ procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
+ ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
+ var ADone: Boolean);
+
+ private
+ //Filtros relativos a la vista
+ procedure AnadirFiltroSituaciones;
+ procedure AnadirFiltroFechas;
+
+ protected
+ FFacturas: IBizFacturaCliente;
+ function GetFacturas: IBizFacturaCliente;
+ procedure SetFacturas(const Value: IBizFacturaCliente);
+
+ public
+ procedure AnadirOtrosFiltros; override;
+ property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
+ end;
+
+
+implementation
+
+uses
+ uDataModuleFacturasCliente, DateUtils, uViewGridBase, uReferenciasUtils,
+ cxVariants;
+
+{$R *.dfm}
+
+{ TfrViewFacturasCliente }
+
+procedure TfrViewFacturasProforma.actClienteExecute(Sender: TObject);
+begin
+ if (cxGridViewNOMBRE.GroupIndex < 0) then
+ begin
+ cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount;
+ cxGridViewNOMBRE.Visible := False;
+ end
+ else
+ begin
+ cxGridViewNOMBRE.GroupIndex := -1;
+ cxGridViewNOMBRE.Visible := True;
+ end;
+end;
+
+procedure TfrViewFacturasProforma.actClienteUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
+end;
+
+procedure TfrViewFacturasProforma.actProvinciaExecute(Sender: TObject);
+begin
+ if (cxGridViewPROVINCIA.GroupIndex < 0) then
+ begin
+ cxGridViewPROVINCIA.GroupIndex := cxGridView.GroupedColumnCount;
+ cxGridViewPROVINCIA.Visible := False;
+ end
+ else
+ begin
+ cxGridViewPROVINCIA.GroupIndex := -1;
+ cxGridViewPROVINCIA.Visible := True;
+ end;
+end;
+
+procedure TfrViewFacturasProforma.actProvinciaUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Checked := not (cxGridViewPROVINCIA.GroupIndex < 0);
+end;
+
+procedure TfrViewFacturasProforma.AnadirFiltroFechas;
+var
+ Columna: TcxGridDBColumn;
+ Fecha1, Fecha2: Variant;
+ FFiltro : TcxFilterCriteriaItemList;
+begin
+ Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
+ Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;
+
+ if not VarIsNull(Fecha1)
+ and not VarIsNull(Fecha2) then
+ begin
+ cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
+ FFiltro := AddFilterGrid(fboAnd);
+
+ Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_FACTURA');
+ FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
+ end;
+end;
+
+procedure TfrViewFacturasProforma.AnadirFiltroSituaciones;
+var
+ FFiltro : TcxFilterCriteriaItemList;
+begin
+ FFiltro := AddFilterGrid(fboAnd);
+
+ case cxGrid.ActiveLevel.Index of
+ 1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PENDIENTE, CTE_PENDIENTE);
+ 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PARCIAMENTE_PAGADA, CTE_PARCIAMENTE_PAGADA);
+ 3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, CTE_PAGADA, CTE_PAGADA);
+ end;
+end;
+
+procedure TfrViewFacturasProforma.AnadirOtrosFiltros;
+begin
+ inherited;
+
+ AnadirFiltroSituaciones;
+ AnadirFiltroFechas;
+
+ //Finalmente activamos el filtro si tenemos algo
+ if cxGridView.DataController.Filter.IsEmpty
+ then cxGridView.DataController.Filter.Active := False
+ else cxGridView.DataController.Filter.Active := True;
+ cxGrid.ActiveLevel.GridView := cxGridView;
+end;
+
+procedure TfrViewFacturasProforma.cxGridActiveTabChanged(Sender: TcxCustomGrid;
+ ALevel: TcxGridLevel);
+begin
+ inherited;
+ RefrescarFiltro;
+end;
+
+procedure TfrViewFacturasProforma.cxGridViewDataControllerCompare(
+ ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
+ AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
+begin
+ inherited;
+ if ((AItemIndex = cxGridViewREFERENCIA.Index) or
+ (AItemIndex = cxGridViewREFERENCIA_COMISION.Index)) and
+ (VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
+ Compare := CompararReferencias(V1, V2)
+ else
+ Compare := VarCompare(V1, V2);
+end;
+
+procedure TfrViewFacturasProforma.cxGridViewNUM_COPIASCustomDrawHeader(
+ Sender: TcxGridTableView; ACanvas: TcxCanvas;
+ AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
+var
+ R : TRect;
+begin
+ inherited;
+ with AViewInfo do
+ begin
+ LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
+ Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
+ False, '', Params.Font, Params.TextColor, Params.Color);
+
+ R := AViewInfo.ContentBounds;
+ ACanvas.FillRect(R);
+ ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 1);
+ end;
+
+ ADone := True;
+end;
+
+procedure TfrViewFacturasProforma.cxGridViewNUM_CORREOSCustomDrawHeader(
+ Sender: TcxGridTableView; ACanvas: TcxCanvas;
+ AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
+var
+ R : TRect;
+begin
+ inherited;
+ with AViewInfo do
+ begin
+ LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
+ Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
+ False, '', Params.Font, Params.TextColor, Params.Color);
+
+ R := AViewInfo.ContentBounds;
+ ACanvas.FillRect(R);
+ ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 2);
+ end;
+
+ ADone := True;
+end;
+
+procedure TfrViewFacturasProforma.cxGridViewStylesGetContentStyle(
+ Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
+ AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
+var
+ IndiceCol: Integer;
+ ASituacion: string;
+begin
+ inherited;
+
+ if Assigned(ARecord) then
+ begin
+ IndiceCol := cxGridViewSITUACION.Index;
+ ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
+ if (ASituacion = CTE_PAGADA) then
+ AStyle.TextColor := cxStylePagada.TextColor
+ else if (ASituacion = CTE_PENDIENTE) then
+ AStyle.TextColor := cxStylePendientes.TextColor
+ else if (ASituacion = CTE_PARCIAMENTE_PAGADA) then
+ AStyle.TextColor := cxStyleParciales.TextColor;
+
+ IndiceCol := cxGridViewIMPORTE_TOTAL.Index;
+ if (Pos('-', ARecord.DisplayTexts[IndiceCol]) > 0) then
+ AStyle.TextColor := cxStyleAbono.TextColor;
+ end;
+end;
+
+function TfrViewFacturasProforma.GetFacturas: IBizFacturaCliente;
+begin
+ Result := FFacturas;
+end;
+
+procedure TfrViewFacturasProforma.SetFacturas(const Value: IBizFacturaCliente);
+begin
+ FFacturas := Value;
+ if Assigned(FFacturas) then
+ dsDataSource.DataTable := FFacturas.DataTable;
+end;
+
+end.
diff --git a/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc b/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc
index 9809427..b0e901d 100644
--- a/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc
+++ b/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Data\uDataModuleInfMargenArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Data\InfMargenArticulo_data.res */
-/* c:\temp\dtfD88.tmp */
+/* c:\temp\dtf169D.tmp */
diff --git a/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc b/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc
index 10d7429..92667df 100644
--- a/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc
+++ b/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Model\InfMargenArticulo_model.res */
-/* c:\temp\dtfD86.tmp */
+/* c:\temp\dtf169B.tmp */
diff --git a/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc b/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc
index 15a8c69..303d0b4 100644
--- a/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc
+++ b/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc
@@ -16,4 +16,4 @@ END
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\uViewInfMargenArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\uEditorInfMargenArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\InfMargenArticulo_view.res */
-/* c:\temp\dtfD8C.tmp */
+/* c:\temp\dtf16A1.tmp */
diff --git a/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc b/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc
index e1837c4..f318f31 100644
--- a/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc
+++ b/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Data\uDataModuleInfVentasArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Data\InfVentasArticulo_data.res */
-/* c:\temp\dtfD7E.tmp */
+/* c:\temp\dtf1693.tmp */
diff --git a/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc b/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc
index 206928f..90a719b 100644
--- a/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc
+++ b/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Model\InfVentasArticulo_model.res */
-/* c:\temp\dtfD7C.tmp */
+/* c:\temp\dtf1691.tmp */
diff --git a/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc b/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc
index 18fce1b..c3173f2 100644
--- a/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc
+++ b/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc
@@ -19,4 +19,4 @@ END
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\uViewInfVentasAlbArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\uEditorInfVentasAlbArticulo.dfm */
/* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\InfVentasArticulo_view.res */
-/* c:\temp\dtfD82.tmp */
+/* c:\temp\dtf1697.tmp */
diff --git a/Source/Modulos/Informes base/Controller/InformesBase_controller.drc b/Source/Modulos/Informes base/Controller/InformesBase_controller.drc
index 21de86d..4bd034b 100644
--- a/Source/Modulos/Informes base/Controller/InformesBase_controller.drc
+++ b/Source/Modulos/Informes base/Controller/InformesBase_controller.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Informes base\Controller\InformesBase_controller.res */
-/* c:\temp\dtfD72.tmp */
+/* c:\temp\dtf1687.tmp */
diff --git a/Source/Modulos/Informes base/Data/Informes_data.drc b/Source/Modulos/Informes base/Data/Informes_data.drc
index d4326aa..76e93de 100644
--- a/Source/Modulos/Informes base/Data/Informes_data.drc
+++ b/Source/Modulos/Informes base/Data/Informes_data.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Informes base\Data\uDataModuleInformes.dfm */
/* C:\Codigo\Source\Modulos\Informes base\Data\Informes_data.res */
-/* c:\temp\dtfD6E.tmp */
+/* c:\temp\dtf1683.tmp */
diff --git a/Source/Modulos/Informes base/Model/Informes_model.drc b/Source/Modulos/Informes base/Model/Informes_model.drc
index c651a25..5dd6d13 100644
--- a/Source/Modulos/Informes base/Model/Informes_model.drc
+++ b/Source/Modulos/Informes base/Model/Informes_model.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Informes base\Model\Informes_model.res */
-/* c:\temp\dtfD6C.tmp */
+/* c:\temp\dtf1681.tmp */
diff --git a/Source/Modulos/Informes base/Views/Informes_view.drc b/Source/Modulos/Informes base/Views/Informes_view.drc
index 5278c49..f0c4d79 100644
--- a/Source/Modulos/Informes base/Views/Informes_view.drc
+++ b/Source/Modulos/Informes base/Views/Informes_view.drc
@@ -15,4 +15,4 @@ END
/* C:\Codigo\Source\Modulos\Informes base\Views\uViewInformes.dfm */
/* C:\Codigo\Source\Modulos\Informes base\Views\uEditorInformes.dfm */
/* C:\Codigo\Source\Modulos\Informes base\Views\Informes_view.res */
-/* c:\temp\dtfD76.tmp */
+/* c:\temp\dtf168B.tmp */
diff --git a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc
index cf0574f..767a697 100644
--- a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc
+++ b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Controller\PedidosCliente_controller.RES */
-/* c:\temp\dtfE00.tmp */
+/* c:\temp\dtf1715.tmp */
diff --git a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc
index 1ffd1a8..87b0edb 100644
--- a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc
+++ b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\uDataModulePedidosCliente.dfm */
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\PedidosCliente_data.RES */
-/* c:\temp\dtfDB0.tmp */
+/* c:\temp\dtf16C5.tmp */
diff --git a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc
index dc8a932..454eb1a 100644
--- a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc
+++ b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Model\PedidosCliente_model.RES */
-/* c:\temp\dtfDAE.tmp */
+/* c:\temp\dtf16C3.tmp */
diff --git a/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj b/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj
index 57a9f3f..cc7d104 100644
--- a/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj
+++ b/Source/Modulos/Pedidos de cliente/PedidosCliente_Group.groupproj
@@ -57,15 +57,6 @@
-
-
-
-
-
-
-
-
-
@@ -75,6 +66,15 @@
+
+
+
+
+
+
+
+
+
@@ -382,13 +382,13 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc
index 6a321f7..b1cd437 100644
--- a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc
+++ b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\uPluginPedidosCliente.dfm */
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\PedidosCliente_plugin.RES */
-/* c:\temp\dtfE1A.tmp */
+/* c:\temp\dtf172F.tmp */
diff --git a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc
index 5c8ddc9..ce33fa4 100644
--- a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc
+++ b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc
@@ -26,4 +26,4 @@ END
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorElegirArticulosPedidoCliente.dfm */
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorDireccionEntregaPedidoCliente.dfm */
/* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\PedidosCliente_view.RES */
-/* c:\temp\dtfE18.tmp */
+/* c:\temp\dtf172D.tmp */
diff --git a/Source/Modulos/ProcesoPresupuestoCliente/Controller/ProcesoPresupuestosCliente_controller.drc b/Source/Modulos/ProcesoPresupuestoCliente/Controller/ProcesoPresupuestosCliente_controller.drc
index aa38ef4..57fbaf4 100644
--- a/Source/Modulos/ProcesoPresupuestoCliente/Controller/ProcesoPresupuestosCliente_controller.drc
+++ b/Source/Modulos/ProcesoPresupuestoCliente/Controller/ProcesoPresupuestosCliente_controller.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Controller\ProcesoPresupuestosCliente_controller.res */
-/* c:\temp\dtfE4A.tmp */
+/* c:\temp\dtf175F.tmp */
diff --git a/Source/Modulos/ProcesoPresupuestoCliente/Controller/uProcesoPresupuestosClienteController.pas b/Source/Modulos/ProcesoPresupuestoCliente/Controller/uProcesoPresupuestosClienteController.pas
index ec76cba..6ff94b4 100644
--- a/Source/Modulos/ProcesoPresupuestoCliente/Controller/uProcesoPresupuestosClienteController.pas
+++ b/Source/Modulos/ProcesoPresupuestoCliente/Controller/uProcesoPresupuestosClienteController.pas
@@ -77,7 +77,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarAlbaranesCliente(APedidosCliente: IBizPedidoCliente): IBizAlbaranCliente;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdPedidosCli : Array of TDAWhereExpression;
i: Integer;
begin
@@ -92,18 +92,18 @@ begin
with Result.DataTable.DynamicWhere do
begin
APedidosCliente.Open;
- SetLength(AArray, APedidosCliente.RecordCount);
+ SetLength(AArrayIdPedidosCli, APedidosCliente.RecordCount);
APedidosCliente.First;
i:=0;
while not APedidosCliente.EOF do
begin
- AArray[i] := NewConstant(APedidosCliente.ID, datInteger);
+ AArrayIdPedidosCli[i] := NewConstant(APedidosCliente.ID, datInteger);
Inc(i);
APedidosCliente.Next;
end;
- // (ID_PEDIDO in lista IDs)
- Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO'), NewList(AArray), dboIn);
+ // (ID_PEDIDO in lista IDs) (SIEMPRE HAY AL MENOS UNO)
+ Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO'), NewList(AArrayIdPedidosCli), dboIn);
if IsEmpty then
Expression := Condicion
else
@@ -117,7 +117,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarAlbaranesProveedor(APedidosProveedor: IBizPedidoProveedor): IBizAlbaranProveedor;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdPedidosProv : Array of TDAWhereExpression;
i: Integer;
begin
@@ -132,18 +132,23 @@ begin
with Result.DataTable.DynamicWhere do
begin
APedidosProveedor.Open;
- SetLength(AArray, APedidosProveedor.RecordCount);
+ SetLength(AArrayIdPedidosProv, APedidosProveedor.RecordCount);
APedidosProveedor.First;
i:=0;
while not ApedidosProveedor.EOF do
begin
- AArray[i] := NewConstant(APedidosProveedor.ID, datInteger);
+ AArrayIdPedidosProv[i] := NewConstant(APedidosProveedor.ID, datInteger);
Inc(i);
APedidosProveedor.Next;
end;
- // (ID_PEDIDO in lista IDs)
- Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO'), NewList(AArray), dboIn);
+ if (length(AArrayIdPedidosProv)<>0) then
+ // (ID_PEDIDO in lista IDs)
+ Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO'), NewList(AArrayIdPedidosProv), dboIn)
+ else
+ // (ID is null, para que nos devuelva la lista vacia)
+ Condicion := NewBinaryExpression(NewField('', 'ID'), NewConstant(ID_NULO, datInteger), dboEqual);
+
if IsEmpty then
Expression := Condicion
else
@@ -157,7 +162,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarFacturasCliente(AAlbaranesCliente: IBizAlbaranCliente): IBizFacturaCliente;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdAlbaranesCli : Array of TDAWhereExpression;
i: Integer;
begin
@@ -170,21 +175,26 @@ begin
begin
//Vamos generando todos los where necesarios para cada uno de los ID de Pedido de proveedor que buscamos
AAlbaranesCliente.Open;
- SetLength(AArray, AAlbaranesCliente.RecordCount);
AAlbaranesCliente.First;
i:=0;
while not AAlbaranesCliente.EOF do
begin
if not AAlbaranesCliente.ID_FACTURAIsNull then
begin
- AArray[i] := NewConstant(AAlbaranesCliente.ID, datInteger);
+ SetLength(AArrayIdAlbaranesCli, i+1);
+ AArrayIdAlbaranesCli[i] := NewConstant(AAlbaranesCliente.ID, datInteger);
Inc(i);
end;
AAlbaranesCliente.Next;
end;
- // (ID in lista de IDs)
- Condicion := NewBinaryExpression(NewField('', 'ID_ALBARAN'), NewList(AArray), dboIn);
+ if (length(AArrayIdAlbaranesCli)<>0) then
+ // (ID in lista de IDs)
+ Condicion := NewBinaryExpression(NewField('', 'ID_ALBARAN'), NewList(AArrayIdAlbaranesCli), dboIn)
+ else
+ // (ID is null, para que nos devuelva la lista vacia)
+ Condicion := NewBinaryExpression(NewField('', 'ID'), NewConstant(ID_NULO, datInteger), dboEqual);
+
if IsEmpty then
Expression := Condicion
else
@@ -198,7 +208,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarFacturasProveedor(AAlbaranesProveedor: IBizAlbaranProveedor): IBizFacturaProveedor;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdAlbaranesProv : Array of TDAWhereExpression;
i: Integer;
begin
@@ -211,21 +221,26 @@ begin
begin
//Vamos generando todos los where necesarios para cada uno de los ID de Pedido de proveedor que buscamos
AAlbaranesProveedor.Open;
- SetLength(AArray, AAlbaranesProveedor.RecordCount);
AAlbaranesProveedor.First;
i:=0;
while not AAlbaranesProveedor.EOF do
begin
if not AAlbaranesProveedor.ID_FACTURAIsNull then
begin
- AArray[i] := NewConstant(AAlbaranesProveedor.ID, datInteger);
+ SetLength(AArrayIdAlbaranesProv, i+1);
+ AArrayIdAlbaranesProv[i] := NewConstant(AAlbaranesProveedor.ID, datInteger);
Inc(i);
end;
AAlbaranesProveedor.Next;
end;
- // (ID in lista de IDs)
- Condicion := NewBinaryExpression(NewField('', 'ID_ALBARAN'), NewList(AArray), dboIn);
+ if (length(AArrayIdAlbaranesProv)<>0) then
+ // (ID in lista de IDs)
+ Condicion := NewBinaryExpression(NewField('', 'ID_ALBARAN'), NewList(AArrayIdAlbaranesProv), dboIn)
+ else
+ // (ID is null, para que nos devuelva la lista vacia)
+ Condicion := NewBinaryExpression(NewField('', 'ID'), NewConstant(ID_NULO, datInteger), dboEqual);
+
if IsEmpty then
Expression := Condicion
else
@@ -239,7 +254,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarPedidosCliente(const ListaIDPresupuestosCliente: TIntegerArray): IBizPedidoCliente;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdPresupuestos : Array of TDAWhereExpression;
i: Integer;
begin
@@ -252,13 +267,13 @@ begin
// Filtrar los pedidos de cliente que esten en la lista
with Result.DataTable.DynamicWhere do
begin
- SetLength(AArray, ListaIDPresupuestosCliente.Count);
+ SetLength(AArrayIdPresupuestos, ListaIDPresupuestosCliente.Count);
//Vamos generando la lista de ID de pedidos de cliente que vamos a inlcuir en la clausula IN
for i := 0 to ListaIDPresupuestosCliente.Count - 1 do
- AArray[i] := NewConstant(ListaIDPresupuestosCliente.Items[i], datInteger);
+ AArrayIdPresupuestos[i] := NewConstant(ListaIDPresupuestosCliente.Items[i], datInteger);
- // (ID IN lista de IDs)
- Condicion := NewBinaryExpression(NewField('', fld_PedidosClienteID), NewList(AArray), dboIn);
+ // (ID IN lista de IDs) (SIEMPRE HAY AL MENOS UNO)
+ Condicion := NewBinaryExpression(NewField('', fld_PedidosClienteID), NewList(AArrayIdPresupuestos), dboIn);
if IsEmpty then
Expression := Condicion
else
@@ -270,7 +285,7 @@ end;
function TProcesoPresupuestosClienteController.BuscarPedidosProveedor(const ListaIDPresupuestosCliente: TIntegerArray): IBizPedidoProveedor;
var
Condicion: TDAWhereExpression;
- AArray : Array of TDAWhereExpression;
+ AArrayIdPedidosCli : Array of TDAWhereExpression;
i: Integer;
begin
@@ -283,13 +298,13 @@ begin
// Filtrar los Pedidos de proveedor relacionados con los pedidos de cliente pasados por parametro
with Result.DataTable.DynamicWhere do
begin
- SetLength(AArray, ListaIDPresupuestosCliente.Count);
+ SetLength(AArrayIdPedidosCli, ListaIDPresupuestosCliente.Count);
//Vamos generando la lista de ID de pedidos de cliente que vamos a inlcuir en la clausula IN
for i := 0 to ListaIDPresupuestosCliente.Count - 1 do
- AArray[i] := NewConstant(ListaIDPresupuestosCliente.Items[i], datInteger);
+ AArrayIdPedidosCli[i] := NewConstant(ListaIDPresupuestosCliente.Items[i], datInteger);
- // (ID_PEDIDO_CLIENTE IN lista de IDs)
- Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO_CLIENTE'), NewList(AArray), dboIn);
+ // (ID_PEDIDO_CLIENTE IN lista de IDs) (SIEMPRE HAY AL MENOS UNO)
+ Condicion := NewBinaryExpression(NewField('', 'ID_PEDIDO_CLIENTE'), NewList(AArrayIdPedidosCli), dboIn);
if IsEmpty then
Expression := Condicion
else
diff --git a/Source/Modulos/ProcesoPresupuestoCliente/Plugin/ProcesoPresupuestosCliente_plugin.drc b/Source/Modulos/ProcesoPresupuestoCliente/Plugin/ProcesoPresupuestosCliente_plugin.drc
index 2299ca7..13e96f1 100644
--- a/Source/Modulos/ProcesoPresupuestoCliente/Plugin/ProcesoPresupuestosCliente_plugin.drc
+++ b/Source/Modulos/ProcesoPresupuestoCliente/Plugin/ProcesoPresupuestosCliente_plugin.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Plugin\uPluginProcesoPresupuestosCliente.dfm */
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Plugin\ProcesoPresupuestosCliente_plugin.res */
-/* c:\temp\dtfE4E.tmp */
+/* c:\temp\dtf1763.tmp */
diff --git a/Source/Modulos/ProcesoPresupuestoCliente/Views/ProcesoPresupuestosCliente_view.drc b/Source/Modulos/ProcesoPresupuestoCliente/Views/ProcesoPresupuestosCliente_view.drc
index 1ffc13b..723778d 100644
--- a/Source/Modulos/ProcesoPresupuestoCliente/Views/ProcesoPresupuestosCliente_view.drc
+++ b/Source/Modulos/ProcesoPresupuestoCliente/Views/ProcesoPresupuestosCliente_view.drc
@@ -15,4 +15,4 @@ END
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Views\uViewProcesoPresupuestosCliente.dfm */
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Views\uEditorProcesoPresupuestosCliente.dfm */
/* C:\Codigo\Source\Modulos\ProcesoPresupuestoCliente\Views\ProcesoPresupuestosCliente_view.res */
-/* c:\temp\dtfE4C.tmp */
+/* c:\temp\dtf1761.tmp */
diff --git a/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas b/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas
index f4233b3..af51463 100644
--- a/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas
+++ b/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas
@@ -373,6 +373,22 @@ begin
end;
AFacturaActual := AFacturas;
+
+
+ // Ya tengo la factura. Le añado los conceptos del albarán
+ AFacturaActual.Detalles.DataTable.Last;
+
+ // Añado una línea en blanco
+ AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := '';
+ Post;
+ end;
+
+ AFacturasClienteController.Guardar(AFacturaActual);
+
end;
// Ya tengo la factura. Le añado los conceptos del albarán
diff --git a/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas b/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas
index 3001501..487a5ca 100644
--- a/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas
+++ b/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas
@@ -301,12 +301,12 @@ begin
Inicializar;
AAlbaranes := AAlbaranesProveedorController.ElegirAlbaranes(AAlbaranesProveedorController.BuscarSinFacturar,
- 'Elija el albarán o albaranes de proveedor que desea utilizar para dar de alta la factura.'
- + #10#13 + 'Si elige albaranes de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True);
+ 'Elija el albarán/orden o albaranes/órdenes de proveedor que desea utilizar para dar de alta la factura.'
+ + #10#13 + 'Si elige albaranes/órdenes de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True);
if Assigned(AAlbaranes) then
begin
- if (ShowConfirmMessage('Generar factura', Format('¿Desea copiar todos los conceptos del/los albaran/es seleccionados a sus facturas correspondientes?', [])) = IDYES) then
+ if (ShowConfirmMessage('Generar factura', Format('¿Desea copiar todos los conceptos del/los albaran u orden seleccionados a sus facturas correspondientes?', [])) = IDYES) then
Result := GenerarFacturaProvAlbProv(AAlbaranes)
else
Result := GenerarFacturaProvAlbProv(AAlbaranes, False);
@@ -376,7 +376,7 @@ begin
AFacturas.Edit;
//Si el albaran es de tipo devolución hacemos la factura de tipo abono
- if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
+{ if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
begin
bEnEdicion := (AFacturas.DataTable.State in dsEditModes);
if not bEnEdicion then
@@ -386,13 +386,39 @@ begin
if bEnEdicion then
AFacturas.Edit;
end;
-
+}
AFacturaActual := AFacturas;
+
+ // Ya tengo la factura. Le añado los conceptos del albarán
+ AFacturaActual.Detalles.DataTable.Last;
+
+ // Añado una línea en blanco
+ AFacturasProveedorController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := '';
+ Post;
+ end;
+
+ AFacturasProveedorController.Guardar(AFacturaActual);
+
+
end;
// Ya tengo la factura. Le añado los conceptos del albarán
AFacturaActual.Detalles.DataTable.Last;
+ // Añado una línea en blanco
+ AFacturasProveedorController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
+ with AFacturaActual.Detalles do
+ begin
+ Edit;
+ CONCEPTO := '';
+ Post;
+ end;
+
+
//Se pone la referencia del pedido y el total y nos olvidamos de los detalles
if not CopiarDetalles then
begin
@@ -400,7 +426,12 @@ begin
with AFacturaActual.Detalles do
begin
Edit;
- CONCEPTO := 'Albaran ' + AListaAlbaranes.REFERENCIA;
+
+ if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
+ CONCEPTO := 'Orden de devolución ' + AListaAlbaranes.REFERENCIA
+ else
+ CONCEPTO := 'Albaran ' + AListaAlbaranes.REFERENCIA;
+
CANTIDAD := 1;
IMPORTE_UNIDAD := AListaAlbaranes.IMPORTE_TOTAL; //Tecsitel no utiliza el IVA en los pedidos por lo tanto el
//importe total es lo que queremos (IMPORTE_NETO+IMPORTE_PORTE)
@@ -415,7 +446,10 @@ begin
with AFacturaActual.Detalles do
begin
Edit;
- CONCEPTO := 'Albarán ' + AListaAlbaranes.REFERENCIA + ' del ' + DateToStr(AListaAlbaranes.FECHA_ALBARAN);
+ if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
+ CONCEPTO := 'Orden de devolución ' + AListaAlbaranes.REFERENCIA + ' del ' + DateToStr(AListaAlbaranes.FECHA_ALBARAN)
+ else
+ CONCEPTO := 'Albarán ' + AListaAlbaranes.REFERENCIA + ' del ' + DateToStr(AListaAlbaranes.FECHA_ALBARAN);
Post;
end;
// Añado el contenido del albarán
@@ -438,7 +472,10 @@ begin
with AFacturaActual.Detalles do
begin
Edit;
- CONCEPTO := 'Total del albarán ' + AListaAlbaranes.REFERENCIA;
+ if (AListaAlbaranes.TIPO = CTE_TIPO_ALBARAN_DEV) then
+ CONCEPTO := 'Total orden de devolución ' + AListaAlbaranes.REFERENCIA
+ else
+ CONCEPTO := 'Total del albarán ' + AListaAlbaranes.REFERENCIA;
Post;
end;
end;
@@ -455,6 +492,7 @@ begin
// Guardo la factura que acabo de generar o editar
AFacturaActual.CalcularImporteTotal;
AFacturasProveedorController.Guardar(AFacturaActual);
+
// Asocio la factura con el albarán
AListaAlbaranes.Edit;
AListaAlbaranes.ID_FACTURA := AFacturaActual.ID;
diff --git a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc
index b26e645..e5cbd29 100644
--- a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc
+++ b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo\Source\Modulos\Tienda web\Data\uDataModuleTiendaWeb.dfm */
/* C:\Codigo\Source\Modulos\Tienda web\Data\TiendaWeb_data.res */
-/* c:\temp\dtfDC6.tmp */
+/* c:\temp\dtf16DB.tmp */
diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL
index 5f8200c..16b2953 100644
--- a/Source/Servicios/FactuGES.RODL
+++ b/Source/Servicios/FactuGES.RODL
@@ -470,6 +470,10 @@
+
+
+
+
@@ -482,6 +486,10 @@
+
+
+
+
@@ -1194,6 +1202,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas
index c19bccb..89e14cb 100644
--- a/Source/Servicios/FactuGES_Intf.pas
+++ b/Source/Servicios/FactuGES_Intf.pas
@@ -60,6 +60,7 @@ const
IsrvInformes_IID : TGUID = '{2FC3D21B-4919-4357-A5B5-10EF4AF72185}';
IsrvInfVentasArticulo_IID : TGUID = '{669DBB17-90F9-4346-AD92-B2A85D2A6200}';
IsrvInfMargenArticulo_IID : TGUID = '{E5A8F350-B355-476A-9674-412BA01BDA2B}';
+ IsrvFacturasProforma_IID : TGUID = '{FC9178C7-1213-4735-9FC1-C20F15C7B424}';
{ Event ID's }
@@ -102,6 +103,7 @@ type
IsrvInformes = interface;
IsrvInfVentasArticulo = interface;
IsrvInfMargenArticulo = interface;
+ IsrvFacturasProforma = interface;
TRdxEmpresasArray = class;
TIntegerArray = class;
@@ -643,8 +645,10 @@ type
{ IsrvAlbaranesProveedor }
IsrvAlbaranesProveedor = interface(IDataAbstractService)
['{66B71884-5CE4-4574-B825-60CDA956B628}']
- function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
- function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
+ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
end;
{ CosrvAlbaranesProveedor }
@@ -657,8 +661,10 @@ type
protected
function __GetInterfaceName:string; override;
- function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
- function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+ function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
+ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
end;
{ IsrvReferencias }
@@ -1037,6 +1043,29 @@ type
function GetSQLFROM(const Name: AnsiString): AnsiString;
end;
+ { IsrvFacturasProforma }
+ IsrvFacturasProforma = interface(IDataAbstractService)
+ ['{FC9178C7-1213-4735-9FC1-C20F15C7B424}']
+ function GenerarInforme(const ListaID: TIntegerArray): Binary;
+ function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
+ function DarListaAnos: StringArray;
+ end;
+
+ { CosrvFacturasProforma }
+ CosrvFacturasProforma = class
+ class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProforma;
+ end;
+
+ { TsrvFacturasProforma_Proxy }
+ TsrvFacturasProforma_Proxy = class(TDataAbstractService_Proxy, IsrvFacturasProforma)
+ protected
+ function __GetInterfaceName:string; override;
+
+ function GenerarInforme(const ListaID: TIntegerArray): Binary;
+ function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
+ function DarListaAnos: StringArray;
+ end;
+
implementation
uses
@@ -2284,7 +2313,8 @@ begin
result := 'srvAlbaranesProveedor';
end;
-function TsrvAlbaranesProveedor_Proxy.GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+function TsrvAlbaranesProveedor_Proxy.GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
begin
try
result := nil;
@@ -2292,6 +2322,8 @@ begin
__Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
__Message.Write('ImprimirPrecio', TypeInfo(Boolean), ImprimirPrecio, []);
__Message.Write('ImprimirRefProveedor', TypeInfo(Boolean), ImprimirRefProveedor, []);
+ __Message.Write('VerObservaciones', TypeInfo(Boolean), VerObservaciones, []);
+ __Message.Write('VerIncidencias', TypeInfo(Boolean), VerIncidencias, []);
__Message.Finalize;
__TransportChannel.Dispatch(__Message);
@@ -2303,7 +2335,8 @@ begin
end
end;
-function TsrvAlbaranesProveedor_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary;
+function TsrvAlbaranesProveedor_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary;
begin
try
result := nil;
@@ -2311,6 +2344,8 @@ begin
__Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
__Message.Write('ImprimirPrecio', TypeInfo(Boolean), ImprimirPrecio, []);
__Message.Write('ImprimirRefProveedor', TypeInfo(Boolean), ImprimirRefProveedor, []);
+ __Message.Write('VerObservaciones', TypeInfo(Boolean), VerObservaciones, []);
+ __Message.Write('VerIncidencias', TypeInfo(Boolean), VerIncidencias, []);
__Message.Finalize;
__TransportChannel.Dispatch(__Message);
@@ -3357,6 +3392,70 @@ begin
end
end;
+{ CosrvFacturasProforma }
+
+class function CosrvFacturasProforma.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProforma;
+begin
+ result := TsrvFacturasProforma_Proxy.Create(aMessage, aTransportChannel);
+end;
+
+{ TsrvFacturasProforma_Proxy }
+
+function TsrvFacturasProforma_Proxy.__GetInterfaceName:string;
+begin
+ result := 'srvFacturasProforma';
+end;
+
+function TsrvFacturasProforma_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary;
+begin
+ try
+ result := nil;
+ __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInforme');
+ __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
+ __Message.Finalize;
+
+ __TransportChannel.Dispatch(__Message);
+
+ __Message.Read('Result', TypeInfo(Binary), result, []);
+ finally
+ __Message.UnsetAttributes(__TransportChannel);
+ __Message.FreeStream;
+ end
+end;
+
+function TsrvFacturasProforma_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
+begin
+ try
+ result := nil;
+ __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEnPDF');
+ __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
+ __Message.Finalize;
+
+ __TransportChannel.Dispatch(__Message);
+
+ __Message.Read('Result', TypeInfo(Binary), result, []);
+ finally
+ __Message.UnsetAttributes(__TransportChannel);
+ __Message.FreeStream;
+ end
+end;
+
+function TsrvFacturasProforma_Proxy.DarListaAnos: StringArray;
+begin
+ try
+ result := nil;
+ __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaAnos');
+ __Message.Finalize;
+
+ __TransportChannel.Dispatch(__Message);
+
+ __Message.Read('Result', TypeInfo(DataAbstract4_Intf.StringArray), result, []);
+ finally
+ __Message.UnsetAttributes(__TransportChannel);
+ __Message.FreeStream;
+ end
+end;
+
initialization
RegisterROClass(TRdxLoginInfo);
RegisterROClass(TRdxEmpresasArray);
@@ -3398,6 +3497,7 @@ initialization
RegisterProxyClass(IsrvInformes_IID, TsrvInformes_Proxy);
RegisterProxyClass(IsrvInfVentasArticulo_IID, TsrvInfVentasArticulo_Proxy);
RegisterProxyClass(IsrvInfMargenArticulo_IID, TsrvInfMargenArticulo_Proxy);
+ RegisterProxyClass(IsrvFacturasProforma_IID, TsrvFacturasProforma_Proxy);
finalization
@@ -3441,5 +3541,6 @@ finalization
UnregisterProxyClass(IsrvInformes_IID);
UnregisterProxyClass(IsrvInfVentasArticulo_IID);
UnregisterProxyClass(IsrvInfMargenArticulo_IID);
+ UnregisterProxyClass(IsrvFacturasProforma_IID);
end.
diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas
index ee99edb..6e73b86 100644
--- a/Source/Servicios/FactuGES_Invk.pas
+++ b/Source/Servicios/FactuGES_Invk.pas
@@ -391,6 +391,17 @@ type
procedure Invoke_GetSQLFROM(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
end;
+ TsrvFacturasProforma_Invoker = class(TDataAbstractService_Invoker)
+ private
+ protected
+ public
+ constructor Create; override;
+ published
+ procedure Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+ procedure Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+ procedure Invoke_DarListaAnos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+ end;
+
implementation
uses
@@ -1474,11 +1485,14 @@ begin
end;
procedure TsrvAlbaranesProveedor_Invoker.Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
-{ function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary; }
+{ function GenerarInforme(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary; }
var
ListaID: FactuGES_Intf.TIntegerArray;
ImprimirPrecio: Boolean;
ImprimirRefProveedor: Boolean;
+ VerObservaciones: Boolean;
+ VerIncidencias: Boolean;
lResult: Binary;
__lObjectDisposer: TROObjectDisposer;
begin
@@ -1488,8 +1502,10 @@ begin
__Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
__Message.Read('ImprimirPrecio', TypeInfo(Boolean), ImprimirPrecio, []);
__Message.Read('ImprimirRefProveedor', TypeInfo(Boolean), ImprimirRefProveedor, []);
+ __Message.Read('VerObservaciones', TypeInfo(Boolean), VerObservaciones, []);
+ __Message.Read('VerIncidencias', TypeInfo(Boolean), VerIncidencias, []);
- lResult := (__Instance as IsrvAlbaranesProveedor).GenerarInforme(ListaID, ImprimirPrecio, ImprimirRefProveedor);
+ lResult := (__Instance as IsrvAlbaranesProveedor).GenerarInforme(ListaID, ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
__Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvAlbaranesProveedor', 'GenerarInformeResponse');
__Message.Write('Result', TypeInfo(Binary), lResult, []);
@@ -1508,11 +1524,14 @@ begin
end;
procedure TsrvAlbaranesProveedor_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
-{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean): Binary; }
+{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const ImprimirPrecio: Boolean; const ImprimirRefProveedor: Boolean; const VerObservaciones: Boolean;
+ const VerIncidencias: Boolean): Binary; }
var
ListaID: FactuGES_Intf.TIntegerArray;
ImprimirPrecio: Boolean;
ImprimirRefProveedor: Boolean;
+ VerObservaciones: Boolean;
+ VerIncidencias: Boolean;
lResult: Binary;
__lObjectDisposer: TROObjectDisposer;
begin
@@ -1522,8 +1541,10 @@ begin
__Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
__Message.Read('ImprimirPrecio', TypeInfo(Boolean), ImprimirPrecio, []);
__Message.Read('ImprimirRefProveedor', TypeInfo(Boolean), ImprimirRefProveedor, []);
+ __Message.Read('VerObservaciones', TypeInfo(Boolean), VerObservaciones, []);
+ __Message.Read('VerIncidencias', TypeInfo(Boolean), VerIncidencias, []);
- lResult := (__Instance as IsrvAlbaranesProveedor).GenerarInformeEnPDF(ListaID, ImprimirPrecio, ImprimirRefProveedor);
+ lResult := (__Instance as IsrvAlbaranesProveedor).GenerarInformeEnPDF(ListaID, ImprimirPrecio, ImprimirRefProveedor, VerObservaciones, VerIncidencias);
__Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvAlbaranesProveedor', 'GenerarInformeEnPDFResponse');
__Message.Write('Result', TypeInfo(Binary), lResult, []);
@@ -3057,5 +3078,98 @@ begin
end;
end;
+{ TsrvFacturasProforma_Invoker }
+
+constructor TsrvFacturasProforma_Invoker.Create;
+begin
+ inherited Create;
+ FAbstract := False;
+end;
+
+procedure TsrvFacturasProforma_Invoker.Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+{ function GenerarInforme(const ListaID: TIntegerArray): Binary; }
+var
+ ListaID: FactuGES_Intf.TIntegerArray;
+ lResult: Binary;
+ __lObjectDisposer: TROObjectDisposer;
+begin
+ ListaID := nil;
+ lResult := nil;
+ try
+ __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
+
+ lResult := (__Instance as IsrvFacturasProforma).GenerarInforme(ListaID);
+
+ __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFacturasProforma', 'GenerarInformeResponse');
+ __Message.Write('Result', TypeInfo(Binary), lResult, []);
+ __Message.Finalize;
+ __Message.UnsetAttributes(__Transport);
+
+ finally
+ __lObjectDisposer := TROObjectDisposer.Create(__Instance);
+ try
+ __lObjectDisposer.Add(ListaID);
+ __lObjectDisposer.Add(lResult);
+ finally
+ __lObjectDisposer.Free();
+ end;
+ end;
+end;
+
+procedure TsrvFacturasProforma_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+{ function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; }
+var
+ ListaID: FactuGES_Intf.TIntegerArray;
+ lResult: Binary;
+ __lObjectDisposer: TROObjectDisposer;
+begin
+ ListaID := nil;
+ lResult := nil;
+ try
+ __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
+
+ lResult := (__Instance as IsrvFacturasProforma).GenerarInformeEnPDF(ListaID);
+
+ __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFacturasProforma', 'GenerarInformeEnPDFResponse');
+ __Message.Write('Result', TypeInfo(Binary), lResult, []);
+ __Message.Finalize;
+ __Message.UnsetAttributes(__Transport);
+
+ finally
+ __lObjectDisposer := TROObjectDisposer.Create(__Instance);
+ try
+ __lObjectDisposer.Add(ListaID);
+ __lObjectDisposer.Add(lResult);
+ finally
+ __lObjectDisposer.Free();
+ end;
+ end;
+end;
+
+procedure TsrvFacturasProforma_Invoker.Invoke_DarListaAnos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+{ function DarListaAnos: StringArray; }
+var
+ lResult: DataAbstract4_Intf.StringArray;
+ __lObjectDisposer: TROObjectDisposer;
+begin
+ lResult := nil;
+ try
+ lResult := (__Instance as IsrvFacturasProforma).DarListaAnos;
+
+ __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFacturasProforma', 'DarListaAnosResponse');
+ __Message.Write('Result', TypeInfo(DataAbstract4_Intf.StringArray), lResult, []);
+ __Message.Finalize;
+ __Message.UnsetAttributes(__Transport);
+
+ finally
+ __lObjectDisposer := TROObjectDisposer.Create(__Instance);
+ try
+ __lObjectDisposer.Add(lResult);
+ finally
+ __lObjectDisposer.Free();
+ end;
+ end;
+end;
+
initialization
end.
diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res
index 442cce8..fddd084 100644
Binary files a/Source/Servicios/RODLFile.res and b/Source/Servicios/RODLFile.res differ
diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES
index f9c046a..66d9b9e 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 f6d485d..dc2d407 100644
--- a/Source/Servidor/FactuGES_Server.dpr
+++ b/Source/Servidor/FactuGES_Server.dpr
@@ -94,8 +94,6 @@ uses
srvGestorDocumentos_Impl in '..\Modulos\Gestion de documentos\Servidor\srvGestorDocumentos_Impl.pas' {srvGestorDocumentos: TDataAbstractService},
schHistoricoMovimientosClient_Intf in '..\Modulos\Historico de movimientos\Model\schHistoricoMovimientosClient_Intf.pas',
schHistoricoMovimientosServer_Intf in '..\Modulos\Historico de movimientos\Model\schHistoricoMovimientosServer_Intf.pas',
- schUsuariosClient_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosClient_Intf.pas',
- schUsuariosServer_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosServer_Intf.pas',
srvGestorInformes_Impl in '..\Modulos\Gestor de informes\Servidor\srvGestorInformes_Impl.pas' {srvGestorInformes: TDataAbstractService},
schObrasClient_Intf in '..\Modulos\Obras\Model\schObrasClient_Intf.pas',
schObrasServer_Intf in '..\Modulos\Obras\Model\schObrasServer_Intf.pas',
@@ -105,8 +103,6 @@ uses
schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas',
uRptAlbaranesProveedor_Server in '..\Modulos\Albaranes de proveedor\Reports\uRptAlbaranesProveedor_Server.pas' {RptAlbaranesProveedor: TDataModule},
MidasSpeedFix in 'Utiles\MidasSpeedFix.pas',
- schEmpresasClient_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasClient_Intf.pas',
- schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas',
uBizAgentesServer in '..\Modulos\Contactos\Model\uBizAgentesServer.pas',
srvPedidosCliente_Impl in '..\Modulos\Pedidos de cliente\Servidor\srvPedidosCliente_Impl.pas' {srvPedidosCliente: TDataAbstractService},
uBizPedidosClienteServer in '..\Modulos\Pedidos de cliente\Model\uBizPedidosClienteServer.pas',
@@ -150,8 +146,6 @@ uses
srvInfMargenArticulo_Impl in '..\Modulos\Informe margen por articulo\Servidor\srvInfMargenArticulo_Impl.pas' {srvInfMargenArticulo: TDARemoteService},
schInventarioClient_Intf in '..\Modulos\Inventario\Model\schInventarioClient_Intf.pas',
schInventarioServer_Intf in '..\Modulos\Inventario\Model\schInventarioServer_Intf.pas',
- schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas',
- schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas',
schInfVentasArticuloClient_Intf in '..\Modulos\Informe ventas por articulo\Model\schInfVentasArticuloClient_Intf.pas',
schInfVentasArticuloServer_Intf in '..\Modulos\Informe ventas por articulo\Model\schInfVentasArticuloServer_Intf.pas',
schAlbaranesProveedorClient_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorClient_Intf.pas',
@@ -163,7 +157,17 @@ uses
schFacturasProveedorClient_Intf in '..\Modulos\Facturas de proveedor\Model\schFacturasProveedorClient_Intf.pas',
schFacturasProveedorServer_Intf in '..\Modulos\Facturas de proveedor\Model\schFacturasProveedorServer_Intf.pas',
schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas',
- schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas';
+ schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas',
+ schUsuariosClient_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosClient_Intf.pas',
+ schUsuariosServer_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosServer_Intf.pas',
+ schEmpresasClient_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasClient_Intf.pas',
+ schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas',
+ schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas',
+ schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas',
+ schFacturasProformaClient_Intf in '..\Modulos\Facturas proforma\Model\schFacturasProformaClient_Intf.pas',
+ schFacturasProformaServer_Intf in '..\Modulos\Facturas proforma\Model\schFacturasProformaServer_Intf.pas',
+ srvFacturasProforma_Impl in '..\Modulos\Facturas proforma\Servidor\srvFacturasProforma_Impl.pas' {srvFacturasProforma: TDataAbstractService},
+ uBizFacturasProformaServer in '..\Modulos\Facturas proforma\Model\uBizFacturasProformaServer.pas';
{$R *.res}
{$R ..\Servicios\RODLFile.res}
diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj
index c9f3497..f48ef68 100644
--- a/Source/Servidor/FactuGES_Server.dproj
+++ b/Source/Servidor/FactuGES_Server.dproj
@@ -1,407 +1,415 @@
-
+
-
- {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/standaloneTrueFalse4330FalseFalseFalseFalseFalse308212524.3.3.04.3.3.0jueves, 05 de septiembre de 2013 18:20
- ExpressPrinting System by Developer Express Inc.
- FactuGES_Server.dprFalse
-
-
-
-
- MainSource
-
-
-
-
-
-
- TDARemoteService
-
-
-
- TDataModule
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
- TDataModule
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
- TDataModule
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
- TDARemoteService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
- TDataModule
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
- TDARemoteService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
- TDataModule
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
- TDataModule
-
-
-
- TDataModule
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TFrame
-
-
-
- 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/standaloneTrueFalse4330FalseFalseFalseFalseFalse308212524.3.3.04.3.3.0jueves, 05 de septiembre de 2013 18:20
+
+ ExpressPrinting System by Developer Express Inc.
+ FactuGES_Server.dprFalse
+
+
+
+
+ MainSource
+
+
+
+
+
+
+ TDARemoteService
+
+
+
+ TDataModule
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+ TDataModule
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+ TDataModule
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+ TDARemoteService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+ TDataModule
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+ TDARemoteService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+ TDataModule
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+ TDataModule
+
+
+
+ TDataModule
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TForm
+
+
+
+ TFrame
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+