diff --git a/Build/Build.fbp5 b/Build/Build.fbp5
index a1be0ebb..14cbe849 100644
--- a/Build/Build.fbp5
+++ b/Build/Build.fbp5
@@ -11051,6 +11051,409 @@ Comments=
+
@@ -15650,7 +16053,7 @@ Comments=
1000
False
-
+
0
@@ -15661,12 +16064,12 @@ Comments=
True
0
1252
- 11
+ 12
Release
False
-
+
- False
+ True
True
False
@@ -15674,7 +16077,7 @@ Comments=
False
False
False
- False
+ True
True
False
False
@@ -15684,15 +16087,15 @@ Comments=
False
False
False
- 3081
+ 3082
- 0
+ 1
0
0
False
0
-
+
True
0
@@ -15705,18 +16108,18 @@ Comments=
False
False
False
- []
+ [usPackages,usCompiler,usLinker,usVersionInfo]
False
False
@@ -15724,23 +16127,20 @@ Comments=
False
False
False
- True
+ False
True
True
False
False
%package_path%
-
+
False
%modules_dcp_path%
- True
+ False
- True
+ False
False
True
@@ -15754,7 +16154,7 @@ Comments=
True
%library_path%
0
- True
+ False
0
1048576
16384
@@ -15766,7 +16166,7 @@ Comments=
False
fa8
- True
+ False
False
True
@@ -17111,6 +17511,262 @@ Comments=
True
+
+
+
+ 0
+
+ True
+ False
+ False
+ True
+ True
+ 0
+ 1252
+ 12
+ Release
+ False
+
+
+ True
+ True
+
+ False
+
+ False
+ False
+ False
+ True
+ True
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ 3082
+
+ 1
+
+ 0
+ 0
+ False
+ 0
+
+
+ True
+ 0
+
+
+ rcBorland
+ 1000
+
+ False
+ False
+ False
+ False
+ [usPackages,usCompiler,usLinker,usVersionInfo]
+ False
+ False
+
+
+
+ False
+ False
+ False
+ False
+ True
+ True
+ False
+ False
+ %package_path%
+
+
+
+ False
+ %modules_dcp_path%
+ False
+
+ False
+
+ False
+ True
+ False
+ False
+ True
+ 4194304
+ False
+ False
+ False
+ True
+ %library_path%
+ 0
+ False
+ 3
+ 1048576
+ 16384
+
+ True
+ True
+ %output_path%
+ False
+
+ False
+ fa8
+ False
+ False
+
+ True
+ True
+ False
+ False
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+ False
+ True
+
+
+
+
+
+ 0
+
+ True
+ False
+ False
+ True
+ True
+ 0
+ 1252
+ 12
+ Release
+ False
+
+
+ True
+ True
+
+ False
+
+ False
+ False
+ False
+ True
+ True
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ False
+ 3082
+
+ 1
+
+ 0
+ 0
+ False
+ 0
+
+
+ True
+ 0
+
+
+ rcBorland
+ 1000
+
+ False
+ False
+ False
+ False
+ [usPackages,usCompiler,usLinker,usVersionInfo]
+ False
+ False
+
+
+
+ False
+ False
+ False
+ False
+ True
+ True
+ False
+ False
+ %package_path%
+
+
+
+ False
+ %modules_dcp_path%
+ False
+
+ False
+
+ False
+ True
+ False
+ False
+ True
+ 4194304
+ False
+ False
+ False
+ True
+ %library_path%
+ 0
+ False
+ 3
+ 1048576
+ 16384
+
+ True
+ True
+ %output_path%
+ False
+
+ False
+ fa8
+ False
+ False
+
+ True
+ True
+ False
+ False
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+ False
+ True
+
+
diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql
index 5b70fcf3..e9b04e5f 100644
--- a/Database/scripts/factuges.sql
+++ b/Database/scripts/factuges.sql
@@ -235,6 +235,12 @@ SET GENERATOR GEN_PERMISOS_ID TO 1;
CREATE GENERATOR GEN_PRESUPUESTOS_CLI_DETALLE_ID;
SET GENERATOR GEN_PRESUPUESTOS_CLI_DETALLE_ID TO 1;
+CREATE GENERATOR GEN_CONTRATOS_CLI_ID;
+SET GENERATOR GEN_CONTRATOS_CLI_ID TO 1;
+
+CREATE GENERATOR GEN_CONTRATOS_CLI_DETALLE_ID;
+SET GENERATOR GEN_CONTRATOS_CLI_DETALLE_ID TO 1;
+
CREATE GENERATOR GEN_PRESUPUESTOS_CLI_ID;
SET GENERATOR GEN_PRESUPUESTOS_CLI_ID TO 1;
@@ -1216,6 +1222,18 @@ CREATE TABLE PRESUPUESTOS_CLIENTE_CAPITULOS (
CONCEPTO TIPO_CONCEPTO
);
+CREATE TABLE PRESUPUESTOS_VALORES (
+ ID TIPO_ID NOT NULL,
+ ID_PROPIEDAD TIPO_ID,
+ DESCRIPCION TIPO_CONCEPTO
+);
+
+CREATE TABLE PRESUPUESTOS_PROPIEDADES (
+ ID TIPO_ID NOT NULL,
+ DESCRIPCION VARCHAR(50),
+ ID_PADRE TIPO_ID
+);
+
CREATE TABLE PRESUPUESTOS_CLIENTE (
ID TIPO_ID NOT NULL,
ID_EMPRESA TIPO_ID,
@@ -1271,6 +1289,63 @@ CREATE TABLE PRESUPUESTOS_CLIENTE_DETALLES (
FECHA_MODIFICACION TIMESTAMP
);
+CREATE TABLE CONTRATOS_CLIENTE (
+ ID TIPO_ID NOT NULL,
+ ID_EMPRESA TIPO_ID,
+ ID_CLIENTE TIPO_ID,
+ NIF_CIF VARCHAR(15),
+ NOMBRE VARCHAR(255),
+ CALLE VARCHAR(255),
+ POBLACION VARCHAR(255),
+ PROVINCIA VARCHAR(255),
+ CODIGO_POSTAL VARCHAR(10),
+ REFERENCIA VARCHAR(255),
+ FECHA_CONTRATO DATE,
+ SITUACION VARCHAR(255),
+ FORMA_PAGO TIPO_NOTAS,
+ PLAZO_ENTREGA TIPO_NOTAS,
+ OBSERVACIONES TIPO_NOTAS,
+ INCIDENCIAS TIPO_NOTAS,
+ INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL,
+ FECHA_ALTA TIMESTAMP,
+ FECHA_MODIFICACION TIMESTAMP,
+ USUARIO TIPO_USUARIO,
+ IMPORTE_NETO TIPO_IMPORTE,
+ IMPORTE_PORTE TIPO_IMPORTE,
+ DESCUENTO TIPO_PORCENTAJE,
+ IMPORTE_DESCUENTO TIPO_IMPORTE,
+ BASE_IMPONIBLE TIPO_IMPORTE,
+ IVA TIPO_PORCENTAJE,
+ IMPORTE_IVA TIPO_IMPORTE,
+ IMPORTE_TOTAL TIPO_IMPORTE,
+ ID_FORMA_PAGO TIPO_ID,
+ ID_TIENDA TIPO_ID,
+ ID_VENDEDOR TIPO_ID,
+ ID_TIPO_IVA TIPO_ID,
+ PERSONA_CONTACTO VARCHAR(255) COLLATE ES_ES,
+ RECARGO_EQUIVALENCIA TIPO_BOOLEANO,
+ RE TIPO_PORCENTAJE,
+ IMPORTE_RE TIPO_IMPORTE
+);
+
+CREATE TABLE CONTRATOS_CLIENTE_DETALLES (
+ ID TIPO_ID NOT NULL,
+ ID_CONTRATO TIPO_ID NOT NULL,
+ POSICION INTEGER,
+ TIPO_DETALLE VARCHAR(10),
+ ID_ARTICULO TIPO_ID,
+ TIPO_ARTICULO VARCHAR(2) COLLATE ES_ES,
+ CONCEPTO TIPO_CONCEPTO,
+ CANTIDAD INTEGER,
+ IMPORTE_UNIDAD TIPO_IMPORTE,
+ DESCUENTO TIPO_PORCENTAJE,
+ IMPORTE_PORTE TIPO_IMPORTE,
+ IMPORTE_TOTAL TIPO_IMPORTE,
+ VISIBLE TIPO_BOOLEANO,
+ FECHA_ALTA TIMESTAMP,
+ FECHA_MODIFICACION TIMESTAMP
+);
+
CREATE TABLE PROVEEDORES_DATOS (
ID_PROVEEDOR TIPO_ID NOT NULL,
DESCUENTO TIPO_PORCENTAJE,
@@ -3568,7 +3643,9 @@ CREATE VIEW V_PRESUPUESTOS_CLIENTE(
ID_TIENDA,
TIENDA,
ID_VENDEDOR,
- VENDEDOR)
+ VENDEDOR,
+ ID_CONTRATO,
+ REF_CONTRATO)
AS
SELECT
PRESUPUESTOS_CLIENTE.ID,
@@ -3607,13 +3684,107 @@ SELECT
PRESUPUESTOS_CLIENTE.id_tienda,
COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA,
PRESUPUESTOS_CLIENTE.ID_VENDEDOR,
- CONTACTOS2.NOMBRE AS VENDEDOR
+ CONTACTOS2.NOMBRE AS VENDEDOR,
+ PRESUPUESTOS_CLIENTE.ID_CONTRATO,
+ CONTRATOS_CLIENTE.REFERENCIA
FROM
PRESUPUESTOS_CLIENTE
LEFT OUTER JOIN CONTACTOS ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = CONTACTOS.ID)
LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (PRESUPUESTOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID)
LEFT OUTER JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = PRESUPUESTOS_CLIENTE.ID_TIENDA)
+ LEFT OUTER JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_CONTRATO)
+;
+
+/* View: V_CONTRATOS_CLIENTE */
+CREATE VIEW V_CONTRATOS_CLIENTE(
+ ID,
+ ID_EMPRESA,
+ ID_CLIENTE,
+ NOMBRE_CLIENTE,
+ NOMBRE_COMERCIAL_CLIENTE,
+ NIF_CIF,
+ NOMBRE,
+ CALLE,
+ POBLACION,
+ PROVINCIA,
+ CODIGO_POSTAL,
+ REFERENCIA,
+ FECHA_CONTRATO,
+ SITUACION,
+ FORMA_PAGO,
+ PLAZO_ENTREGA,
+ OBSERVACIONES,
+ INCIDENCIAS,
+ INCIDENCIAS_ACTIVAS,
+ FECHA_ALTA,
+ FECHA_MODIFICACION,
+ USUARIO,
+ RECARGO_EQUIVALENCIA,
+ RE,
+ IMPORTE_RE,
+ ID_TIPO_IVA,
+ IVA,
+ IMPORTE_IVA,
+ IMPORTE_NETO,
+ IMPORTE_PORTE,
+ ID_TIENDA,
+ TIENDA,
+ BASE_IMPONIBLE,
+ DESCUENTO,
+ IMPORTE_DESCUENTO,
+ IMPORTE_TOTAL,
+ ID_FORMA_PAGO,
+ ID_VENDEDOR,
+ VENDEDOR,
+ PERSONA_CONTACTO)
+AS
+SELECT CONTRATOS_CLIENTE.ID,
+ CONTRATOS_CLIENTE.ID_EMPRESA,
+ CONTRATOS_CLIENTE.ID_CLIENTE,
+ CONTACTOS.NOMBRE,
+ CLIENTES_DATOS.NOMBRE_COMERCIAL,
+ CONTRATOS_CLIENTE.NIF_CIF,
+ CONTRATOS_CLIENTE.NOMBRE,
+ CONTRATOS_CLIENTE.CALLE,
+ CONTRATOS_CLIENTE.POBLACION,
+ CONTRATOS_CLIENTE.PROVINCIA,
+ CONTRATOS_CLIENTE.CODIGO_POSTAL,
+ CONTRATOS_CLIENTE.REFERENCIA,
+ CONTRATOS_CLIENTE.FECHA_CONTRATO,
+ CONTRATOS_CLIENTE.SITUACION,
+ CONTRATOS_CLIENTE.FORMA_PAGO,
+ CONTRATOS_CLIENTE.PLAZO_ENTREGA,
+ CONTRATOS_CLIENTE.OBSERVACIONES,
+ CONTRATOS_CLIENTE.INCIDENCIAS,
+ CONTRATOS_CLIENTE.INCIDENCIAS_ACTIVAS,
+ CONTRATOS_CLIENTE.FECHA_ALTA,
+ CONTRATOS_CLIENTE.FECHA_MODIFICACION,
+ CONTRATOS_CLIENTE.USUARIO,
+ CONTRATOS_CLIENTE.RECARGO_EQUIVALENCIA,
+ CONTRATOS_CLIENTE.RE,
+ CONTRATOS_CLIENTE.IMPORTE_RE,
+ CONTRATOS_CLIENTE.ID_TIPO_IVA,
+ CONTRATOS_CLIENTE.IVA,
+ CONTRATOS_CLIENTE.IMPORTE_IVA,
+ CONTRATOS_CLIENTE.IMPORTE_NETO,
+ CONTRATOS_CLIENTE.IMPORTE_PORTE,
+ CONTRATOS_CLIENTE.ID_TIENDA,
+ COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA,
+ CONTRATOS_CLIENTE.BASE_IMPONIBLE,
+ CONTRATOS_CLIENTE.DESCUENTO,
+ CONTRATOS_CLIENTE.IMPORTE_DESCUENTO,
+ CONTRATOS_CLIENTE.IMPORTE_TOTAL,
+ CONTRATOS_CLIENTE.ID_FORMA_PAGO,
+ CONTRATOS_CLIENTE.ID_VENDEDOR,
+ CONTACTOS2.NOMBRE AS VENDEDOR,
+ CONTRATOS_CLIENTE.PERSONA_CONTACTO
+
+ FROM CONTRATOS_CLIENTE
+ LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = CONTRATOS_CLIENTE.ID_CLIENTE)
+ LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (CONTRATOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID)
+ INNER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = CONTRATOS_CLIENTE.ID_CLIENTE)
+ LEFT JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = CONTRATOS_CLIENTE.ID_TIENDA)
;
/* View: V_REC_CLI_COMPENSADOS */
@@ -4024,8 +4195,12 @@ ALTER TABLE POBLACIONES ADD CONSTRAINT PK_POBLACIONES PRIMARY KEY (ID);
ALTER TABLE PRESUPUESTOS_PROPIEDADES ADD CONSTRAINT PK_PRESUPUESTOS_PROPIEDADES PRIMARY KEY (ID);
ALTER TABLE PRESUPUESTOS_VALORES ADD CONSTRAINT PK_PRESUPUESTOS_VALORES PRIMARY KEY (ID);
ALTER TABLE PRESUPUESTOS_CLIENTE_CAPITULOS ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE_CAPITUL PRIMARY KEY (ID);
+ALTER TABLE PRESUPUESTOS_VALORES ADD CONSTRAINT PK_PRESUPUESTOS_VALORES PRIMARY KEY (ID);
+ALTER TABLE PRESUPUESTOS_PROPIEDADES ADD CONSTRAINT PK_PRESUPUESTOS_PROPIEDADES PRIMARY KEY (ID);
ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE PRIMARY KEY (ID);
ALTER TABLE PRESUPUESTOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE_DETALLE PRIMARY KEY (ID);
+ALTER TABLE CONTRATOS_CLIENTE ADD CONSTRAINT PK_CONTRATOS_CLIENTE PRIMARY KEY (ID);
+ALTER TABLE CONTRATOS_CLIENTE_DETALLES ADD CONSTRAINT PK_CONTRATOS_CLIENTE_DETALLE PRIMARY KEY (ID);
ALTER TABLE PROVEEDORES_DATOS ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR);
ALTER TABLE PROVEEDORES_GRUPOS ADD CONSTRAINT PK_PROVEEDORES_GRUPOS PRIMARY KEY (ID);
ALTER TABLE PROVINCIAS ADD CONSTRAINT PK_PROVINCIAS PRIMARY KEY (ID);
diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index 011a1446..9391e310 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -65,52 +65,52 @@
MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
TForm
diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj
index b7448f9b..ed03ab24 100644
--- a/Source/Cliente/FactuGES.dproj
+++ b/Source/Cliente/FactuGES.dproj
@@ -53,7 +53,7 @@
Delphi.Personality
VCLApplication
-FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGESFactuGES2.3.4.0FactuGES.dprFalse
+FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2350FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.5.0FactuGESFactuGES2.3.5.0FactuGES.dprFalse
diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc
index 3de6bcf7..43694b36 100644
--- a/Source/Cliente/FactuGES.rc
+++ b/Source/Cliente/FactuGES.rc
@@ -1,7 +1,7 @@
MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico"
1 VERSIONINFO
-FILEVERSION 2,3,4,0
-PRODUCTVERSION 2,3,4,0
+FILEVERSION 2,3,5,0
+PRODUCTVERSION 2,3,5,0
FILEFLAGSMASK 0x3FL
FILEFLAGS 0x00L
FILEOS 0x40004L
@@ -13,10 +13,10 @@ BEGIN
BLOCK "0C0A04E4"
BEGIN
VALUE "CompanyName", "Rodax Software S.L.\0"
- VALUE "FileVersion", "2.3.4.0\0"
+ VALUE "FileVersion", "2.3.5.0\0"
VALUE "InternalName", "FactuGES\0"
VALUE "ProductName", "FactuGES\0"
- VALUE "ProductVersion", "2.3.4.0\0"
+ VALUE "ProductVersion", "2.3.5.0\0"
END
END
BLOCK "VarFileInfo"
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index a9e78344..152ca943 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res
index 1641339f..8b251f31 100644
Binary files a/Source/GUIBase/GUIBase.res and b/Source/GUIBase/GUIBase.res differ
diff --git a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj
index 0d7836e9..4797022d 100644
--- a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj
+++ b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj
@@ -12,10 +12,14 @@
+
+
+
+
@@ -181,14 +185,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dpk b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dpk
index 9a999a8f..2ceedcc9 100644
Binary files a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dpk and b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dpk differ
diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj
index 1fb4e87c..eb51e770 100644
--- a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj
+++ b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj
@@ -49,16 +49,18 @@
MainSource
+
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc
index f54dc6f9..976a9ec2 100644
--- a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc
+++ b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Controller\ContratosCliente_controller.res */
-/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Controller\ContratosCliente_controller.drf */
+/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1CC.tmp */
diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.res b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.res
index 1641339f..8b251f31 100644
Binary files a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.res and b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.res differ
diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas
index 6ecea0bf..1ff4794f 100644
--- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas
+++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas
@@ -660,7 +660,7 @@ begin
if not Assigned(AContrato) then
raise Exception.Create ('Contrato no asignado: EsEliminable');
- Result := (AContrato.SITUACION = SITUACION_CONTRATO_TERMINADO);
+ Result := True;
end;
function TContratosClienteController.EsModificable(AContrato: IBizContratoCliente): Boolean;
@@ -668,8 +668,6 @@ begin
if not Assigned(AContrato) then
raise Exception.Create ('Contrato no asignado (EsModificable)');
- //Result := (AContrato.SITUACION = SITUACION_PRESUPUESTO_PENDIENTE);
-
Result := True;
end;
diff --git a/Source/Modulos/Contratos de cliente/Controller/uDetallesContratoClienteController.pas b/Source/Modulos/Contratos de cliente/Controller/uDetallesContratoClienteController.pas
index 9f900452..7c30931d 100644
--- a/Source/Modulos/Contratos de cliente/Controller/uDetallesContratoClienteController.pas
+++ b/Source/Modulos/Contratos de cliente/Controller/uDetallesContratoClienteController.pas
@@ -4,7 +4,7 @@ interface
uses
uDADataTable, uControllerDetallesBase, uControllerDetallesArticulos, uBizDetallesContratoCliente, uIDataModuleContratosCliente,
- uBizArticulos, uBizContactos;
+ uBizArticulos, uBizContactos, uBizDetallesPresupuestoCliente, uDetallesPresupuestoClienteController;
type
IDetallesContratoClienteController = interface(IControllerDetallesArticulos)
@@ -13,10 +13,16 @@ type
procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload;
procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable);
function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
+
+ function DarPropiedades: IBizPropiedades;
+ procedure AnadirCapitulo (const Tipo: String; ADetalles: IDAStronglyTypedDataTable);
end;
TDetallesContratoClienteController = class(TControllerDetallesArticulos, IDetallesContratoClienteController)
private
+ //Propiedad temporal hasta que exista el controlador independiente de propiedades y capitulos, valores, etc
+ FDetallesPresupuestoCliente: IDetallesPresupuestoClienteController;
+
FDataModule : IDataModuleContratosCliente;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
@@ -37,6 +43,9 @@ type
constructor Create; override;
destructor Destroy; override;
+ function DarPropiedades: IBizPropiedades;
+ procedure AnadirCapitulo (const Tipo: String; ADetalles: IDAStronglyTypedDataTable);
+
//Se sobre escribe para hacer otro recorrido y rellenar el tipo_articulo a todos los conceptos de los capitulos
procedure ValidarDetalles(ADataTable: IDAStronglyTypedDataTable); override;
@@ -96,6 +105,11 @@ begin
end;
end;
+procedure TDetallesContratoClienteController.AnadirCapitulo(const Tipo: String; ADetalles: IDAStronglyTypedDataTable);
+begin
+ FDetallesPresupuestoCliente.AnadirCapitulo(Tipo, ADetalles);
+end;
+
procedure TDetallesContratoClienteController.AsignarController;
begin
FArticulosController := TArticulosContratoClienteController.Create;
@@ -110,6 +124,7 @@ constructor TDetallesContratoClienteController.Create;
begin
inherited;
FDataModule := TDataModuleContratosCliente.Create(Nil);
+ FDetallesPresupuestoCliente:= TDetallesPresupuestoClienteController.Create;
end;
function TDetallesContratoClienteController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
@@ -117,6 +132,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
+function TDetallesContratoClienteController.DarPropiedades: IBizPropiedades;
+begin
+ Result := FDetallesPresupuestoCliente.DarPropiedades;
+end;
+
function TDetallesContratoClienteController.DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double;
begin
Result := DarTotalPorte(ADetalles);
@@ -131,6 +151,7 @@ end;
destructor TDetallesContratoClienteController.Destroy;
begin
FDataModule := Nil;
+ FDetallesPresupuestoCliente := Nil;
inherited;
end;
diff --git a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.drc b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.drc
index 312b10f5..d475429d 100644
--- a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.drc
+++ b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.drc
@@ -12,6 +12,6 @@ STRINGTABLE
BEGIN
END
-/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Data\uDataModuleContratosCliente.DFM */
+/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Data\uDataModuleContratosCliente.dfm */
/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Data\ContratosCliente_data.res */
-/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Data\ContratosCliente_data.drf */
+/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1CA.tmp */
diff --git a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.res b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.res
index 1641339f..8b251f31 100644
Binary files a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.res and b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.res differ
diff --git a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.drc b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.drc
index ff6e15e4..bcd8e0f0 100644
--- a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.drc
+++ b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.drc
@@ -13,4 +13,4 @@ BEGIN
END
/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Model\ContratosCliente_model.res */
-/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Model\ContratosCliente_model.drf */
+/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1C8.tmp */
diff --git a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.res b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.res
index 1641339f..8b251f31 100644
Binary files a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.res and b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.res differ
diff --git a/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas b/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas
index fdaeda97..623b2100 100644
--- a/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas
+++ b/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas
@@ -3,7 +3,7 @@ unit schContratosClienteClient_Intf;
interface
uses
- Classes, DB, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf;
+ Classes, DB, schBase_Intf, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf;
const
{ Data table rules ids
@@ -213,7 +213,7 @@ type
end;
{ TValoresDataTableRules }
- TValoresDataTableRules = class(TDADataTableRules, IValores)
+ TValoresDataTableRules = class(TIntfObjectDADataTableRules, IValores)
private
protected
{ Property getters and setters }
@@ -272,7 +272,7 @@ type
end;
{ TPropiedadesDataTableRules }
- TPropiedadesDataTableRules = class(TDADataTableRules, IPropiedades)
+ TPropiedadesDataTableRules = class(TIntfObjectDADataTableRules, IPropiedades)
private
protected
{ Property getters and setters }
@@ -319,7 +319,7 @@ type
end;
{ TListaAnosContratosDataTableRules }
- TListaAnosContratosDataTableRules = class(TDADataTableRules, IListaAnosContratos)
+ TListaAnosContratosDataTableRules = class(TIntfObjectDADataTableRules, IListaAnosContratos)
private
protected
{ Property getters and setters }
@@ -584,7 +584,7 @@ type
end;
{ TContratosClienteDataTableRules }
- TContratosClienteDataTableRules = class(TDADataTableRules, IContratosCliente)
+ TContratosClienteDataTableRules = class(TIntfObjectDADataTableRules, IContratosCliente)
private
f_FORMA_PAGO: IROStrings;
f_PLAZO_ENTREGA: IROStrings;
@@ -887,7 +887,7 @@ type
end;
{ TCapitulosPresupuestoDataTableRules }
- TCapitulosPresupuestoDataTableRules = class(TDADataTableRules, ICapitulosPresupuesto)
+ TCapitulosPresupuestoDataTableRules = class(TIntfObjectDADataTableRules, ICapitulosPresupuesto)
private
protected
{ Property getters and setters }
@@ -1036,7 +1036,7 @@ type
end;
{ TContratosCliente_DetallesDataTableRules }
- TContratosCliente_DetallesDataTableRules = class(TDADataTableRules, IContratosCliente_Detalles)
+ TContratosCliente_DetallesDataTableRules = class(TIntfObjectDADataTableRules, IContratosCliente_Detalles)
private
protected
{ Property getters and setters }
diff --git a/Source/Modulos/Contratos de cliente/Model/uBizContratosCliente.pas b/Source/Modulos/Contratos de cliente/Model/uBizContratosCliente.pas
index 125cb1a3..03a9f20b 100644
--- a/Source/Modulos/Contratos de cliente/Model/uBizContratosCliente.pas
+++ b/Source/Modulos/Contratos de cliente/Model/uBizContratosCliente.pas
@@ -303,23 +303,27 @@ begin
if not FCliente.DataTable.Active then
FCliente.DataTable.Active := True;
- if ID_Cliente <> FCliente.ID then
- begin
- bEnEdicion := (DataTable.State in dsEditModes);
- if not bEnEdicion then
- DataTable.Edit;
+ bEnEdicion := (DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ DataTable.Edit;
- ID_CLIENTE := FCliente.ID;
- if FCliente.ID_FORMA_PAGO > 0 then
- ID_FORMA_PAGO := FCliente.ID_FORMA_PAGO;
-// En acana la ficha de cliente no tiene descuento aplicado por defecto
+ ID_CLIENTE := FCliente.ID;
+ NOMBRE := FCliente.NOMBRE;
+ NIF_CIF := FCliente.NIF_CIF;
+
+ 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;
+
+// En acana la ficha de cliente no tiene descuento aplicado por defecto
// DESCUENTO := FCliente.DESCUENTO;
- DataTable.Post; //Muy importante ya que es necesario hacer un post de la cabecera antes de añadir detalles
- //si se quita el id de la cabecera y los detalles se desincroniza
- if bEnEdicion then
- DataTable.Edit;
- end;
+ DataTable.Post; //Muy importante ya que es necesario hacer un post de la cabecera antes de añadir detalles
+ //si se quita el id de la cabecera y los detalles se desincroniza
+ if bEnEdicion then
+ DataTable.Edit;
end;
end;
diff --git a/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.drc b/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.drc
index 28469921..c44c058d 100644
--- a/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.drc
+++ b/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.drc
@@ -14,4 +14,4 @@ END
/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Plugin\uPluginContratosCliente.dfm */
/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Plugin\ContratosCliente_plugin.res */
-/* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Plugin\ContratosCliente_plugin.drf */
+/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf212.tmp */
diff --git a/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.res b/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.res
index 1641339f..8b251f31 100644
Binary files a/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.res and b/Source/Modulos/Contratos de cliente/Plugin/ContratosCliente_plugin.res differ
diff --git a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dpk b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dpk
index 4350fb77..de8f9d6c 100644
--- a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dpk
+++ b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dpk
@@ -46,8 +46,7 @@ requires
dxLayoutControlD11,
dxComnD11,
ContratosCliente_model,
- ContratosCliente_controller,
- PresupuestosCliente_model;
+ ContratosCliente_controller;
contains
uContratosClienteViewRegister in 'uContratosClienteViewRegister.pas',
diff --git a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dproj b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dproj
index fb1297cd..373acab9 100644
--- a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dproj
+++ b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.dproj
@@ -49,26 +49,28 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118,9 +120,6 @@
TFrame
-
-
-
diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.rc b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.rc
new file mode 100644
index 00000000..153736af
--- /dev/null
+++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.rc
@@ -0,0 +1,22 @@
+1 VERSIONINFO
+FILEVERSION 1,0,0,0
+PRODUCTVERSION 1,0,0,0
+FILEFLAGSMASK 0x3FL
+FILEFLAGS 0x00L
+FILEOS 0x40004L
+FILETYPE 0x1L
+FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "0C0A04E4"
+ BEGIN
+ VALUE "FileVersion", "1.0.0.0\0"
+ VALUE "ProductVersion", "1.0.0.0\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0C0A, 1252
+ END
+END
diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.res b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.res
new file mode 100644
index 00000000..8b251f31
Binary files /dev/null and b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/PreCli_ConCli_relation.res differ
diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.dfm b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.dfm
new file mode 100644
index 00000000..f46fc94e
--- /dev/null
+++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.dfm
@@ -0,0 +1,313 @@
+object dmGenerarContratosCli: TdmGenerarContratosCli
+ OldCreateOrder = False
+ Height = 176
+ Width = 254
+ object JsListaContratosGenerados: TJSDialog
+ 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 = 'Se ha generado el contrato 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 = 'Ver el contrato'
+ Value = 100
+ Info.Strings = (
+ 'Mostrar el contrato que se ha creado')
+ end>
+ 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 = 72
+ Top = 16
+ end
+end
diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas
new file mode 100644
index 00000000..3010dcdb
--- /dev/null
+++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas
@@ -0,0 +1,274 @@
+unit uGenerarContratosCliUtils;
+
+interface
+
+uses
+ Windows, SysUtils, Classes, pngimage, JSDialog,
+ uBizPresupuestosCliente, uBizContratosCliente;
+
+type
+ TdmGenerarContratosCli = class(TDataModule)
+ JsListaContratosGenerados: TJSDialog;
+ end;
+
+ function GenerarContratoCli(const IDPresupuesto : Integer) : Boolean; overload;
+ function GenerarContratoCli(APresupuesto : IBizPresupuestoCliente; var AContrato: IBizContratoCliente) : Boolean; overload;
+// function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ uDialogUtils, uBizDetallesPresupuestoCliente, uBizDetallesContratoCliente,
+ uPresupuestosClienteController, uContratosClienteController, uClientesController,
+ uDetallesContratoClienteController, uControllerDetallesBase,
+ uBizContactos, schPresupuestosClienteClient_Intf,
+ schContratosClienteClient_Intf, uDireccionesContactoController,
+ uBizDireccionesContacto;
+
+var
+ dmGenerarContratosCli: TdmGenerarContratosCli;
+ APresupuestosClienteController : IPresupuestosClienteController;
+ AContratosClienteController : IContratosClienteController;
+ ADireccionesController : IDireccionesContactoController;
+ AClientesController : IClientesController;
+
+{ Métodos auxiliares }
+procedure CopiarPresupuestoAContrato(APresupuesto: IBizPresupuestoCliente;
+ AContrato : IBizContratoCliente);
+var
+ FDireccion: IBizDireccionesContacto;
+
+begin
+ if not Assigned(AContrato) then
+ raise Exception.Create ('Contrato no asignado (CopiarPresupuestoAContrato)');
+
+ if not Assigned(APresupuesto) then
+ raise Exception.Create ('Presupuesto no asignado (CopiarPresupuestoAContrato)');
+
+ if not APresupuesto.DataTable.Active then
+ APresupuesto.DataTable.Active := True;
+
+ // El contrato tiene que venir ya abierto y posicionado donde hay que copiar
+ AContrato.ID_CLIENTE := APresupuesto.ID_CLIENTE;
+ AContrato.NIF_CIF := APresupuesto.NIF_CIF;
+ AContrato.NOMBRE := APresupuesto.NOMBRE;
+
+ APresupuestosClienteController.RecuperarCliente(APresupuesto);
+ APresupuesto.Cliente.Open;
+ FDireccion := ADireccionesController.Nuevo;
+ if (not APresupuesto.ID_DIRECCIONIsNull) and
+ (ADireccionesController.Localizar(APresupuesto.Cliente.Direcciones, APresupuesto.ID_DIRECCION)) then
+ ADireccionesController.CopiarDireccion(APresupuesto.Cliente.Direcciones, FDireccion)
+ else
+ ADireccionesController.CopiarDireccionFiscal(APresupuesto.Cliente, FDireccion);
+
+ AContrato.CALLE := FDireccion.CALLE;
+ AContrato.POBLACION := FDireccion.POBLACION;
+ AContrato.PROVINCIA := FDireccion.PROVINCIA;
+ AContrato.CODIGO_POSTAL := FDireccion.CODIGO_POSTAL;
+ FDireccion := Nil;
+
+
+ AContrato.PERSONA_CONTACTO := APresupuesto.PERSONA_CONTACTO;
+ AContrato.DataTable.FieldByName(fld_ContratosClientePLAZO_ENTREGA).AsVariant := APresupuesto.DataTable.FieldByName(fld_PresupuestosClientePLAZO_ENTREGA).AsVariant;
+ AContrato.DataTable.FieldByName(fld_ContratosClienteOBSERVACIONES).AsVariant := APresupuesto.DataTable.FieldByName(fld_PresupuestosClienteOBSERVACIONES).AsVariant;
+ AContrato.IMPORTE_NETO := APresupuesto.IMPORTE_NETO;
+ AContrato.IMPORTE_PORTE := APresupuesto.IMPORTE_PORTE;
+ AContrato.DESCUENTO := APresupuesto.DESCUENTO;
+ AContrato.IMPORTE_DESCUENTO := APresupuesto.IMPORTE_DESCUENTO;
+ AContrato.BASE_IMPONIBLE := APresupuesto.BASE_IMPONIBLE;
+ AContrato.ID_TIPO_IVA := APresupuesto.ID_TIPO_IVA;
+ AContrato.IVA := APresupuesto.IVA;
+ AContrato.IMPORTE_IVA := APresupuesto.IMPORTE_IVA;
+ AContrato.IMPORTE_TOTAL := APresupuesto.IMPORTE_TOTAL;
+ AContrato.ID_TIENDA := APresupuesto.ID_TIENDA;
+ AContrato.ID_VENDEDOR := APresupuesto.ID_VENDEDOR;
+ AContrato.RECARGO_EQUIVALENCIA := APresupuesto.RECARGO_EQUIVALENCIA;
+ AContrato.RE := APresupuesto.RE;
+ AContrato.IMPORTE_RE := APresupuesto.IMPORTE_RE;
+end;
+
+procedure CopiarDetallesAContrato(
+ APresupuesto: IBizPresupuestoCliente;
+ AContrato: IBizContratoCliente;
+ AArticulos: IBizDetallesPresupuestoCliente);
+var
+ i : integer;
+ ADetalles : IBizDetallesContratoCliente;
+ ADetallesController : IDetallesContratoClienteController;
+begin
+ if not Assigned(AContrato) then
+ raise Exception.Create ('Contrato no asignado (CopiarDetallesAContrato)');
+
+ if not Assigned(APresupuesto) then
+ raise Exception.Create ('Presupuesto no asignado (CopiarDetallesAContrato)');
+
+ if not Assigned(AArticulos) then
+ raise Exception.Create ('Artículos no asignado (CopiarDetallesAContrato)');
+
+ if not AArticulos.DataTable.Active then
+ AArticulos.DataTable.Active := True;
+
+ // El contrato tiene que venir ya abierto y posicionado donde hay que copiar
+
+ ADetalles := AContrato.Detalles;
+ ADetallesController := TDetallesContratoClienteController.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(ADetalles);
+
+ AArticulos.DataTable.First;
+ for i := 0 to AArticulos.DataTable.RecordCount - 1 do
+ begin
+ ADetallesController.Add(ADetalles, AArticulos.TIPO_DETALLE);
+ ADetalles.Edit;
+ ADetalles.REFERENCIA := AArticulos.REFERENCIA;
+ ADetalles.ID_ARTICULO := AArticulos.ID_ARTICULO;
+ ADetalles.TIPO_ARTICULO := AArticulos.TIPO_ARTICULO;
+ ADetalles.CONCEPTO := AArticulos.CONCEPTO;
+ ADetalles.CANTIDAD := AArticulos.CANTIDAD;
+ ADetalles.IMPORTE_UNIDAD := AArticulos.IMPORTE_UNIDAD;
+ ADetalles.IMPORTE_TOTAL := AArticulos.IMPORTE_TOTAL;
+ ADetalles.DESCUENTO := AArticulos.DESCUENTO;
+ ADetalles.IMPORTE_PORTE := AArticulos.IMPORTE_PORTE;
+ ADetalles.VISIBLE := AArticulos.VISIBLE;
+ ADetalles.REFERENCIA_PROVEEDOR := AArticulos.REFERENCIA_PROVEEDOR;
+ ADetalles.Post;
+ AArticulos.Next;
+ end;
+ finally
+ ADetallesController.EndUpdate(ADetalles);
+ ADetallesController := NIL;
+ end;
+end;
+
+procedure Inicializar;
+begin
+ dmGenerarContratosCli := TdmGenerarContratosCli.Create(nil);
+ APresupuestosClienteController := TPresupuestosClienteController.Create;
+ AContratosClienteController := TContratosClienteController.Create;
+ AClientesController := TClientesController.Create;
+ ADireccionesController := TDireccionesContactoController.Create;
+end;
+
+procedure Finalizar;
+begin
+ FreeAndNIL(dmGenerarContratosCli);
+ APresupuestosClienteController := nil;
+ AContratosClienteController := nil;
+ AClientesController := nil;
+ ADireccionesController := nil;
+end;
+
+
+function GenerarContratoCli(const IDPresupuesto : Integer) : Boolean; overload;
+var
+ APresupuesto : IBizPresupuestoCliente;
+ AContrato : IBizContratoCliente;
+begin
+ Result := False;
+
+ try
+ if not Assigned(APresupuestosClienteController) then
+ Inicializar;
+
+ APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto);
+ if Assigned(APresupuesto) then
+ Result := GenerarContratoCli(APresupuesto, AContrato);
+ finally
+ if Assigned(APresupuestosClienteController) then
+ Finalizar;
+ end;
+end;
+
+function GenerarContratoCli(APresupuesto : IBizPresupuestoCliente; var AContrato: IBizContratoCliente) : Boolean; overload;
+var
+ ARespuesta : Integer;
+
+begin
+ Result := False;
+ AContrato := NIL;
+
+ if not Assigned(APresupuesto) then
+ raise Exception.Create('Presupuesto de cliente no asignado (GenerarContratoCli)');
+
+ if not APresupuesto.DataTable.Active then
+ APresupuesto.DataTable.Active := True;
+
+ if not Assigned(APresupuestosClienteController) then
+ Inicializar;
+
+ try
+ AContrato := AContratosClienteController.Nuevo;
+ CopiarPresupuestoAContrato(APresupuesto, AContrato);
+ CopiarDetallesAContrato(APresupuesto, AContrato, APresupuesto.Detalles);
+
+ //Sustituir por if de guardar
+ if AContratosClienteController.Guardar(AContrato) then
+ begin
+ // Asocio el contrato al presupuesto
+ APresupuesto.Edit;
+ APresupuesto.ID_CONTRATO := AContrato.ID;
+ APresupuesto.Post;
+ APresupuestosClienteController.Guardar(APresupuesto);
+
+ with dmGenerarContratosCli.JsListaContratosGenerados do
+ begin
+ Instruction.Text := 'Se ha generado el contrato';
+
+ Content.Clear;
+ Content.Add(Format('Se ha generado correctamente el contrato %s a partir del presupuesto de cliente' + #10#13, [AContrato.REFERENCIA]));
+ Execute;
+
+ ARespuesta := CustomButtonResult;
+ case ARespuesta of
+ 100 : begin
+ // Ver el albarán
+ AContratosClienteController.Ver(AContrato);
+ end;
+ 200 : // Continuar;
+ end;
+ end;
+ end;
+
+ Result := True;
+ finally
+ if Assigned(APresupuestosClienteController) then
+ Finalizar;
+ end;
+end;
+{
+function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; overload;
+var
+ APedido : IBizPedidoCliente;
+ AAlbaran : IBizAlbaranCliente;
+begin
+ Result := False;
+ IDAlbaran := -1;
+
+ AAlbaran := NIL;
+ try
+ if not Assigned(APedidosClienteController) then
+ Inicializar;
+
+ APedido := APedidosClienteController.ElegirPedidos(APedidosClienteController.BuscarPendientes,
+ 'Elija el pedido de cliente que desea utilizar para dar de alta el albarán de cliente.'
+ , False);
+
+ if Assigned(APedido) then
+ begin
+ Result := GenerarAlbaranCli(APedido, AAlbaran);
+ if Result then
+ IDAlbaran := AAlbaran.ID;
+ end;
+ finally
+ if Assigned(APedidosClienteController) then
+ Finalizar;
+ end;
+end;
+}
+end.
diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES
index 9ff5b3fd..2f97a9e0 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 11da9e51..b8bce3c4 100644
--- a/Source/Servidor/FactuGES_Server.dpr
+++ b/Source/Servidor/FactuGES_Server.dpr
@@ -130,13 +130,13 @@ uses
schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas',
schEmpresasClient_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasClient_Intf.pas',
schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas',
- schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas',
- schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas',
srvContratosCliente_Impl in '..\Modulos\Contratos de cliente\Servidor\srvContratosCliente_Impl.pas' {srvContratosCliente: TDataAbstractService},
uBizContratosClienteServer in '..\Modulos\Contratos de cliente\Model\uBizContratosClienteServer.pas',
uRptContratosCliente_Server in '..\Modulos\Contratos de cliente\Reports\uRptContratosCliente_Server.pas',
schContratosClienteClient_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteClient_Intf.pas',
- schContratosClienteServer_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteServer_Intf.pas';
+ schContratosClienteServer_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteServer_Intf.pas',
+ schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas',
+ schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas';
{$R *.res}
{$R ..\Servicios\RODLFile.res}
diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj
index 69bad58a..04a8bc9c 100644
--- a/Source/Servidor/FactuGES_Server.dproj
+++ b/Source/Servidor/FactuGES_Server.dproj
@@ -1,297 +1,293 @@
-
+
-
- {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
- FactuGES_Server.dpr
- Debug
- AnyCPU
- DCC32
- ..\..\Output\Debug\Servidor\FactuGES_Server.exe
-
-
- 7.0
- False
- False
- 0
- 3
- ..\..\Output\Release\Servidor
- RELEASE
-
-
- 7.0
- 3
- ..\..\Output\Debug\Servidor
- DEBUG;
- True
-
-
- Delphi.Personality
-
-
-FalseTrueFalseTrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGES (Servidor)2.3.4.0miércoles, 24 de junio de 2009 12:42
-
-
-
-
- FastQueryBuilder 1.03
- JVCL Unified Interbase Components
- FactuGES_Server.dpr
-
-
-
-
- MainSource
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
- TRORemoteDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDARemoteService
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TFrame
-
-
-
- TFrame
-
-
-
- TForm
-
-
-
- TFrame
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
+ FactuGES_Server.dpr
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\Output\Debug\Servidor\FactuGES_Server.exe
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ ..\..\Output\Release\Servidor
+ RELEASE
+
+
+ 7.0
+ 3
+ ..\..\Output\Debug\Servidor
+ DEBUG;
+ True
+
+
+ Delphi.Personality
+
+
+ FalseTrueFalseTrueFalse2350FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.5.0FactuGES (Servidor)2.3.5.0miércoles, 26 de agosto de 2009 12:14
+ FastQueryBuilder 1.03
+ JVCL Unified Interbase Components
+ FactuGES_Server.dpr
+
+
+
+
+ MainSource
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+ TRORemoteDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TForm
+
+
+
+ TFrame
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+